summaryrefslogtreecommitdiff
path: root/source/a/pkgtools/scripts/explodepkg
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2018-05-28 19:12:29 +0000
committerEric Hameleers <alien@slackware.com>2018-05-31 23:39:35 +0200
commit646a5c1cbfd95873950a87b5f75d52073a967023 (patch)
treeb8b8d2ab3b0d432ea69ad1a64d1c789649d65020 /source/a/pkgtools/scripts/explodepkg
parentd31c50870d0bee042ce660e445c9294a59a3a65b (diff)
downloadcurrent-646a5c1cbfd95873950a87b5f75d52073a967023.tar.gz
Mon May 28 19:12:29 UTC 201820180528191229
a/pkgtools-15.0-noarch-13.txz: Rebuilt. installpkg: default line length for --terselength is the number of columns. removepkg: added --terse mode. upgradepkg: default line length for --terselength is the number of columns. upgradepkg: accept -option in addition to --option. ap/vim-8.1.0026-x86_64-1.txz: Upgraded. d/bison-3.0.5-x86_64-1.txz: Upgraded. e/emacs-26.1-x86_64-1.txz: Upgraded. kde/kopete-4.14.3-x86_64-8.txz: Rebuilt. Recompiled against libidn-1.35. n/conntrack-tools-1.4.5-x86_64-1.txz: Upgraded. n/libnetfilter_conntrack-1.0.7-x86_64-1.txz: Upgraded. n/libnftnl-1.1.0-x86_64-1.txz: Upgraded. n/links-2.16-x86_64-2.txz: Rebuilt. Rebuilt to enable X driver for -g mode. n/lynx-2.8.9dev.19-x86_64-1.txz: Upgraded. n/nftables-0.8.5-x86_64-1.txz: Upgraded. n/p11-kit-0.23.11-x86_64-1.txz: Upgraded. n/ulogd-2.0.7-x86_64-1.txz: Upgraded. n/whois-5.3.1-x86_64-1.txz: Upgraded. xap/network-manager-applet-1.8.12-x86_64-1.txz: Upgraded. xap/vim-gvim-8.1.0026-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source/a/pkgtools/scripts/explodepkg')
-rw-r--r--source/a/pkgtools/scripts/explodepkg64
1 files changed, 38 insertions, 26 deletions
diff --git a/source/a/pkgtools/scripts/explodepkg b/source/a/pkgtools/scripts/explodepkg
index 110ebf06..e1f9b128 100644
--- a/source/a/pkgtools/scripts/explodepkg
+++ b/source/a/pkgtools/scripts/explodepkg
@@ -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 Patrick Volkerding, Sebeka, MN, USA
+# Copyright 2007, 2009, 2017, 2018 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,32 +21,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-TAR=tar-1.13
-$TAR --help 1> /dev/null 2> /dev/null
-if [ ! $? = 0 ]; then
- TAR=tar
-fi
-if [ ! "`LC_MESSAGES=C $TAR --version`" = "tar (GNU tar) 1.13
-
-Copyright (C) 1988, 92,93,94,95,96,97,98, 1999 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-Written by John Gilmore and Jay Fenlason." ]; then
- echo "WARNING: pkgtools are unstable with tar > 1.13."
- echo " You should provide a \"tar-1.13\" in your \$PATH."
- sleep 5
-fi
-
if [ $# = 0 ]; then
cat << EOF
Usage: explodepkg package_name [package_name2, ...]
Explodes a Slackware compatible software package
-(or any tar+{gzip,bzip2,lzma,xz archive) in the current directory.
+(or any tar+{gzip,bzip2,lz,xz archive) in the current directory.
Equivalent to (for each package listed):
- ( umask 000 ; cat package_name | COMPRESSOR -dc | tar xvf package_name )
+ ( umask 000 ; cat package_name | COMPRESSOR -dc | tar xpvf package_name )
Note: This should only be used for debugging or examining packages, not for
installing them. It doesn't execute installation scripts or update the package
@@ -55,6 +38,10 @@ indexes in /var/log/packages and /var/log/scripts.
EOF
fi
+# Set maximum number of threads to use. By default, this will be the number
+# of CPU threads:
+THREADS="$(nproc)"
+
# Main loop:
for PKG in $* ; do
echo "Exploding package $PKG in current directory:"
@@ -69,25 +56,50 @@ for PKG in $* ; do
packagecompression=gzip
;;
'tbz' )
- packagecompression=bzip2
+ if which lbzip2 1> /dev/null 2> /dev/null ; then
+ packagecompression=lbzip2
+ else
+ packagecompression=bzip2
+ fi
;;
'bz2' )
- packagecompression=bzip2
+ if which lbzip2 1> /dev/null 2> /dev/null ; then
+ packagecompression=lbzip2
+ else
+ packagecompression=bzip2
+ fi
;;
'tlz' )
- packagecompression=lzma
+ if which plzip 1> /dev/null 2> /dev/null ; then
+ packagecompression="plzip --threads=${THREADS}"
+ elif which lzip 1> /dev/null 2> /dev/null ; then
+ packagecompression=lzip
+ else
+ echo "ERROR: lzip compression utility not found in \$PATH."
+ exit 3
+ fi
+ ;;
+ 'lz' )
+ if which plzip 1> /dev/null 2> /dev/null ; then
+ packagecompression="plzip --threads=${THREADS}"
+ elif which lzip 1> /dev/null 2> /dev/null ; then
+ packagecompression=lzip
+ else
+ echo "ERROR: lzip compression utility not found in \$PATH."
+ exit 3
+ fi
;;
'lzma' )
packagecompression=lzma
;;
'txz' )
- packagecompression=xz
+ packagecompression="xz --threads=${THREADS}"
;;
'xz' )
- packagecompression=xz
+ packagecompression="xz --threads=${THREADS}"
;;
esac
- ( umask 000 ; cat $PKG | $packagecompression -dc | $TAR xvf - 2> /dev/null )
+ ( umask 000 ; cat $PKG | $packagecompression -dc | tar --xattrs --xattrs-include='*' --keep-directory-symlink -xpvf - 2> /dev/null )
if [ -r install/doinst.sh ]; then
echo
echo "An installation script was detected in ./install/doinst.sh, but"