hooks/{pre,post}-install: fix 98-fixup-gir-path.

The libdir changes to use /usr/lib{32,64} instead of /usr/lib broke
cross builds for some packages that use gir, due to issues with copying
over symlinks. Since we haven't managed to track down the root cause for
the installation path, a symlink is a clean enough temporary fix. This
follows the style of the 00-libdir hooks.

Since pre-install runs for the main package and then each subpackage, it
should use PKGDESTDIR (not DESTDIR), which also enables a subpackage
that installs files during pkg_install to work cleanly.

As far as I can see, the previous hook was quite flawed. Since it was a
pre-install hook, the check for a directory would happen *before*
package installation (so nothing would happen). The only reason it did
anything was because it also ran as a step before a subpackage's
pkg_install (most GIR packages have a -devel subpackage), but used
DESTDIR instead of PKGDESTDIR, so it checked and affected the contents
of the main package. Then when the subpackage's pkg_install ran, the
files would have already been copied to the correct folders.

Closes #27437
This commit is contained in:
Érico Rolim 2021-01-19 11:25:39 -03:00 committed by Érico Nogueira Rolim
parent 930e5841e9
commit 4a41da0426
2 changed files with 13 additions and 4 deletions

View File

@ -0,0 +1,11 @@
# This hook removes the symlink necessary to fix the wrong install path of
# 'gir' files when cross building packages (see pre-install hook). It's a
# workaround and not a proper fix. Remove it once the root cause of the problem
# is fixed.
# Has to be a low number so it runs before remove-empty-dirs
hook() {
[ -z "$CROSS_BUILD" ] && return
rm -f "${PKGDESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr"
}

View File

@ -5,8 +5,6 @@
hook() { hook() {
[ -z "$CROSS_BUILD" ] && return [ -z "$CROSS_BUILD" ] && return
if [ -d "${DESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr" ]; then vmkdir usr/${XBPS_CROSS_TRIPLET}
cp -a "${DESTDIR}"/usr/{${XBPS_CROSS_TRIPLET}/usr/*,} ln -sf ".." "${PKGDESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr"
rm -rf "${DESTDIR}"/usr/${XBPS_CROSS_TRIPLET}/usr
fi
} }