Files
Arch-Dev/NVIDIA-Linux-x86_64-535.161.07-grid/makeself.sh
2024-10-30 03:27:58 -04:00

1022 lines
30 KiB
Bash
Executable File

#! /bin/sh
#
# makeself 1.6.0-nv4
#
# $Id: makeself.sh,v 1.22 2002/04/03 08:10:25 megastep Exp $
#
# Utility to create self-extracting tar.gz archives.
# The resulting archive is a file holding the tar.gz archive with
# a small Shell script stub that uncompresses the archive to a temporary
# directory and then executes a given script from withing that directory.
#
# Makeself home page: http://www.megastep.org/makeself/
#
# Version history :
# - 1.0 : Initial public release
# - 1.1 : The archive can be passed parameters that will be passed on to
# the embedded script, thanks to John C. Quillan
# - 1.2 : Package distribution, bzip2 compression, more command line options,
# support for non-temporary archives. Ideas thanks to Francois Petitjean
# - 1.3 : More patches from Bjarni R. Einarsson and Francois Petitjean:
# Support for no compression (--nocomp), script is no longer mandatory,
# automatic launch in an xterm, optional verbose output, and -target
# archive option to indicate where to extract the files.
# - 1.4 : Improved UNIX compatibility (Francois Petitjean)
# Automatic integrity checking, support of LSM files (Francois Petitjean)
# - 1.5 : Many bugfixes. Optionally disable xterm spawning.
# - 1.5.1 : More bugfixes, added archive options -list and -check.
# - 1.5.2 : Cosmetic changes to inform the user of what's going on with big
# archives (Quake III demo)
# - 1.5.3 : Check for validity of the DISPLAY variable before launching an xterm.
# More verbosity in xterms and check for embedded command's return value.
# Bugfix for Debian 2.0 systems that have a different "print" command.
# - 1.5.4 : Many bugfixes. Print out a message if the extraction failed.
# - 1.5.5 : More bugfixes. Added support for SETUP_NOCHECK environment variable to
# bypass checksum verification of archives.
# - 1.6.0 : Compute MD5 checksums with the md5sum command (patch from Ryan Gordon)
# - 1.6.0-nv : Patched for use by NVIDIA.
# - 1.6.0-nv2 : Added support for xz compression and embedding a decompressor in
# the archive.
# - 1.6.0-nv3 : Added '--tar-files-from' argument.
# - 1.6.0-nv4 : Added '--compress-bin' argument.
# - 1.6.0-nv5 : Expand support for zstd compression
# - 1.6.0-nv6 : Prevent embedded decompressor from being used unintentionally.
#
# (C) 1998-2001 by Stéphane Peter <megastep@megastep.org>
# (C) 2012 NVIDIA Corporation
#
# This software is released under the terms of the GNU GPL
# Please read the license at http://www.gnu.org/copyleft/gpl.html
#
# Fail immediately on errors.
set -e
VERSION=1.6.0-nv5
COMPRESS=gzip
FAST_COMPRESS=
COMPRESS_BIN=
KEEP=n
ADD_THIS_KERNEL=n
APPLY_PATCH=n
CURRENT=n
TAR_ARGS=cf
PRINT_HELP=n
VERSION_STRING=0
PKG_VERSION=0
TARGET_OS="Unknown"
TARGET_ARCH="Unknown"
HELP_SCRIPT=
SILENT=n
TAR_DEREFERENCE_SYMLINKS=n
TAR_FILES_FROM=
THREADS=
EMBED_DECOMPRESS=
# parse the params portion of the commandline; this is done until we
# find an argument that names a directory
while [ ! -d $1 ]; do
case $1 in
"--version")
echo "Makeself version $VERSION"
exit 0
;;
"--bzip2")
COMPRESS=bzip2
;;
"--xz")
COMPRESS=xz
;;
"--nocomp")
COMPRESS=none
;;
"--zstd")
COMPRESS=zstd
;;
"--fastcomp")
FAST_COMPRESS=1
;;
"--threads")
shift 1
THREADS=$1
;;
"--compress-bin")
shift 1
COMPRESS_BIN=$1
;;
"--notemp")
KEEP=y
;;
"--current")
CURRENT=y
;;
"--follow")
TAR_ARGS=cvfh
;;
"--lsm")
shift 1
lsm_file=$1
[ -r $lsm_file ] || {
echo "can't read LSM file " $lsm_file ;
lsm_file="no_LSM";
}
;;
"--version-string")
shift 1
VERSION_STRING=$1
;;
"--pkg-version")
shift 1
PKG_VERSION=$1
;;
"--target-os")
shift 1
TARGET_OS=$1
;;
"--target-arch")
shift 1
TARGET_ARCH=$1
;;
"--pkg-history")
shift 1
pkg_history_file=$1
if [ ! -r $pkg_history_file ]; then
echo "can't read pkg-history file $pkg_history_file" ;
pkg_history_file=
fi
;;
"--help-script")
shift 1
HELP_SCRIPT=$1
;;
"--silent")
SILENT=y;
;;
"--tar-dereference-symlinks")
TAR_DEREFERENCE_SYMLINKS=y;
;;
"--tar-files-from")
shift 1
TAR_FILES_FROM=$1
;;
"--embed-decompress")
shift 1
EMBED_DECOMPRESS="$1"
;;
*)
echo "unrecognized option '$1'"
PRINT_HELP=y;
break
;;
esac
shift 1
done
# If a path to a compressor binary was not provided, try to find it in $PATH
if [ -z "${COMPRESS_BIN}" -a ${COMPRESS} != "none" ] ; then
if command -v ${COMPRESS} 2>&1 > /dev/null; then
COMPRESS_BIN=`command -v ${COMPRESS}`
else
echo "Unable to locate the ${COMPRESS} program in your \$PATH." >&2
exit 1
fi
fi
COMPRESS_CMD=
COMPRESS_LEVEL=
PARALLEL_COMPRESS_FLAGS=
COMPRESS_CMD_EXTRA_FLAGS=
UNCOMPRESS_CMD=
UNCOMPRESS_CMD_EXTRA_FLAGS=
if [ -n "$THREADS" ]; then
PARALLEL_COMPRESS_FLAGS="--threads=$THREADS"
case "$COMPRESS" in
gzip|xz|zstd)
;;
*)
echo "Parallel compression not supported with compression method $COMPRESS" >&2
exit 1
;;
esac
fi
case "$COMPRESS" in
gzip)
UNCOMPRESS_CMD_EXTRA_FLAGS="-c"
if [ -n "$THREADS" ]; then
if command -v pigz 2>&1 > /dev/null; then
COMPRESS_BIN=pigz
PARALLEL_COMPRESS_FLAGS="-p$THREADS"
else
echo "Parallel gzip compression requires pigz." >&2
echo "Unable to locate the pigz program in your \$PATH." >&2
exit 1
fi
fi
;;
xz)
# Disable integrity checks: xzminidec can't handle the headers
# they add to the xz archive.
COMPRESS_CMD_EXTRA_FLAGS="-C none"
;;
none)
COMPRESS_CMD=cat
UNCOMPRESS_CMD=cat
;;
zstd)
COMPRESS_CMD_EXTRA_FLAGS="--long"
if [ -n "$FAST_COMPRESS" ]; then
COMPRESS_LEVEL=9
else
COMPRESS_LEVEL=18
fi
;;
bzip2)
# defaults work: break out
;;
*)
echo "Unsupported compress method $COMPRESS"
exit 1
;;
esac
if [ -z "$COMPRESS_LEVEL" ]; then
if [ -n "$FAST_COMPRESS" ]; then
COMPRESS_LEVEL=1
elif [ "$COMPRESS" != "xz" ]; then
# Use the default compression level for xz, since increasing it
# increases memory usage on the decompress side. Otherwise, default
# to level 9 if a compression level hasn't already been set, as this
# is the highest compression level for most compression programs.
COMPRESS_LEVEL=9
fi
fi
COMPRESS_CMD_EXTRA_FLAGS="$COMPRESS_CMD_EXTRA_FLAGS $PARALLEL_COMPRESS_FLAGS"
[ -z "$COMPRESS_CMD" ] && COMPRESS_CMD="$COMPRESS_BIN -c $COMPRESS_CMD_EXTRA_FLAGS"
[ -z "$UNCOMPRESS_CMD" ] && UNCOMPRESS_CMD="$COMPRESS -d $UNCOMPRESS_CMD_EXTRA_FLAGS"
if [ "$SILENT" = "n" ]; then
TAR_ARGS="${TAR_ARGS}v"
fi
if [ "$TAR_DEREFERENCE_SYMLINKS" = "y" ]; then
TAR_ARGS="${TAR_ARGS}h"
fi
if [ "$KEEP" = "n" -a $# = 3 ]; then
echo "Making a temporary archive with no embedded command does not make sense!"
echo
shift 1 # To force the command usage
fi
COMPRESS_LEVEL_FLAG=
[ -n "$COMPRESS_LEVEL" ] && COMPRESS_LEVEL_FLAG="-$COMPRESS_LEVEL"
[ "$COMPRESS" != "none" ] && COMPRESS_CMD="$COMPRESS_CMD $COMPRESS_LEVEL_FLAG"
if [ \( "$COMPRESS" = "xz" -o "$COMPRESS" = "zstd" \) -a -z "$EMBED_DECOMPRESS" ]; then
echo "$COMPRESS is not installed on all target platforms, so --embed-decompress " >&2
echo "is required" >&2
exit 1
fi
if [ -n "$EMBED_DECOMPRESS" -a ! -f "$EMBED_DECOMPRESS" ]; then
echo "Can't find decompression program '$EMBED_DECOMPRESS' to embed" >&2
exit 1
fi
if [ $# -lt 3 -o $PRINT_HELP = "y" ]; then
echo "Usage: $0 [params] archive_dir file_name label [startup_script] [args]"
echo "params can be any of these :"
echo ""
echo " --version : Print out Makeself version number and exit"
echo " --bzip2 : Compress using bzip2 instead of gzip"
echo " --xz : Compress using xz instead of gzip"
echo " --nocomp : Do not compress the data"
echo " --compress-bin file"
echo " : Specify a path to the binary to use for compression"
echo " (but not decompression)"
echo " --notemp : The archive will create archive_dir in the"
echo " current directory and uncompress in ./archive_dir"
echo " --current : Used with --notemp, files will be extracted to the"
echo " current directory."
echo " --follow : Follow the symlinks in the archive"
echo " --lsm file : LSM file describing the package"
echo " --embed-decompress file"
echo " : Embed a decompression program in the archive"
echo " --tar-files-from file"
echo " : Pass the given file to tar(1) with '--files-from'"
echo " to define what files to include in the archive."
echo ""
echo "Do not forget to give a fully qualified startup script name"
echo "(i.e. with a ./ prefix if inside the archive)."
exit 1
fi
archdir=$1
archname=$2
label=$3
script=$4
# Infer the script to use to get help output, if it was not specified
[ "$HELP_SCRIPT" ] || HELP_SCRIPT=$archdir/$script
# We don't really want to create an absolute directory...
archdirname=`basename "$1"`
USIZE=`du -Lks --apparent-size $archdir | cut -f1`
DATE=`date`
# The following is the shell script stub code
echo '#! /bin/sh' > $archname
echo 'CRCsum=0000000000' >> $archname
echo 'MD5=00000000000000000000000000000000' >> $archname
echo skip=__SKIP__ >> $archname
echo skip_decompress=__SKIP_DECOMPRESS__ >> $archname
echo size_decompress=__SIZE_DECOMPRESS__ >> $archname
# echo lsm=\"$lsm_contents\" >> $archname
echo label=\"$label\" >> $archname
echo version_string=$VERSION_STRING >> $archname
echo pkg_version=$PKG_VERSION >> $archname
echo script=$script >> $archname
[ x"$4" = x ] || shift 1
echo targetdir="$archdirname" >>$archname
shift 3
echo scriptargs=\"$*\" >> $archname
echo "keep=$KEEP" >> $archname
echo "add_this_kernel=$ADD_THIS_KERNEL" >> $archname
echo "apply_patch=$APPLY_PATCH" >> $archname
echo "TMPROOT=\${TMPDIR:=/tmp}" >> $archname
echo "TARGET_OS=\"$TARGET_OS\"" >> $archname
echo "TARGET_ARCH=\"$TARGET_ARCH\"" >> $archname
# output a banner
cat <<- EODF >> $archname
#
# $label
# Generated by Makeself $VERSION
# Do not edit by hand.
# NVIDIA Driver Installation .run file
#
# If you were trying to download this file through a web browser, and
# instead are seeing this, please click your browser's back button,
# left click on the link, and select "Save as..." (or do whatever is
# appropriate for your web browser to download a file, rather than view
# it).
# print usage information
if [ "\$1" = "-help" -o "\$1" = "--help" -o "\$1" = "-h" ]; then
echo ""
echo "\$0 [options]"
echo ""
EODF
echo "This program will install the $label by unpacking the embedded tarball and executing the $script installation utility." \
| fmt -w 70 | awk '{print " echo \"" $0 "\"" }' >> $archname
echo " echo \"\"" >> $archname
echo "Below are the most common options; for a complete list use '--advanced-options'." \
| fmt -w 70 | awk '{print " echo \"" $0 "\"" }' >> $archname
cat <<- EODF >> $archname
echo ""
echo "--info"
echo " Print embedded info (title, default target directory) and exit."
echo ""
echo "--check"
echo " Check integrity of the archive and exit."
echo ""
echo "-x, --extract-only"
echo " Extract the contents of \$0, but do not"
echo " run 'nvidia-installer'."
echo ""
echo ""
EODF
echo "The following arguments will be passed on to the $script utility:" \
| fmt -w 70 | awk '{print " echo \"" $0 "\"" }' >> $archname
echo " echo \"\"" >> $archname
$HELP_SCRIPT --help-args-only \
| awk '{print " echo \"" $0 "\"" }' \
| sed -e 's/`/\\`/g' >> $archname
cat <<- EODF >> $archname
echo ""
exit 0;
fi
if [ "\$1" = "-A" -o "\$1" = "--advanced-options" ]; then
echo ""
echo "\$0 [options]"
echo ""
EODF
echo "This program will install the $label by unpacking the embedded tarball and executing the $script installation utility." \
| fmt -w 70 | awk '{print " echo \"" $0 "\"" }' >> $archname
cat <<- EODF >> $archname
echo ""
echo "--info"
echo " Print embedded info (title, default target directory) and exit."
echo ""
echo "--lsm"
echo " Print embedded lsm entry (or no LSM) and exit."
echo ""
echo "--pkg-history"
echo " Print the package history of this file and exit."
echo ""
echo "--list"
echo " Print the list of files in the archive and exit."
echo ""
echo "--check"
echo " Check integrity of the archive and exit."
echo ""
echo "-x, --extract-only"
echo " Extract the contents of \$0, but do not"
echo " run 'nvidia-installer'."
echo ""
echo "--add-this-kernel"
echo " Build a precompiled kernel interface for the currently running"
echo " kernel and repackage the .run file to include this newly built"
echo " precompiled kernel interface. The new .run file will be placed"
echo " in the current directory and the string \"-custom\" appended"
echo " to its name, unless already present, to distinguish it from the"
echo " original .run file."
echo ""
echo "--apply-patch [Patch]"
echo " Apply the patch 'Patch' to the kernel interface files included"
echo " in the .run file, remove any precompiled kernel interfaces"
echo " and then repackage the .run file. The new .run file will be"
echo " placed in the current directory and the string \"-custom\""
echo " appended to its name, unless already present, to distinguish it"
echo " from the original .run file."
echo ""
echo "--keep"
echo " Do not delete target directory when done."
echo ""
echo "--target [NewDirectory]"
echo " Extract contents in 'NewDirectory'"
echo ""
echo "--extract-decompress"
echo " Extract the embedded decompression program to stdout"
echo ""
echo ""
EODF
echo "The following arguments will be passed on to the $script utility:" \
| fmt -w 70 | awk '{print " echo \"" $0 "\"" }' >> $archname
echo " echo \"\"" >> $archname
echo " echo \"COMMON OPTIONS:\"" >> $archname
echo " echo \"\"" >> $archname
$HELP_SCRIPT --help-args-only \
| awk '{print " echo \"" $0 "\"" }' \
| sed -e 's/`/\\`/g' >> $archname
echo " echo \"\"" >> $archname
echo " echo \"ADVANCED OPTIONS:\"" >> $archname
echo " echo \"\"" >> $archname
$HELP_SCRIPT --advanced-options-args-only \
| awk '{print " echo \"" $0 "\"" }' \
| sed -e 's/`/\\`/g' >> $archname
cat <<- EODF >> $archname
echo ""
exit 0;
fi
if [ "\$1" = "-lsm" -o "\$1" = "--lsm" ]; then
cat << EOF_LSM
EODF
if [ -f "$lsm_file" ]; then
cat $lsm_file >> $archname
else
echo "no LSM" >> $archname
fi
cat <<- EOF >> $archname
EOF_LSM
exit 0;
fi
if [ "\$1" = "--pkg-history" ]; then
cat << EOF_PKG_HISTORY
EOF
if [ -f "$pkg_history_file" ]; then
cat $pkg_history_file >> $archname
fi
cat <<-EOF >> $archname
EOF_PKG_HISTORY
exit 0;
fi
if [ "\$1" = "--label" ]; then
echo "\$label";
exit 0;
fi
if [ "\$1" = "--version-string" ]; then
echo "\$version_string";
exit 0;
fi
if [ "\$1" = "--pkg-version" ]; then
echo "\$pkg_version";
exit 0;
fi
if [ "\$1" = "--target-os" ]; then
echo "\$TARGET_OS";
exit 0;
fi
if [ "\$1" = "--target-arch" ]; then
echo "\$TARGET_ARCH";
exit 0;
fi
if [ "\$1" = "--target-directory" ]; then
echo "\$targetdir";
exit 0;
fi
if [ "\$1" = "--script" ]; then
echo "\$script \$scriptargs"
exit 0
fi
if [ "\$1" = "--info" ]; then
echo
echo " Identification : \$label"
echo " Target directory : \$targetdir"
echo " Uncompressed size : $USIZE KB"
echo " Compression : $COMPRESS"
echo " Date of packaging : $DATE"
echo " Application run after extraction : \$script \$scriptargs"
echo
if [ x"\$keep" = xy ]; then
echo " The directory \$targetdir will not be removed after extraction."
else
echo " The directory \$targetdir will be removed after extraction."
fi
echo
exit 0;
fi
location="\`pwd\`"
EOF
decompressDir=""
if [ -n "$EMBED_DECOMPRESS" ]; then
cat <<-EOF >> $archname
catDecompress() {
tail -n +\${skip_decompress} \$0 | head -n \${size_decompress}
}
if ! command -v "$COMPRESS" > /dev/null 2>&1; then
decompressDir=\`mktemp -d "\$TMPDIR/makeself.XXXXXXXX" 2> /dev/null\`/
decompress="\${decompressDir}$COMPRESS"
(cd "\$location"; catDecompress) > "\$decompress"
chmod +x "\$decompress"
trap cleanupDecompress EXIT
fi
EOF
else
cat <<-EOF >> $archname
catDecompress() {
echo "No decompressor embedded in this archive" >&2
exit 1
}
EOF
fi
cat <<-EOF >> $archname
cleanupDecompress() {
if [ -d "\$decompressDir" ]; then
rm -r "\$decompressDir"
fi
decompressDir=""
}
if [ "\$1" = "--list" ]; then
echo "Target directory: \$targetdir"
tail -n +\$skip \$0 | "\${decompressDir}"$UNCOMPRESS_CMD | tar tvf - 2> /dev/null
exit 0;
fi
if [ "\$1" = "--extract-decompress" ]; then
catDecompress
exit 0
fi
if [ "\$1" = "--check" ]; then
sum1=\`tail -n +4 \$0 | cksum | awk '{print \$1}'\`
[ "\$sum1" != "\$CRCsum" ] && {
echo "Error in checksums \$sum1 \$CRCsum"
exit 2;
}
if [ \$MD5 != "00000000000000000000000000000000" ]; then
# space separated list of directories
[ x"\$GUESS_MD5_PATH" = "x" ] && GUESS_MD5_PATH="/usr/local/ssl/bin /usr/local/bin /usr/bin /bin"
MD5_PATH=""
for a in \$GUESS_MD5_PATH; do
if [ -x "\$a/md5sum" ]; then
MD5_PATH=\$a;
fi
done
if [ -x \$MD5_PATH/md5sum ]; then
md5sum=\`tail -n +4 \$0 | \$MD5_PATH/md5sum | cut -b-32\`;
[ \$md5sum != \$MD5 ] && {
echo "Error in md5 sums \$md5sum \$MD5"
exit 2
} || { echo "check sums and md5 sums are ok"; exit 0; }
fi
if [ ! -x \$MD5_PATH/md5sum ]; then
echo "an embedded md5 sum of the archive exists but no md5 program was found in \$GUESS_MD5_PATH"
echo "if you have md5 on your system, you should try :"
echo "env GUESS_MD5_PATH=\"FirstDirectory SecondDirectory ...\" \$0 -check"
fi
else
echo "check sums are OK ; echo \$0 does not contain embedded md5 sum" ;
fi
exit 0;
fi
run_script=y
keep=n
apply_patch=n
while [ "\$1" ]; do
case "\$1" in
"--extract-only"|"-x")
run_script=n;
keep=y;
;;
"--keep")
keep=y;
;;
"--target")
if [ "\$2" ]; then
targetdir="\$2";
keep=y;
shift;
else
echo "ERROR: --target: no target directory specified."
exit 1;
fi
;;
"--add-this-kernel")
add_this_kernel=y;
scriptargs="\$scriptargs \$1"
;;
"--tmpdir")
scriptargs="\$scriptargs \$1 \$2"
if [ "\$2" ]; then
TMPROOT="\$2";
shift;
else
echo "ERROR: --tmpdir: no temporary directory specified."
exit 1;
fi
;;
"--apply-patch")
if [ "\$2" ]; then
if [ "\`dirname \$2\`" != "." ]; then
patchfile="\$2";
else
patchfile="\`pwd\`/\$2"
fi
run_script=n;
apply_patch=y;
shift;
else
echo "ERROR: --apply-patch: no patch file specified."
exit 1;
fi
;;
*)
scriptargs="\$scriptargs \$1"
;;
esac
shift
done
EOF
# output code to check if tmp is executable
cat <<-EOF >> $archname
# Check that the tmp directory is executable
# Make path absolute if not already
if ! echo "\$TMPROOT" | grep -q "^/"; then
TMPROOT=\`pwd\`/"\$TMPROOT";
fi
if [ ! -d "\$TMPROOT" ]; then
mkdir -p "\$TMPROOT" || {
echo "Unable to create temp directory \$TMPROOT"
exit 1
}
fi
TMPDIR="\$TMPROOT"
TMPFILE=\`mktemp "\$TMPDIR/makeself.XXXXXXXX" 2> /dev/null\`
if [ "a\$TMPFILE" = "a" ]; then
echo "Unable to create temporary file in \$TMPDIR"
exit 1
fi
chmod +x "\$TMPFILE"
# Try to execute, see what happens
"\$TMPFILE" > /dev/null 2>&1 || {
echo "ERROR: Temporary directory \$TMPDIR is not executable - use the " \\
"--tmpdir option to specify a different one."
rm "\$TMPFILE"
exit 1;
}
rm "\$TMPFILE"
EOF
# output code to do a platform check
cat <<-EOF >> $archname
# Perform a platform check
LOCAL_OS=\`uname 2> /dev/null\`
LOCAL_ARCH=\`uname -m 2> /dev/null\`
[ "\$LOCAL_ARCH" = "i386" ] && LOCAL_ARCH="x86"
[ "\$LOCAL_ARCH" = "i486" ] && LOCAL_ARCH="x86"
[ "\$LOCAL_ARCH" = "i586" ] && LOCAL_ARCH="x86"
[ "\$LOCAL_ARCH" = "i686" ] && LOCAL_ARCH="x86"
if [ -z "\$LOCAL_OS" -o -z "\$LOCAL_ARCH" ]; then
echo "ERROR: missing/broken uname. Cannot perform platform check."
exit 1;
fi
if [ "\$LOCAL_ARCH" != "\$TARGET_ARCH" -o "\$LOCAL_OS" != "\$TARGET_OS" ]; then
if [ "\$run_script" = "y" ]; then
echo ""
echo "ERROR: this .run file is intended for the"
echo "\${TARGET_OS}-\${TARGET_ARCH} platform, but you appear to be"
echo "running on \${LOCAL_OS}-\${LOCAL_ARCH}. Aborting installation."
echo ""
exit 1;
fi
fi
EOF
if [ $CURRENT = "n" ]; then
cat <<-EOF >> $archname
if [ "\$keep" = "y" ]; then
echo "Creating directory \$targetdir"; tmpdir=\$targetdir;
else
workingdir="\$TMPROOT/selfgz\$\$"
tmpdir="\$workingdir/\$targetdir";
rm -rf \$tmpdir
fi
if [ -d "\$tmpdir" -o -f "\$tmpdir" ]; then
echo "The directory '\$tmpdir' already exists. Please either"
echo "move the existing directory out of the way, or specify a"
echo "different directory with the '--target' option."
exit 1
fi
mkdir -p \$tmpdir || {
echo "Unable to create the target directory '\$tmpdir'."
exit 1
}
EOF
else
cat <<-EOF >> $archname
tmpdir=.
EOF
fi
cat <<-EOF >> $archname
echo=echo; [ -x /usr/ucb/echo ] && echo=/usr/ucb/echo
if [ x\$SETUP_NOCHECK != x1 ]; then
\$echo -n "Verifying archive integrity... "
sum1=\`tail -n +4 \$0 | cksum | awk '{print \$1}'\`
[ \$sum1 != \$CRCsum ] && {
\$echo "Error in check sums \$sum1 \$CRCsum"
exit 2;
}
echo "OK"
fi
if [ \$MD5 != \"00000000000000000000000000000000\" ]; then
# space separated list of directories
[ x"\$GUESS_MD5_PATH" = "x" ] && GUESS_MD5_PATH="/usr/local/ssl/bin /usr/local/bin /usr/bin /bin"
MD5_PATH=""
for a in \$GUESS_MD5_PATH; do
if [ -x "\$a/md5sum" ]; then
MD5_PATH=\$a;
fi
done
if [ -x \$MD5_PATH/md5sum ]; then
md5sum=\`tail -n +4 \$0 | \$MD5_PATH/md5sum | cut -b-32\`;
[ \$md5sum != \$MD5 ] && {
\$echo "Error in md5 sums \$md5sum \$MD5"
exit 2;
}
fi
fi
UnTAR() {
tar xvf - 2> /dev/null || {
echo "Extraction failed." > /dev/tty; kill -15 \$$;
};
}
\$echo -n "Uncompressing \$label"
cd \$tmpdir ; res=3
[ "\$keep" = "y" ] || trap '\$echo "Signal caught, cleaning up" > /dev/tty; cd \$TMPROOT; rm -rf \$tmpdir; exit 15' 1 2 15
if (cd "\$location"; tail -n +\$skip \$0; ) | "\${decompressDir}"$UNCOMPRESS_CMD | UnTAR | (while read a; do \$echo -n "."; done; \$echo; ); then
chown -Rf \`id -u\`:\`id -g\` .
res=0;
if [ "\$script" -a "\$run_script" = "y" ]; then
\$script \$scriptargs \$*; res=\$?
fi
if [ "\$add_this_kernel" = "y" -a "\$res" = "0" ]; then
repackage_file=y;
fi
if [ "\$apply_patch" = "y" ]; then
patch=\`command -v patch 2> /dev/null | head -n 1\`
if [ \$? -eq 0 -a "\$patch" ]; then
if [ "\$keep" = "y" ]; then
cp -pR usr/src/nv usr/src/nv.orig
fi
\$patch -p0 < "\$patchfile"
if [ \$? -ne 0 ]; then
\$echo "Failed to apply patch file \"\$patchfile\"."
if [ "\$keep" = "y" ]; then
rm -rf usr/src/nv
mv usr/src/nv.orig usr/src/nv
fi
else
if [ "\$keep" = "y" ]; then
rm -rf usr/src/nv.orig
fi
rm -rf usr/src/nv/*.orig usr/src/nv/precompiled
repackage_file=y
fi
else
\$echo "Couldn't locate the 'patch' utility."
fi
fi
if [ "\$repackage_file" = "y" ]; then
cd ..
new_targetdir="\`basename \$targetdir | sed -e \"s/-custom//\"\`"
new_targetdir="\${new_targetdir}-custom"
if [ "\$targetdir" != "\$new_targetdir" ]; then
mv \$targetdir \$new_targetdir
fi
# update the pkg-history.txt file
chmod 644 ./\$new_targetdir/pkg-history.txt
if [ "\$add_this_kernel" = "y" ]; then
\$echo "\$new_targetdir: Added precompiled kernel interface for: " >> ./\$new_targetdir/pkg-history.txt
\$echo "\`uname -s -r -v -m 2> /dev/null\`" >> ./\$new_targetdir/pkg-history.txt
else
\$echo "\$new_targetdir: Applied patch file: \$patchfile" >> ./\$new_targetdir/pkg-history.txt
fi
\$echo "" >> ./\$new_targetdir/pkg-history.txt
# retrieve the lsm file
tmplsm="\$TMPDIR/nvidia.lsm.\$\$"
if [ "\`dirname \$0\`" != "." ]; then
sh \$0 --lsm > \$tmplsm
else
sh \$location/\$0 --lsm > \$tmplsm
fi
sh ./\$new_targetdir/makeself.sh \
--lsm \$tmplsm \
--version-string \$version_string \
--pkg-version \$pkg_version \
--pkg-history ./\$new_targetdir/pkg-history.txt \
--target-os \$TARGET_OS \
--target-arch \$TARGET_ARCH \
\$new_targetdir \$new_targetdir.run \
"\$label" "\$script"
rm -f \$tmplsm
[ "\$keep" = "y" ] || mv \$new_targetdir.run \$location
fi
[ "\$keep" = "y" ] || { cd \$TMPROOT; rm -rf \$workingdir; }
else
\$echo "Cannot decompress \$0"; exit 1
fi
cleanupDecompress
exit \$res
END_OF_STUB
EOF
tmpfile="${TMPDIR:=/tmp}/mkself$$"
# Replace __SKIP_DECOMPRESS__ and __SIZE_DECOMPRESS__ with the number of lines
# to skip to find the decompressor program and the size in "lines" of that
# program, respectively. Add a newline to ensure that the decompressor binary
# ends on a "line" boundary.
skip_decompress=`cat $archname | wc -l`
skip_decompress=`expr ${skip_decompress} + 1`
if [ -n "$EMBED_DECOMPRESS" ]; then
size_decompress=`( cat "$EMBED_DECOMPRESS"; echo ) | wc -l`
( cat "$EMBED_DECOMPRESS"; echo ) >> "$archname"
else
size_decompress=0
fi
# replace __SKIP__ with the number of lines to skip to find the package archive
skip=`expr ${skip_decompress} + ${size_decompress}`
sed -e "s/__SKIP__/$skip/" \
-e "s/__SKIP_DECOMPRESS__/${skip_decompress}/" \
-e "s/__SIZE_DECOMPRESS__/${size_decompress}/" \
"$archname" > "$tmpfile"
mv "$tmpfile" "$archname"
# Append the compressed tar data after the stub
if [ "$SILENT" = "n" ]; then
echo "Adding files to archive named \"$archname\"..."
fi
if [ "$TAR_FILES_FROM" ]; then
(cd "$archdir"; tar ${TAR_ARGS} - --files-from "$TAR_FILES_FROM" --no-recursion | $COMPRESS_CMD ) >> "$archname" || { echo Aborting; exit 1; }
else
(cd "$archdir"; tar ${TAR_ARGS} - `find . -maxdepth 1 -mindepth 1` | $COMPRESS_CMD ) >> "$archname" || { echo Aborting; exit 1; }
fi
[ "$SILENT" = "n" ] && echo
# echo Self-extractible archive \"$archname\" successfully created.
sum1=`tail -n +4 "$archname" | cksum | awk '{print $1}'`
# space separated list of directories
[ x"$GUESS_MD5_PATH" = "x" ] && GUESS_MD5_PATH="/usr/local/ssl/bin /usr/bin /usr/local/bin /bin"
MD5_PATH=""
for a in $GUESS_MD5_PATH; do
if [ -x "$a/md5sum" ]; then
MD5_PATH=$a;
fi
done
tmpfile="${TMPDIR:=/tmp}/mkself$$"
if [ -x $MD5_PATH/md5sum ]; then
md5sum=`tail -n +4 "$archname" | $MD5_PATH/md5sum | cut -b-32`;
[ "$SILENT" = "n" ] && echo -e "CRC: $sum1\nMD5: $md5sum\n"
sed -e "s/^CRCsum=0000000000/CRCsum=$sum1/" -e "s/^MD5=00000000000000000000000000000000/MD5=$md5sum/" "$archname" > "$tmpfile"
else
[ "$SILENT" = "n" ] && echo -e "CRC: $sum1\nMD5: none, md5sum binary not found\n"
sed -e "s/^CRCsum=0000000000/CRCsum=$sum1/" "$archname" > "$tmpfile"
fi
mv "$tmpfile" "$archname"
chmod +x "$archname"
if [ "$SILENT" = "n" ]; then
echo "Self-extractible archive \"$archname\" successfully created."
fi