diff --git a/common/xbps-src/libexec/xbps-src-doinstall.sh b/common/xbps-src/libexec/xbps-src-doinstall.sh index d5ace25bc7a..9d2d7812a49 100755 --- a/common/xbps-src/libexec/xbps-src-doinstall.sh +++ b/common/xbps-src/libexec/xbps-src-doinstall.sh @@ -24,9 +24,9 @@ for f in $XBPS_COMMONDIR/environment/install/*.sh; do source_file "$f" 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" +XBPS_INSTALL_DONE="$wrksrc/.xbps_${XBPS_CROSS_BUILD}_install_done" +XBPS_PRE_INSTALL_DONE="$wrksrc/.xbps_${XBPS_CROSS_BUILD}_pre_install_done" +XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_${XBPS_CROSS_BUILD}_post_install_done" cd $wrksrc || msg_error "$pkgver: cannot access to wrksrc [$wrksrc]\n" if [ -n "$build_wrksrc" ]; then @@ -76,21 +76,24 @@ 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 + XBPS_SUBPKG_INSTALL_DONE="$wrksrc/.xbps_${XBPS_CROSS_BUILD}_${PKGNAME}_install_done" + if [ ! -f $XBPS_SUBPKG_INSTALL_DONE ]; 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 + install -d $PKGDESTDIR + if declare -f pkg_install >/dev/null; then + export XBPS_PKGDESTDIR=1 + run_func pkg_install + fi + setup_pkg_depends $pkgname + run_pkg_hooks post-install + touch -f $XBPS_SUBPKG_INSTALL_DONE fi fi -setup_pkg_depends $pkgname -run_pkg_hooks post-install - exit 0 diff --git a/common/xbps-src/libexec/xbps-src-prepkg.sh b/common/xbps-src/libexec/xbps-src-prepkg.sh index 2061dd5e1eb..d5e657ae8cd 100755 --- a/common/xbps-src/libexec/xbps-src-prepkg.sh +++ b/common/xbps-src/libexec/xbps-src-prepkg.sh @@ -24,6 +24,13 @@ for f in $XBPS_COMMONDIR/environment/install/*.sh; do source_file "$f" done + +XBPS_PREPKG_DONE="$wrksrc/.xbps_${XBPS_CROSS_BUILD}_${PKGNAME}_prepkg_done" + +if [ -f $XBPS_PREPKG_DONE ]; then + exit 0 +fi + # If it's a subpkg execute the pkg_install() function. if [ "$sourcepkg" != "$PKGNAME" ]; then # Source all subpkg environment setup snippets. @@ -35,7 +42,7 @@ if [ "$sourcepkg" != "$PKGNAME" ]; then fi setup_pkg_depends $pkgname - run_pkg_hooks pre-pkg +touch -f $XBPS_PREPKG_DONE exit 0 diff --git a/common/xbps-src/shutils/pkgtarget.sh b/common/xbps-src/shutils/pkgtarget.sh index 790163ec12b..736a4c65130 100644 --- a/common/xbps-src/shutils/pkgtarget.sh +++ b/common/xbps-src/shutils/pkgtarget.sh @@ -177,10 +177,10 @@ remove_pkg() { msg_normal "$f: removing 32bit files from destdir...\n" rm -rf ${_destdir}/${f}-32bit-${version} fi - rm -f $wrksrc/.xbps_${f}_${cross}_pre_install_done - rm -f $wrksrc/.xbps_${f}_${cross}_install_done - rm -f $wrksrc/.xbps_${f}_${cross}_post_install_done - rm -f $wrksrc/.xbps_${f}_${cross}_pkg_done - rm -f $wrksrc/.xbps_${f}_${cross}_strip_done + rm -f $wrksrc/.xbps_${XBPS_CROSS_BUILD}_${f}_install_done + rm -f $wrksrc/.xbps_${XBPS_CROSS_BUILD}_${f}_prepkg_done done + rm -f $wrksrc/.xbps_${cross}_install_done + rm -f $wrksrc/.xbps_${cross}_pre_install_done + rm -f $wrksrc/.xbps_${cross}_post_install_done }