From 7bd3e8d27d710021f848ba0b9e9772443c65e597 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Thu, 2 Apr 2020 06:07:52 +0000 Subject: Thu Apr 2 06:07:52 UTC 2020 a/hwdata-0.334-noarch-1.txz: Upgraded. a/kernel-generic-5.4.29-x86_64-1.txz: Upgraded. a/kernel-huge-5.4.29-x86_64-1.txz: Upgraded. a/kernel-modules-5.4.29-x86_64-1.txz: Upgraded. a/pkgtools-15.0-noarch-32.txz: Rebuilt. installpkg: handle the uninstall script packaged as /install/douninst.sh. removepkg: add --skip-douninst option to skip running the uninstall script. Save removed douninst.sh in /var/log/pkgtools/removed_uninstall_scripts. ap/groff-1.22.4-x86_64-2.txz: Rebuilt. Fixed docdir. Thanks to Xsane. d/gcc-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-brig-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-g++-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-gdc-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-gfortran-9.3.0-x86_64-2.txz: Rebuilt. Patched a compiler bug concerning assumed-shape vs. deferred-shape arrays. Thanks to Lockywolf. d/gcc-gnat-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-go-9.3.0-x86_64-2.txz: Rebuilt. d/gcc-objc-9.3.0-x86_64-2.txz: Rebuilt. d/kernel-headers-5.4.29-x86-1.txz: Upgraded. d/ruby-2.7.1-x86_64-1.txz: Upgraded. This update fixes security issues: Unsafe Object Creation Vulnerability in JSON (Additional fix). Heap exposure vulnerability in the socket library. For more information, see: https://www.ruby-lang.org/en/news/2020/03/19/json-dos-cve-2020-10663/ https://www.ruby-lang.org/en/news/2020/03/31/heap-exposure-in-socket-cve-2020-10933/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10663 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10933 (* Security fix *) k/kernel-source-5.4.29-noarch-1.txz: Upgraded. l/graphite2-1.3.14-x86_64-1.txz: Upgraded. l/librsvg-2.48.2-x86_64-1.txz: Upgraded. l/utf8proc-2.5.0-x86_64-1.txz: Upgraded. x/libva-2.7.0-x86_64-1.txz: Upgraded. x/libva-utils-2.7.1-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt. --- source/a/pkgtools/manpages/removepkg.8 | 10 ++++++++++ source/a/pkgtools/pkgtools.SlackBuild | 2 +- source/a/pkgtools/scripts/installpkg | 18 ++++++++++++++---- source/a/pkgtools/scripts/removepkg | 22 +++++++++++++++------- 4 files changed, 40 insertions(+), 12 deletions(-) (limited to 'source/a/pkgtools') diff --git a/source/a/pkgtools/manpages/removepkg.8 b/source/a/pkgtools/manpages/removepkg.8 index 58a88ce60..f9b1b9322 100644 --- a/source/a/pkgtools/manpages/removepkg.8 +++ b/source/a/pkgtools/manpages/removepkg.8 @@ -28,6 +28,9 @@ removepkg \- remove Slackware packages. .B \--preserve ] [ +.B \--skip-douninst +] +[ .B \--terse ] [ @@ -81,6 +84,10 @@ is removed. If present, the uninstall script resides in the /var/lib/pkgtools/do directory and has the same full name as the package (without the extension). For example, a package named foo-1.0-noarch-1.txz might contain an uninstall script named: /var/lib/pkgtools/douninst.sh/foo-1.0-noarch-1 +.LP +A package's uninstall script may either ship directly in /var/lib/pkgtools/douninst.sh/ as +the correctly-named file, or it may ship as /install/douninst.sh. In the latter case, it +will be renamed and placed in /var/lib/pkgtools/douninst.sh/ by installpkg. .SH OPTIONS .TP .B \--copy packagename @@ -96,6 +103,9 @@ required_list). Mostly useful for debugging purposes. If specified, the complete package subtree is reconstructed in /var/lib/pkgtools/setup/tmp/preserved_packages/packagename. .TP +.B \--skip-douninst +Skip running the the uninstall script. +.TP .B \--terse Remove the package displaying only a single description line to stdout. .TP diff --git a/source/a/pkgtools/pkgtools.SlackBuild b/source/a/pkgtools/pkgtools.SlackBuild index 373151219..fd7ca0a67 100755 --- a/source/a/pkgtools/pkgtools.SlackBuild +++ b/source/a/pkgtools/pkgtools.SlackBuild @@ -30,7 +30,7 @@ PKGNAM=pkgtools # *** UPDATE THESE WITH EACH BUILD: VERSION=15.0 ARCH=${ARCH:-noarch} -BUILD=${BUILD:-31} +BUILD=${BUILD:-32} # If the variable PRINT_PACKAGE_NAME is set, then this script will report what # the name of the created package would be, and then exit. This information diff --git a/source/a/pkgtools/scripts/installpkg b/source/a/pkgtools/scripts/installpkg index f334728c6..f19cf59c0 100644 --- a/source/a/pkgtools/scripts/installpkg +++ b/source/a/pkgtools/scripts/installpkg @@ -1,7 +1,7 @@ #!/bin/sh # 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 Patrick Volkerding, Sebeka, MN, USA +# Copyright 2007, 2009, 2011, 2017, 2018, 2019, 2020 Patrick Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -21,6 +21,11 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +# 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 +# in $ADM_DIR/packages/$shortname. +# # Fri Oct 4 06:04:39 UTC 2019 # Add support for --no-overwrite so that upgradepkg can be kind to SSDs. # @@ -281,7 +286,7 @@ ADM_DIR="$ROOT/var/lib/pkgtools" LOG_DIR="$ROOT/var/log/pkgtools" # If the directories don't exist, "initialize" the package database: -for PKGDBDIR in packages scripts setup ; do +for PKGDBDIR in douninst.sh packages scripts setup ; do if [ ! -d $ADM_DIR/$PKGDBDIR ]; then mkdir -p $ADM_DIR/$PKGDBDIR chmod 755 $ADM_DIR/$PKGDBDIR @@ -697,9 +702,14 @@ EOF cp $ROOT/$INSTDIR/doinst.sh $ADM_DIR/scripts/$shortname chmod 755 $ADM_DIR/scripts/$shortname fi - # /install/doinst.sh and /install/slack-* are reserved locations for the package system. + if [ -r $ROOT/$INSTDIR/douninst.sh ]; then + cp $ROOT/$INSTDIR/douninst.sh $ADM_DIR/douninst.sh/$shortname + chmod 755 $ADM_DIR/douninst.sh/$shortname + echo "$(echo $ADM_DIR | rev | cut -f 1-3 -d / | rev)/douninst.sh/$shortname" >> $ADM_DIR/packages/$shortname + fi + # /install/do*inst.sh and /install/slack-* are reserved locations for the package system. # Heh, not any more with a recent tar :-) - ( cd $ROOT/$INSTDIR ; rm -f doinst.sh slack-* 1> /dev/null 2>&1 ) + ( cd $ROOT/$INSTDIR ; rm -f do*inst.sh slack-* 1> /dev/null 2>&1 ) rmdir $ROOT/$INSTDIR 1> /dev/null 2>&1 fi # If we used a scan directory, get rid of it: diff --git a/source/a/pkgtools/scripts/removepkg b/source/a/pkgtools/scripts/removepkg index 0166a59bd..5a1c7dcdd 100644 --- a/source/a/pkgtools/scripts/removepkg +++ b/source/a/pkgtools/scripts/removepkg @@ -24,6 +24,10 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +# Wed Apr 1 22:14:46 UTC 2020 +# Add --skip-douninst option to skip running the uninstall script. +# Save removed uninstall scripts in /var/log/removed_uninstall_scripts. +# # Tue Mar 31 03:06:25 UTC 2020 # Support an uninstall script to be executed when the package is removed. # The script should be a standard sh script with the same name as the package @@ -252,7 +256,9 @@ delete_files() { preserve_file "$FILE" fi else - ! [ $TERSE ] && echo " --> $ROOT/$FILE no longer exists. Skipping." + if [ "$(echo $FILE | cut -b1-8)" != "install/" ]; then + ! [ $TERSE ] && echo " --> $ROOT/$FILE no longer exists. Skipping." + fi fi else preserve_dir "$FILE" @@ -337,9 +343,9 @@ remove_packages() { if [ ! "$WARN" = true ]; then echo "Removing package: $(basename $ADM_DIR/packages/$PKGNAME)" # If there's an uninstall script, save it: - if [ -r $ADM_DIR/douninst.sh/$PKGNAME ]; then + if [ -r $ADM_DIR/douninst.sh/$PKGNAME -a ! "$SKIP_DOUNINST" = "true" ]; then cp -a $ADM_DIR/douninst.sh/$PKGNAME $TMP/$PKGNAME - elif [ -r $ADM_DIR/douninst.sh/$(echo ${PKGNAME} | sed "s/-upgraded.*//") ]; then + elif [ -r $ADM_DIR/douninst.sh/$(echo ${PKGNAME} | sed "s/-upgraded.*//") -a ! "$SKIP_DOUNINST" = "true" ]; then cp -a $ADM_DIR/douninst.sh/$(echo ${PKGNAME} | sed "s/-upgraded.*//") $TMP/$PKGNAME else rm -f $TMP/$PKGNAME @@ -391,8 +397,8 @@ remove_packages() { if [ ! "$WARN" = "true" ]; then # We won't assume that anything in /var/log can be trusted to remain there, # so we'll remake the directories and symlinks first: - mkdir -p $LOG_DIR/removed_packages $LOG_DIR/removed_scripts - for symlink in removed_packages removed_scripts ; do + mkdir -p $LOG_DIR/removed_packages $LOG_DIR/removed_scripts $LOG_DIR/removed_uninstall_scripts + for symlink in removed_packages removed_scripts removed_uninstall_scripts ; do if [ ! -L $LOG_DIR/../$symlink ]; then rm -rf $LOG_DIR/../$symlink ( cd $LOG_DIR/.. ; ln -sf pkgtools/$symlink . ) @@ -406,7 +412,8 @@ remove_packages() { # If there is an uninstall script, run it here: if [ -r $TMP/$PKGNAME ]; then cd $ROOT/ ; sh $TMP/$PKGNAME - rm -f $TMP/$PKGNAME + # Move the uninstall script to $LOG_DIR/removed_uninstall_scripts: + mv $TMP/$PKGNAME $LOG_DIR/removed_uninstall_scripts fi # In the case where a library and symlink are removed but an earlier version # remains on the machine, this will link it up and save potential problems: @@ -423,7 +430,7 @@ remove_packages() { } if [ "$#" = "0" ]; then - echo "Usage: $(basename $0) [--copy] [--keep] [--preserve] [--terse] [--warn] packagename ..."; exit 1 + echo "Usage: $(basename $0) [--copy] [--keep] [--preserve] [--skip-douninst] [--terse] [--warn] packagename ..."; exit 1 fi while : ; do @@ -431,6 +438,7 @@ while : ; do -copy | --copy) WARN=true; PRESERVE=true; shift;; -keep | --keep) KEEP=true; shift;; -preserve | --preserve) PRESERVE=true; shift;; + -skip-douninst | --skip-douninst) SKIP_DOUNINST=true; shift;; -terse | --terse) TERSE=0; shift;; -warn | --warn) WARN=true; shift;; -* | --*) echo "Usage: $(basename $0) [-copy] [-keep] [-preserve] [-warn] packagename ..."; exit 1;; -- cgit v1.2.3