summaryrefslogtreecommitdiff
path: root/testing/source/pkgtools/scripts/makepkg
diff options
context:
space:
mode:
Diffstat (limited to 'testing/source/pkgtools/scripts/makepkg')
-rw-r--r--testing/source/pkgtools/scripts/makepkg452
1 files changed, 0 insertions, 452 deletions
diff --git a/testing/source/pkgtools/scripts/makepkg b/testing/source/pkgtools/scripts/makepkg
deleted file mode 100644
index f9241cb9..00000000
--- a/testing/source/pkgtools/scripts/makepkg
+++ /dev/null
@@ -1,452 +0,0 @@
-#!/bin/sh
-# Copyright 1994, 1998, 2008 Patrick Volkerding, Moorhead, Minnesota USA
-# Copyright 2003 Slackware Linux, Inc. Concord, CA USA
-# Copyright 2009, 2015, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Mon May 21 18:31:20 UTC 2018
-# Add --compress option, usually used to change the preset compression level
-# or block size.
-#
-# Tue Feb 13 00:46:12 UTC 2018
-# Use recent tar, and support storing POSIX ACLs and extended attributes.
-#
-# Tue Dec 12 21:55:59 UTC 2017
-# If possible, use multiple compression threads.
-#
-# Wed Sep 23 18:36:43 UTC 2015
-# Support spaces in file/directory names. <alphageek>
-#
-# Sun Apr 5 21:23:26 CDT 2009
-# Support .tgz, .tbz, .tlz, and .txz packages. <volkerdi>
-#
-# Fri Nov 26 13:53:36 GMT 2004
-# Patched to chmod 755 the package's root directory if needed, then restore
-# previous permissions after the package has been created. <sw>
-#
-# Wed Mar 18 15:32:33 CST 1998
-# Patched to avoid possible symlink attacks in /tmp.
-
-CWD=$(pwd)
-
-umask 022
-
-make_install_script() {
- TAB="$(echo -e "\t")"
- COUNT=1
- while :; do
- LINE="$(sed -n "$COUNT p" $1)"
- if [ "$LINE" = "" ]; then
- break
- fi
- LINKGOESIN="$(echo "$LINE" | cut -f 1 -d "$TAB")"
- LINKGOESIN="$(dirname "$LINKGOESIN")"
- LINKNAMEIS="$(echo "$LINE" | cut -f 1 -d "$TAB")"
- LINKNAMEIS="$(basename "$LINKNAMEIS")"
- LINKPOINTSTO="$(echo "$LINE" | cut -f 2 -d "$TAB")"
- echo "( cd $LINKGOESIN ; rm -rf $LINKNAMEIS )"
- echo "( cd $LINKGOESIN ; ln -sf $LINKPOINTSTO $LINKNAMEIS )"
- COUNT=$(expr $COUNT + 1)
- done
-}
-
-usage() {
- cat << EOF
-
-Usage: makepkg package_name.tgz
- (or: package_name.tbz, package_name.tlz, package_name.txz)
-
-Makes a Slackware compatible package containing the contents of the current
-and all subdirectories. If symbolic links exist, they will be removed and
-an installation script will be made to recreate them later. This script will
-be called "install/doinst.sh". You may add any of your own ash-compatible
-shell scripts to this file and rebuild the package if you wish.
-
-options: -l, --linkadd y|n (moves symlinks into doinst.sh: recommended)
- -p, --prepend (prepend rather than append symlinks to an existing
- doinst.sh. Useful to link libraries needed by programs in
- the doinst.sh script)
- -c, --chown y|n (resets all permissions to root:root 755 - not
- generally recommended)
- --threads <number> For xz/plzip compressed packages, set the max
- number of threads to be used for compression. Only has an
- effect on large packages. For plzip, the default is equal to
- the number of CPU threads available on the machine. For xz,
- the default is equal to 2 (due to commonly occuring memory
- related failures when using many threads with multi-threaded
- xz compression).
- --compress <option> Supply a custom option to the compressor.
- This will be used in place of the default, which is: -9
- --acls Support storing POSIX ACLs in the package. The resulting
- package will not be compatible with pkgtools version < 15.0.
- --xattrs Support storing extended attributes in the package. The
- resulting package will not be compatible with pkgtools
- version < 15.0.
-
-If these options are not set, makepkg will prompt if appropriate.
-EOF
-}
-
-TMP=/tmp # This can be a hole, but I'm going to be careful about file
- # creation in there, so don't panic. :^)
-
-# Set maximum number of threads to use. By default, this will be the number
-# of CPU threads:
-THREADS="$(nproc)"
-
-# Set default compression option.
-COMPRESS_OPTION="-9"
-
-# Parse options
-unset ACLS XATTRS
-while [ 0 ]; do
- if [ "$1" = "--linkadd" -o "$1" = "-l" ]; then
- if [ "$2" = "y" ]; then
- LINKADD=y
- elif [ "$2" = "n" ]; then
- LINKADD=n
- else
- usage
- exit 2
- fi
- shift 2
- elif [ "$1" = "--chown" -o "$1" = "-c" ]; then
- if [ "$2" = "y" ]; then
- CHOWN=y
- elif [ "$2" = "n" ]; then
- CHOWN=n
- else
- usage
- exit 2
- fi
- shift 2
- elif [ "$1" = "-p" -o "$1" = "--prepend" ]; then
- PREPEND=y
- shift 1
- elif [ "$1" = "-threads" -o "$1" = "--threads" ]; then
- THREADS="$2"
- shift 2
- # xz has memory issues with threads it seems, so we'll use two threads by
- # default unless we see that something else was user-selected:
- XZ_THREADS_FORCED=yes
- elif [ "$1" = "-compress" -o "$1" = "--compress" ]; then
- COMPRESS_OPTION="$2"
- shift 2
- elif [ "$1" = "--acls" ]; then
- ACLS="--acls"
- shift 1
- elif [ "$1" = "--xattrs" ]; then
- XATTRS="--xattrs"
- shift 1
- elif [ "$1" = "-h" -o "$1" = "-H" -o "$1" = "--help" -o $# = 0 ]; then
- usage
- exit 0
- else
- break
- fi
-done
-
-PACKAGE_NAME="$1"
-TARGET_NAME="$(dirname $PACKAGE_NAME)"
-PACKAGE_NAME="$(basename $PACKAGE_NAME)"
-
-# Identify package extension and compression type to use:
-if [ ! "$(basename $PACKAGE_NAME .tgz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tgz"
- COMPEXT="gz"
- COMPRESSOR="gzip ${COMPRESS_OPTION} -c"
- if ! which gzip 1> /dev/null 2> /dev/null ; then
- echo "ERROR: gzip compression utility not found in \$PATH."
- exit 3
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tar.gz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tar.gz"
- COMPRESSOR="gzip ${COMPRESS_OPTION} -c"
- if ! which gzip 1> /dev/null 2> /dev/null ; then
- echo "ERROR: gzip compression utility not found in \$PATH."
- exit 3
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tbz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tbz"
- if which lbzip2 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="lbzip2 ${COMPRESS_OPTION} -c"
- else
- if which bzip2 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="bzip2 ${COMPRESS_OPTION} -c"
- else
- echo "ERROR: bzip2 compression utility not found in \$PATH."
- exit 3
- fi
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tar.bz2)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tar.bz2"
- if which lbzip2 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="lbzip2 ${COMPRESS_OPTION} -c"
- else
- if which bzip2 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="bzip2 ${COMPRESS_OPTION} -c"
- else
- echo "ERROR: bzip2 compression utility not found in \$PATH."
- exit 3
- fi
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tlz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tlz"
- if which plzip 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="plzip ${COMPRESS_OPTION} --threads=${THREADS} -c"
- else
- echo "WARNING: plzip compression utility not found in \$PATH."
- echo "WARNING: package will not support multithreaded decompression."
- if which lzip 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="lzip ${COMPRESS_OPTION} -c"
- else
- echo "ERROR: lzip compression utility not found in \$PATH."
- exit 3
- fi
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tar.lz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tar.lz"
- if which plzip 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="plzip ${COMPRESS_OPTION} --threads=${THREADS} -c"
- else
- echo "WARNING: plzip compression utility not found in \$PATH."
- echo "WARNING: package will not support multithreaded decompression."
- if which lzip 1> /dev/null 2> /dev/null ; then
- COMPRESSOR="lzip ${COMPRESS_OPTION} -c"
- else
- echo "ERROR: lzip compression utility not found in \$PATH."
- exit 3
- fi
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tar.lzma)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tar.lzma"
- COMPRESSOR="lzma ${COMPRESS_OPTION} -c"
- if ! which lzma 1> /dev/null 2> /dev/null ; then
- echo "ERROR: lzma compression utility not found in \$PATH."
- exit 3
- fi
-elif [ ! "$(basename $PACKAGE_NAME .txz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="txz"
- if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
- # Two threads by default with xz due to memory failures on 32-bit. Not that
- # it matters much... if upstream ever gets around to implementing multi-
- # threaded decompression we'll revisit this default. :-D
- COMPRESSOR="xz ${COMPRESS_OPTION} --threads=2 -c"
- else
- COMPRESSOR="xz ${COMPRESS_OPTION} --threads=${THREADS} -c"
- fi
- if ! which xz 1> /dev/null 2> /dev/null ; then
- echo "ERROR: xz compression utility not found in \$PATH."
- exit 3
- fi
-elif [ ! "$(basename $PACKAGE_NAME .tar.xz)" = "$PACKAGE_NAME" ]; then
- EXTENSION="tar.xz"
- if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
- # Two threads by default with xz due to memory failures on 32-bit. Not that
- # it matters much... if upstream ever gets around to implementing multi-
- # threaded decompression we'll revisit this default. :-D
- COMPRESSOR="xz ${COMPRESS_OPTION} --threads=2 -c"
- else
- COMPRESSOR="xz ${COMPRESS_OPTION} --threads=${THREADS} -c"
- fi
- if ! which xz 1> /dev/null 2> /dev/null ; then
- echo "ERROR: xz compression utility not found in \$PATH."
- exit 3
- fi
-else
- EXTENSION="$(echo $PACKAGE_NAME | rev | cut -f 1 -d . | rev)"
- echo "ERROR: Package extension .$EXTENSION is not supported."
- exit 1
-fi
-
-TAR_NAME="$(basename $PACKAGE_NAME .$EXTENSION)"
-
-# Sanity check -- we can't make the package in the current directory:
-if [ "$CWD" = "$TARGET_NAME" -o "." = "$TARGET_NAME" ]; then
- echo "ERROR: Can't make output package in current directory."
- exit 2
-fi
-
-echo
-echo "Slackware package maker, version 3.14159265."
-echo
-echo "Searching for symbolic links:"
-# Get rid of possible pre-existing trouble:
-INST=$(mktemp $TMP/makepkg.XXXXXX)
-find . -type l -printf "%p\t%l\n" | sed 's,^\./,, ; s, ,\\ ,g' | tee $INST
-if [ ! "$(cat $INST)" = "" ]; then
- echo
- echo "Making symbolic link creation script:"
- make_install_script $INST | tee doinst.sh
-fi
-echo
-if [ ! "$(cat $INST)" = "" ]; then
- if [ -r install/doinst.sh ]; then
- echo "Unless your existing installation script already contains the code"
- echo "to create these links, you should append these lines to your existing"
- echo "install script. Now's your chance. :^)"
- echo
- echo "Would you like to add this stuff to the existing install script and"
- echo -n "remove the symbolic links ([y]es, [n]o)? "
- else
- echo "It is recommended that you make these lines your new installation script."
- echo
- echo "Would you like to make this stuff the install script for this package"
- echo -n "and remove the symbolic links ([y]es, [n]o)? "
- fi
- if [ ! "$LINKADD" ]; then
- read LINKADD;
- echo
- else
- echo $LINKADD
- echo
- fi
- if [ "$LINKADD" = "y" ]; then
- if [ -r install/doinst.sh ]; then
- UPDATE="t"
- if [ "$PREPEND" = "y" ]; then
- touch install/doinst.sh
- mv install/doinst.sh install/doinst.sh.shipped
- cat doinst.sh > install/doinst.sh
- echo "" >> install/doinst.sh
- cat install/doinst.sh.shipped >> install/doinst.sh
- rm -f install/doinst.sh.shipped
- else
- cat doinst.sh >> install/doinst.sh
- fi
- else
- mkdir -p install
- cat doinst.sh > install/doinst.sh
- fi
- echo
- echo "Removing symbolic links:"
- find . -type l -exec rm -v {} \;
- echo
- if [ "$UPDATE" = "t" ]; then
- if [ "$PREPEND" = "y" ]; then
- echo "Updating your ./install/doinst.sh (prepending symlinks)..."
- else
- echo "Updating your ./install/doinst.sh..."
- fi
- else
- echo "Creating your new ./install/doinst.sh..."
- fi
- fi
-else
- echo "No symbolic links were found, so we won't make an installation script."
- echo "You can make your own later in ./install/doinst.sh and rebuild the"
- echo "package if you like."
-fi
-rm -f doinst.sh $INST
-echo
-echo "This next step is optional - you can set the directories in your package"
-echo "to some sane permissions. If any of the directories in your package have"
-echo "special permissions, then DO NOT reset them here!"
-echo
-echo "Would you like to reset all directory permissions to 755 (drwxr-xr-x) and"
-echo -n "directory ownerships to root.root ([y]es, [n]o)? "
-if [ ! "$CHOWN" ]; then
- read CHOWN;
- echo
-else
- echo $CHOWN
- echo
-fi
-if [ "$CHOWN" = "y" ]; then
- find . -type d -exec chmod -v 755 {} \;
- find . -type d -exec chown -v root.root {} \;
-fi
-
-# Ensure that the 'root' of the package is chmod 755 because
-# the / of your filesystem will inherit these permissions.
-# If it's anything tighter than 755 then bad things happen such as users
-# not being able to login, users already logged in can no longer run commands
-# and so on.
-OLDROOTPERMS="$(find -name . -printf "%m\n")"
-if [ $OLDROOTPERMS -ne 755 ]; then
- echo "WARNING: $PWD is chmod $OLDROOTPERMS"
- echo " temporarily changing to chmod 755"
- chmod 755 .
-fi
-
-echo "Creating Slackware package: ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}"
-echo
-rm -f ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
-
-# HISTORICAL NOTE 2/2018:
-# In the interest of maximizing portability of this script, we'll use find
-# and sed to create a filelist compatible with tar-1.13, and then use a
-# more modern tar version to create the archive.
-#
-# Other (but possibly less portable) ways to achieve the same result:
-#
-# Use the tar --transform and --show-transformed-names options:
-# tar --transform "s,^\./\(.\),\1," --show-transformed-names $ACLS $XATTRS -cvf - . | $COMPRESSOR > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
-#
-# Use cpio:
-# find ./ | sed '2,$s,^\./,,' | cpio --quiet -ovHustar > ${TARGET_NAME}/${TAR_NAME}.tar
-
-# Create the package:
-find ./ | sed '2,$s,^\./,,' | tar --no-recursion $ACLS $XATTRS -T - -cvf - | $COMPRESSOR > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
-ERRCODE=$?
-if [ ! $ERRCODE = 0 ]; then
- echo "ERROR: $COMPRESSOR returned error code $ERRCODE -- makepkg failed."
- exit 1
-fi
-
-# Warn of zero-length files:
-find . -type f -size 0c | while read file ; do
- echo "WARNING: zero length file $(echo $file | cut -b3-)"
-done
-
-# Warn of corrupt or empty gzip files:
-find . -type f -name '*.gz' | while read file ; do
- if ! gzip -t $file 1> /dev/null 2> /dev/null ; then
- echo "WARNING: gzip test failed on $(echo $file | cut -b3-)"
- else
- if [ "$(gzip -l $file | tail -n 1 | tr -s ' ' | cut -f 3 -d ' ')" -eq 0 ]; then
- echo "WARNING: $(echo $file | cut -b3-) is an empty gzipped file"
- fi
- fi
-done
-
-# Some more handy warnings:
-if [ -d usr/share/man ]; then
- echo "WARNING: /usr/share/man (with possibly not gzipped man pages) detected"
-fi
-
-if [ -d usr/share/info ]; then
- echo "WARNING: /usr/share/info (with possibly not gzipped info pages) detected"
-fi
-
-if find . | grep site_perl 1> /dev/null ; then
- echo "WARNING: site_perl directory detected (this is fine for a local package build)"
-fi
-
-# Restore the old permissions if they previously weren't chmod 755
-if [ $OLDROOTPERMS -ne 755 ]; then
- echo
- echo "Restoring permissions of $PWD to chmod $OLDROOTPERMS"
- chmod $OLDROOTPERMS .
-fi
-
-echo
-echo "Slackware package ${TARGET_NAME}/${TAR_NAME}.${EXTENSION} created."
-echo