xbps-src: run pre-pkg hooks in the install to destdir target.
The prepare-32bit hook has been moved to the pre-pkg stage and now those hooks are executed as part of the install phase. That means that pre-pkg hooks are now independently run for the subpkgs and the sourcepkg after the install-destdir phase and pre/do/install hooks. As bonus, finally correct rdeps can now be collected for the 32bit pkgs and works for all them, without the need to sort the order of subpkgs!
This commit is contained in:
parent
94fd3b13b3
commit
3fdd0e180e
7 changed files with 132 additions and 137 deletions
|
@ -26,56 +26,78 @@ for f in $XBPS_COMMONDIR/environment/install/*.sh; do
|
|||
source_file "$f"
|
||||
done
|
||||
|
||||
XBPS_INSTALL_DONE="$wrksrc/.xbps_${pkgname}_${XBPS_CROSS_BUILD}_install_done"
|
||||
XBPS_PRE_INSTALL_DONE="$wrksrc/.xbps_${pkgname}_${XBPS_CROSS_BUILD}_pre_install_done"
|
||||
XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_${pkgname}_${XBPS_CROSS_BUILD}_post_install_done"
|
||||
XBPS_INSTALL_DONE="$wrksrc/.xbps_${sourcepkg}_${XBPS_CROSS_BUILD}_install_done"
|
||||
XBPS_PRE_INSTALL_DONE="$wrksrc/.xbps_${sourcepkg}_${XBPS_CROSS_BUILD}_pre_install_done"
|
||||
XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_${sourcepkg}_${XBPS_CROSS_BUILD}_post_install_done"
|
||||
|
||||
if [ -f $XBPS_INSTALL_DONE ]; then
|
||||
if [ ! -f $XBPS_INSTALL_DONE ]; then
|
||||
mkdir -p $XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/$pkgname-$version
|
||||
|
||||
cd $wrksrc || msg_error "$pkgver: cannot access to wrksrc [$wrksrc]\n"
|
||||
if [ -n "$build_wrksrc" ]; then
|
||||
cd $build_wrksrc || msg_error "$pkgver: cannot access to build_wrksrc [$build_wrksrc]\n"
|
||||
fi
|
||||
|
||||
run_pkg_hooks pre-install
|
||||
|
||||
# Run pre_install()
|
||||
if [ ! -f $XBPS_PRE_INSTALL_DONE ]; then
|
||||
if declare -f pre_install >/dev/null; then
|
||||
run_func pre_install
|
||||
touch -f $XBPS_PRE_INSTALL_DONE
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run do_install()
|
||||
if [ ! -f $XBPS_INSTALL_DONE ]; then
|
||||
cd $wrksrc
|
||||
[ -n "$build_wrksrc" ] && cd $build_wrksrc
|
||||
if declare -f do_install >/dev/null; then
|
||||
run_func do_install
|
||||
else
|
||||
if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
|
||||
msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
|
||||
fi
|
||||
. $XBPS_BUILDSTYLEDIR/${build_style}.sh
|
||||
run_func do_install
|
||||
fi
|
||||
touch -f $XBPS_INSTALL_DONE
|
||||
fi
|
||||
|
||||
# Run post_install()
|
||||
if [ ! -f $XBPS_POST_INSTALL_DONE ]; then
|
||||
cd $wrksrc
|
||||
[ -n "$build_wrksrc" ] && cd $build_wrksrc
|
||||
if declare -f post_install >/dev/null; then
|
||||
run_func post_install
|
||||
touch -f $XBPS_POST_INSTALL_DONE
|
||||
fi
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p $XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/$pkgname-$version
|
||||
# Always remove metadata files generated in a previous installation.
|
||||
for f in INSTALL REMOVE files.plist props.plist rdeps shlib-provides shlib-requires; do
|
||||
[ -f ${PKGDESTDIR}/${f} ] && rm -f ${PKGDESTDIR}/${f}
|
||||
done
|
||||
|
||||
cd $wrksrc || msg_error "$pkgver: cannot access to wrksrc [$wrksrc]\n"
|
||||
if [ -n "$build_wrksrc" ]; then
|
||||
cd $build_wrksrc \
|
||||
|| msg_error "$pkgver: cannot access to build_wrksrc [$build_wrksrc]\n"
|
||||
fi
|
||||
# If it's a subpkg execute the pkg_install() function.
|
||||
if [ "$sourcepkg" != "$PKGNAME" ]; then
|
||||
# Source all subpkg environment setup snippets.
|
||||
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
${PKGNAME}_package
|
||||
pkgname=$PKGNAME
|
||||
|
||||
run_pkg_hooks pre-install
|
||||
|
||||
# Run pre_install()
|
||||
if [ ! -f $XBPS_PRE_INSTALL_DONE ]; then
|
||||
if declare -f pre_install >/dev/null; then
|
||||
run_func pre_install
|
||||
touch -f $XBPS_PRE_INSTALL_DONE
|
||||
install -d $PKGDESTDIR
|
||||
if declare -f pkg_install >/dev/null; then
|
||||
export XBPS_PKGDESTDIR=1
|
||||
run_func pkg_install
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run do_install()
|
||||
if [ ! -f $XBPS_INSTALL_DONE ]; then
|
||||
cd $wrksrc
|
||||
[ -n "$build_wrksrc" ] && cd $build_wrksrc
|
||||
if declare -f do_install >/dev/null; then
|
||||
run_func do_install
|
||||
else
|
||||
if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
|
||||
msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
|
||||
fi
|
||||
. $XBPS_BUILDSTYLEDIR/${build_style}.sh
|
||||
run_func do_install
|
||||
fi
|
||||
touch -f $XBPS_INSTALL_DONE
|
||||
fi
|
||||
|
||||
# Run post_install()
|
||||
if [ ! -f $XBPS_POST_INSTALL_DONE ]; then
|
||||
cd $wrksrc
|
||||
[ -n "$build_wrksrc" ] && cd $build_wrksrc
|
||||
if declare -f post_install >/dev/null; then
|
||||
run_func post_install
|
||||
touch -f $XBPS_POST_INSTALL_DONE
|
||||
fi
|
||||
fi
|
||||
setup_pkg_depends $pkgname
|
||||
run_pkg_hooks post-install
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
#!//bin/bash
|
||||
#!/bin/bash
|
||||
#
|
||||
# vim: set ts=4 sw=4 et:
|
||||
#
|
||||
# Passed arguments:
|
||||
# $1 - pkgname [REQUIRED]
|
||||
# $2 - cross target [OPTIONAL]
|
||||
# $1 - pkgname [REQUIRED]
|
||||
# $2 - path to local repository [REQUIRED]
|
||||
# $3 - cross-target [OPTIONAL]
|
||||
|
||||
if [ $# -lt 1 -o $# -gt 2 ]; then
|
||||
echo "$(basename $0): invalid number of arguments: pkgname [cross-target]"
|
||||
if [ $# -lt 2 -o $# -gt 3 ]; then
|
||||
echo "$(basename $0): invalid number of arguments: pkgname repository [cross-target]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKGNAME="$1"
|
||||
XBPS_CROSS_BUILD="$2"
|
||||
XBPS_REPOSITORY="$2"
|
||||
XBPS_CROSS_BUILD="$3"
|
||||
|
||||
. $XBPS_SHUTILSDIR/common.sh
|
||||
|
||||
|
@ -22,43 +24,28 @@ done
|
|||
|
||||
setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
|
||||
|
||||
for f in $XBPS_COMMONDIR/environment/install/*.sh; do
|
||||
for f in $XBPS_COMMONDIR/environment/pkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
XBPS_PKG_DONE="$wrksrc/.xbps_${PKGNAME}_${XBPS_CROSS_BUILD}_pkg_done"
|
||||
|
||||
if [ -f $XBPS_PKG_DONE ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# Always remove metadata files generated in a previous installation.
|
||||
#
|
||||
for f in INSTALL REMOVE files.plist props.plist rdeps shlib-provides shlib-requires; do
|
||||
[ -f ${PKGDESTDIR}/${f} ] && rm -f ${PKGDESTDIR}/${f}
|
||||
done
|
||||
|
||||
# If it's a subpkg execute the pkg_install() function.
|
||||
if [ "$sourcepkg" != "$PKGNAME" ]; then
|
||||
# Source all subpkg environment setup snippets.
|
||||
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
${PKGNAME}_package
|
||||
pkgname=$PKGNAME
|
||||
|
||||
install -d $PKGDESTDIR
|
||||
if declare -f pkg_install >/dev/null; then
|
||||
export XBPS_PKGDESTDIR=1
|
||||
run_func pkg_install
|
||||
fi
|
||||
fi
|
||||
|
||||
setup_pkg_depends $pkgname
|
||||
if [ -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then
|
||||
export XBPS_ARCH=$(cat $XBPS_MASTERDIR/.xbps_chroot_init)
|
||||
fi
|
||||
|
||||
run_pkg_hooks post-install
|
||||
# Run do-pkg hooks.
|
||||
run_pkg_hooks "do-pkg"
|
||||
|
||||
touch -f $XBPS_PKG_DONE
|
||||
# Run post-pkg hooks.
|
||||
run_pkg_hooks post-pkg
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# vim: set ts=4 sw=4 et:
|
||||
#
|
||||
# Passed arguments:
|
||||
# $1 - pkgname [REQUIRED]
|
||||
# $2 - path to local repository [REQUIRED]
|
||||
# $3 - cross-target [OPTIONAL]
|
||||
|
||||
if [ $# -lt 2 -o $# -gt 3 ]; then
|
||||
echo "$(basename $0): invalid number of arguments: pkgname repository [cross-target]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKGNAME="$1"
|
||||
XBPS_REPOSITORY="$2"
|
||||
XBPS_CROSS_BUILD="$3"
|
||||
|
||||
. $XBPS_SHUTILSDIR/common.sh
|
||||
|
||||
for f in $XBPS_COMMONDIR/helpers/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
|
||||
|
||||
for f in $XBPS_COMMONDIR/environment/pkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
if [ "$sourcepkg" != "$PKGNAME" ]; then
|
||||
# Source all subpkg environment setup snippets.
|
||||
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
${PKGNAME}_package
|
||||
pkgname=$PKGNAME
|
||||
fi
|
||||
|
||||
if [ -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then
|
||||
export XBPS_ARCH=$(cat $XBPS_MASTERDIR/.xbps_chroot_init)
|
||||
fi
|
||||
|
||||
# Run pre-pkg hooks.
|
||||
run_pkg_hooks pre-pkg
|
||||
|
||||
# Run do-pkg hooks.
|
||||
run_pkg_hooks "do-pkg"
|
||||
|
||||
# Run post-pkg hooks.
|
||||
run_pkg_hooks post-pkg
|
||||
|
||||
exit 0
|
43
common/xbps-src/libexec/xbps-src-prepkg.sh
Executable file
43
common/xbps-src/libexec/xbps-src-prepkg.sh
Executable file
|
@ -0,0 +1,43 @@
|
|||
#!//bin/bash
|
||||
#
|
||||
# vim: set ts=4 sw=4 et:
|
||||
#
|
||||
# Passed arguments:
|
||||
# $1 - pkgname [REQUIRED]
|
||||
# $2 - cross target [OPTIONAL]
|
||||
|
||||
if [ $# -lt 1 -o $# -gt 2 ]; then
|
||||
echo "$(basename $0): invalid number of arguments: pkgname [cross-target]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PKGNAME="$1"
|
||||
XBPS_CROSS_BUILD="$2"
|
||||
|
||||
. $XBPS_SHUTILSDIR/common.sh
|
||||
|
||||
for f in $XBPS_COMMONDIR/helpers/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
|
||||
|
||||
for f in $XBPS_COMMONDIR/environment/install/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
|
||||
# If it's a subpkg execute the pkg_install() function.
|
||||
if [ "$sourcepkg" != "$PKGNAME" ]; then
|
||||
# Source all subpkg environment setup snippets.
|
||||
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
|
||||
source_file "$f"
|
||||
done
|
||||
${PKGNAME}_package
|
||||
pkgname=$PKGNAME
|
||||
fi
|
||||
|
||||
setup_pkg_depends $pkgname
|
||||
|
||||
run_pkg_hooks pre-pkg
|
||||
|
||||
exit 0
|
|
@ -195,13 +195,8 @@ get_subpkgs() {
|
|||
while [ $# -gt 0 ]; do
|
||||
list+=" ${3%_package}"; shift 3
|
||||
done
|
||||
# first all non development pkgs ...
|
||||
for f in ${list}; do
|
||||
[[ $f =~ '-devel' ]] || echo "$f"
|
||||
done
|
||||
# ... and then only development pkgs
|
||||
for f in ${list}; do
|
||||
[[ $f =~ '-devel' ]] && echo "$f"
|
||||
echo "$f"
|
||||
done
|
||||
}
|
||||
|
||||
|
|
|
@ -59,12 +59,14 @@ install_pkg() {
|
|||
$XBPS_LIBEXECDIR/xbps-src-dobuild.sh $sourcepkg $cross || exit 1
|
||||
[ "$target" = "build" ] && return 0
|
||||
|
||||
# Install sourcepkg into destdir.
|
||||
# Install pkgs into destdir.
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-doinstall.sh $sourcepkg $cross || exit 1
|
||||
|
||||
for subpkg in ${subpackages} ${sourcepkg}; do
|
||||
# Run subpkg pkg_install func.
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-dopkg.sh $subpkg $cross || exit 1
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-doinstall.sh $subpkg $cross || exit 1
|
||||
done
|
||||
for subpkg in ${subpackages} ${sourcepkg}; do
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-prepkg.sh $subpkg $cross || exit 1
|
||||
done
|
||||
|
||||
if [ "$XBPS_TARGET_PKG" = "$sourcepkg" ]; then
|
||||
|
@ -72,8 +74,8 @@ install_pkg() {
|
|||
fi
|
||||
|
||||
# If install went ok generate the binpkgs.
|
||||
for subpkg in ${sourcepkg} ${subpackages}; do
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-genpkg.sh $subpkg "$XBPS_REPOSITORY" "$cross" || exit 1
|
||||
for subpkg in ${subpackages} ${sourcepkg}; do
|
||||
$FAKEROOT_CMD $XBPS_LIBEXECDIR/xbps-src-dopkg.sh $subpkg "$XBPS_REPOSITORY" "$cross" || exit 1
|
||||
done
|
||||
|
||||
# pkg cleanup
|
||||
|
|
Loading…
Reference in a new issue