summaryrefslogtreecommitdiffstats
path: root/source/a/pkgtools/scripts/installpkg
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2021-05-21 19:33:21 +0000
committer Eric Hameleers <alien@slackware.com>2021-05-22 08:59:53 +0200
commit345b47e0726d4221c4a2d5b745731ca6c10a0f69 (patch)
treeb2cb9a0ba72c1626306a92d0142829434cac2ed6 /source/a/pkgtools/scripts/installpkg
parent08abb060ab1ce8e9b334eb540481976590d56cd4 (diff)
downloadcurrent-345b47e0726d4221c4a2d5b745731ca6c10a0f69.tar.gz
current-345b47e0726d4221c4a2d5b745731ca6c10a0f69.tar.xz
Fri May 21 19:33:21 UTC 202120210521193321
a/exfatprogs-1.1.2-x86_64-1.txz: Upgraded. a/kmod-29-x86_64-1.txz: Upgraded. a/logrotate-3.18.1-x86_64-1.txz: Upgraded. a/pkgtools-15.0-noarch-41.txz: Rebuilt. installpkg, upgradepkg: skip the install script when doing upgradepkg's pre-install. In cases where the script operations are expensive this can nearly double the speed of upgrading a package. Thanks to Stuart Winter. ap/texinfo-6.7-x86_64-5.txz: Rebuilt. Recompiled against perl-5.34.0. ap/vim-8.2.2876-x86_64-1.txz: Upgraded. Compiled against perl-5.34.0. d/perl-5.34.0-x86_64-1.txz: Upgraded. d/sassc-3.6.2-x86_64-1.txz: Upgraded. d/subversion-1.14.1-x86_64-3.txz: Rebuilt. Recompiled against perl-5.34.0. l/libsass-3.6.5-x86_64-1.txz: Upgraded. l/libsigc++3-3.0.7-x86_64-1.txz: Upgraded. n/bind-9.16.16-x86_64-1.txz: Upgraded. n/epic5-2.1.4-x86_64-2.txz: Rebuilt. Recompiled against perl-5.34.0. n/irssi-1.2.3-x86_64-2.txz: Rebuilt. Recompiled against perl-5.34.0. n/libndp-1.8-x86_64-1.txz: Upgraded. n/net-snmp-5.9-x86_64-6.txz: Rebuilt. Recompiled against perl-5.34.0. n/ntp-4.2.8p15-x86_64-8.txz: Rebuilt. Recompiled against perl-5.34.0. n/openldap-2.4.58-x86_64-2.txz: Rebuilt. Recompiled against perl-5.34.0. x/mesa-21.1.1-x86_64-1.txz: Upgraded. xap/hexchat-2.14.3-x86_64-8.txz: Rebuilt. Recompiled against perl-5.34.0. xap/rxvt-unicode-9.26-x86_64-2.txz: Rebuilt. Recompiled against perl-5.34.0. xap/vim-gvim-8.2.2876-x86_64-1.txz: Upgraded. Compiled against perl-5.34.0.
Diffstat (limited to 'source/a/pkgtools/scripts/installpkg')
-rw-r--r--source/a/pkgtools/scripts/installpkg26
1 files changed, 25 insertions, 1 deletions
diff --git a/source/a/pkgtools/scripts/installpkg b/source/a/pkgtools/scripts/installpkg
index e7fa21c03..ee76cf134 100644
--- a/source/a/pkgtools/scripts/installpkg
+++ b/source/a/pkgtools/scripts/installpkg
@@ -1,7 +1,7 @@
#!/bin/bash
# Copyright 1994, 1998, 2000 Patrick Volkerding, Concord, CA, USA
# Copyright 2001, 2003 Slackware Linux, Inc., Concord, CA, USA
-# Copyright 2007, 2009, 2011, 2017, 2018, 2019, 2020 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2009, 2011, 2017, 2018, 2019, 2020, 2021 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,6 +21,17 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
+# Thu May 20 18:55:21 UTC 2021
+# Add support for the flag ALWAYS_RUN_INSTALL_SCRIPT in doinst.sh. If it
+# appears, then the install script will always be run, even in the pre-install
+# pass.
+#
+# Wed May 19 18:11:44 UTC 2021
+# Don't run the install script if this is a pre-install pass as indicated by
+# upgradepkg setting PRE_INSTALL_PASS="true". Some of the install scripts can
+# take a significant amount of time to process, and there aren't any known
+# cases where they actually need to be run twice.
+#
# Wed Apr 1 21:59:41 UTC 2020
# If the package contains /install/douninst.sh, copy the uninstall script to
# $ADM_DIR/douninst.sh/$shortname and add the filename to the package list
@@ -667,7 +678,20 @@ EOF
) 9> $INSTLOCKDIR/ldconfig.lock
fi
+ # If we see ALWAYS_RUN_INSTALL_SCRIPT in the install script, then we'll
+ # unset PRE_INSTALL_PASS to ensure that the install script will be run even
+ # in a pre-install pass. We haven't found any case yet where skipping the
+ # install script in the pre-install pass breaks a package upgrade, but we'll
+ # add the ability to not skip it so there's a workaround if any corner cases
+ # emerge. Sorry to violate YAGNI like this. ;-)
if [ -f $ROOT/$INSTDIR/doinst.sh ]; then
+ if grep -q ALWAYS_RUN_INSTALL_SCRIPT $ROOT/$INSTDIR/doinst.sh ; then
+ unset PRE_INSTALL_PASS
+ fi
+ fi
+
+ # Run the install script if one exists and this isn't a pre-install pass:
+ if [ -f $ROOT/$INSTDIR/doinst.sh -a ! "$PRE_INSTALL_PASS" = "true" ]; then
if [ "$MODE" = "install" ]; then
echo "Executing install script for $(basename $package)."
fi