Author: mladen.turk(a)jboss.com
Date: 2008-02-05 02:33:29 -0500 (Tue, 05 Feb 2008)
New Revision: 1352
Added:
trunk/build/install/
trunk/build/install/README
trunk/build/install/makeself-header.sh
trunk/build/install/makeself.sh
Log:
Add install utils (original)
Added: trunk/build/install/README
===================================================================
--- trunk/build/install/README (rev 0)
+++ trunk/build/install/README 2008-02-05 07:33:29 UTC (rev 1352)
@@ -0,0 +1,307 @@
+The following was generated from
http://www.megastep.org/makeself/
+-----------------------
+
+
+ #[1]Mobile/PDA
+
+ makeself - Make self-extractable archives on Unix
+
+ [2]makeself.sh is a small shell script that generates a self-extractable
+ tar.gz archive from a directory. The resulting file appears as a shell
+ script (many of those have a .run suffix), and can be launched as is. The
+ archive will then uncompress itself to a temporary directory and an optional
+ arbitrary command will be executed (for example an installation script).
+ This is pretty similar to archives generated with WinZip Self-Extractor in
+ the Windows world. Makeself archives also include checksums for integrity
+ self-validation (CRC and/or MD5 checksums).
+
+ The makeself.sh script itself is used only to create the archives from a
+ directory of files. The resultant archive is actually a compressed (using
+ gzip, bzip2, or compress) TAR archive, with a small shell script stub at the
+ beginning. This small stub performs all the steps of extracting the files,
+ running the embedded command, and removing the temporary files when it's all
+ over. All what the user has to do to install the software contained in such
+ an archive is to "run" the archive, i.e sh nice-software.run. I recommend
+ using the "run" (which was introduced by some Makeself archives released by
+ Loki Software) or "sh" suffix for such archives not to confuse the users,
+ since they know it's actually shell scripts (with quite a lot of binary data
+ attached to it though!).
+
+ I am trying to keep the code of this script as portable as possible, i.e
+ it's not relying on any bash-specific features and only calls commands that
+ are installed on any functioning UNIX-compatible system. This script as well
+ as the archives it generates should run on any Unix flavor, with any
+ compatible Bourne shell, provided of course that the compression programs
+ are available.
+
+ As of version 2.1, Makeself has been rewritten and tested on the following
+ platforms :
+ * Linux (all distributions)
+ * Sun Solaris (8 tested)
+ * HP-UX (tested on 11.0 and 11i on HPPA RISC)
+ * SCO OpenUnix and OpenServer
+ * IBM AIX 5.1L
+ * MacOS X (Darwin)
+ * SGI IRIX 6.5
+ * FreeBSD
+ * UnicOS / Cray
+
+ If you successfully run Makeself and/or archives created with it on another
+ system, then [3]let me know!
+
+ Examples of publicly available archives made using makeself are :
+ * Game patches and installers for [4]Id Software games like Quake 3 for
+ Linux or Return To Castle Wolfenstien ;
+ * All game patches released by [5]Loki Software for the Linux version of
+ popular games ;
+ * The [6]nVidia drivers for Linux
+ * The installer for the Linux version of [7]Google Earth
+ * The [8]Makeself distribution itself ;-)
+ * and countless others...
+
+ Important note for Apache users: By default, most Web servers will think
+ that Makeself archives are regular text files and thus they may show up as
+ text in a Web browser. The correct way to prevent this is to add a MIME type
+ for this file format, like so (in httpd.conf) :
+ AddType application/x-makeself .run
+
+ Important note for recent GNU/Linux distributions: Archives created with
+ Makeself prior to v2.1.2 were using an old syntax for the head and tail Unix
+ commands that is being progressively obsoleted in their GNU forms. Therefore
+ you may have problems uncompressing some of these archives. A workaround for
+ this is to set the environment variable $_POSIX2_VERSION to enable the old
+ syntax, i.e. :
+ export _POSIX2_VERSION=199209
+
+Usage
+
+ The syntax of makeself is the following:
+
+ makeself.sh [args] archive_dir file_name label startup_script [script_args]
+ * args are optional options for Makeself. The available ones are :
+ + --version : Prints the version number on stdout, then exits
+ immediately
+ + --gzip : Use gzip for compression (is the default on platforms on
+ which gzip is commonly available, like Linux)
+ + --bzip2 : Use bzip2 instead of gzip for better compression. The
+ bzip2 command must be available in the command path. I recommend
+ that you set the prefix to something like '.bz2.run' for the
+ archive, so that potential users know that they'll need bzip2 to
+ extract it.
+ + --compress : Use the UNIX "compress" command to compress the data.
+ This should be the default on all platforms that don't have gzip
+ available.
+ + --nocomp : Do not use any compression for the archive, which will
+ then be an uncompressed TAR.
+ + --notemp : The generated archive will not extract the files to a
+ temporary directory, but in a new directory created in the current
+ directory. This is better to distribute software packages that may
+ extract and compile by themselves (i.e. launch the compilation
+ through the embedded script).
+ + --current : Files will be extracted to the current directory,
+ instead of in a subdirectory. This option implies --notemp above.
+ + --follow : Follow the symbolic links inside of the archive
+ directory, i.e. store the files that are being pointed to instead
+ of the links themselves.
+ + --append (new in 2.1.x): Append data to an existing archive,
+ instead of creating a new one. In this mode, the settings from the
+ original archive are reused (compression type, label, embedded
+ script), and thus don't need to be specified again on the command
+ line.
+ + --header : Makeself 2.0 uses a separate file to store the header
+ stub, called "makeself-header.sh". By default, it is assumed that
+ it is stored in the same location as makeself.sh. This option can
+ be used to specify its actual location if it is stored someplace
+ else.
+ + --copy : Upon extraction, the archive will first extract itself to
+ a temporary directory. The main application of this is to allow
+ self-contained installers stored in a Makeself archive on a CD,
+ when the installer program will later need to unmount the CD and
+ allow a new one to be inserted. This prevents "Filesystem busy"
+ errors for installers that span multiple CDs.
+ + --nox11 : Disable the automatic spawning of a new terminal in X11.
+ + --nowait : When executed from a new X11 terminal, disable the user
+ prompt at the end of the script execution.
+ + --nomd5 and --nocrc : Disable the creation of a MD5 / CRC checksum
+ for the archive. This speeds up the extraction process if integrity
+ checking is not necessary.
+ + --lsm file : Provide and LSM file to makeself, that will be
+ embedded in the generated archive. LSM files are describing a
+ software package in a way that is easily parseable. The LSM entry
+ can then be later retrieved using the '-lsm' argument to the
+ archive. An exemple of a LSM file is provided with Makeself.
+ * archive_dir is the name of the directory that contains the files to be
+ archived
+ * file_name is the name of the archive to be created
+ * label is an arbitrary text string describing the package. It will be
+ displayed while extracting the files.
+ * startup_script is the command to be executed from within the directory
+ of extracted files. Thus, if you wish to execute a program contain in
+ this directory, you must prefix your command with "./". For example,
+ ./program will be fine. The script_args are additionnal arguments for
+ this command.
+
+ Here is an example, assuming the user has a package image stored in a
+ /home/joe/mysoft, and he wants to generate a self-extracting package named
+ mysoft.sh, which will launch the "setup" script initially stored in
+ /home/joe/mysoft :
+
+ makeself.sh /home/joe/mysoft mysoft.sh "Joe's Nice Software Package"
./setup
+ Here is also how I created the [9]makeself.run archive which contains the
+ Makeself distribution :
+
+ makeself.sh --notemp makeself makeself.run "Makeself by Stephane Peter"
echo
+ "Makeself has extracted itself"
+
+ Archives generated with Makeself 2.1 can be passed the following arguments:
+
+ * --keep : Prevent the files to be extracted in a temporary directory that
+ will be removed after the embedded script's execution. The files will
+ then be extracted in the current working directory and will stay here
+ until you remove them.
+ * --verbose : Will prompt the user before executing the embedded command
+ * --target dir : Allows to extract the archive in an arbitrary place.
+ * --nox11 : Do not spawn a X11 terminal.
+ * --confirm : Prompt the user for confirmation before running the embedded
+ command.
+ * --info : Print out general information about the archive (does not
+ extract).
+ * --lsm : Print out the LSM entry, if it is present.
+ * --list : List the files in the archive.
+ * --check : Check the archive for integrity using the embedded checksums.
+ Does not extract the archive.
+ * --nochown : By default, a "chown -R" command is run on the target
+ directory after extraction, so that all files belong to the current
+ user. This is mostly needed if you are running as root, as tar will then
+ try to recreate the initial user ownerships. You may disable this
+ behavior with this flag.
+ * --tar : Run the tar command on the contents of the archive, using the
+ following arguments as parameter for the command.
+ * --noexec : Do not run the embedded script after extraction.
+
+ Any subsequent arguments to the archive will be passed as additional
+ arguments to the embedded command. You should explicitly use the -- special
+ command-line construct before any such options to make sure that Makeself
+ will not try to interpret them.
+
+License
+
+ Makeself is covered by the [10]GNU General Public License (GPL) version 2
+ and above. Archives generated by Makeself don't have to be placed under this
+ license (although I encourage it ;-)), since the archive itself is merely
+ data for Makeself.
+
+Download
+
+ Get the latest official distribution [11]here (version 2.1.5).
+
+ The latest development version can be grabbed from the Loki Setup CVS
+ module, at [
12]cvs.icculus.org.
+
+Version history
+
+ * v1.0: Initial public release
+ * v1.1: The archive can be passed parameters that will be passed on to the
+ embedded script, thanks to John C. Quillan
+ * v1.2: Cosmetic updates, support for bzip2 compression and non-temporary
+ archives. Many ideas thanks to Francois Petitjean.
+ * v1.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.
+ * v1.4: Many patches from Francois Petitjean: improved UNIX compatibility,
+ automatic integrity checking, support of LSM files to get info on the
+ package at run time..
+ * v1.5.x: A lot of bugfixes, and many other patches, including automatic
+ verification through the usage of checksums. Version 1.5.5 was the
+ stable release for a long time, even though the Web page didn't get
+ updated ;-). Makeself was also officially made a part of the [13]Loki
+ Setup installer, and its source is being maintained as part of this
+ package.
+ * v2.0: Complete internal rewrite of Makeself. The command-line parsing
+ was vastly improved, the overall maintenance of the package was greatly
+ improved by separating the stub from makeself.sh. Also Makeself was
+ ported and tested to a variety of Unix platforms.
+ * v2.0.1: First public release of the new 2.0 branch. Prior versions are
+ officially obsoleted. This release introduced the '--copy' argument that
+ was introduced in response to a need for the [14]UT2K3 Linux installer.
+ * v2.1.0: Big change : Makeself can now support multiple embedded
+ tarballs, each stored separately with their own checksums. An existing
+ archive can be updated with the --append flag. Checksums are also better
+ managed, and the --nochown option for archives appeared.
+ * v2.1.1: Fixes related to the Unix compression (compress command). Some
+ Linux distributions made the insane choice to make it unavailable, even
+ though gzip is capable of uncompressing these files, plus some more
+ bugfixes in the extraction and checksum code.
+ * v2.1.2: Some bug fixes. Use head -n to avoid problems with POSIX
+ conformance.
+ * v2.1.3: Bug fixes with the command line when spawning terminals. Added
+ --tar, --noexec for archives. Added --nomd5 and --nocrc to avoid
+ creating checksums in archives. The embedded script is now run through
+ "eval". The --info output now includes the command used to create the
+ archive. A man page was contributed by Bartosz Fenski.
+ * v2.1.4: Fixed --info output. Generate random directory name when
+ extracting files to . to avoid problems. Better handling of errors with
+ wrong permissions for the directory containing the files. Avoid some
+ race conditions, Unset the $CDPATH variable to avoid problems if it is
+ set. Better handling of dot files in the archive directory.
+ * v2.1.5: Made the md5sum detection consistent with the header code. Check
+ for the presence of the archive directory. Added --encrypt for symmetric
+ encryption through gpg (Eric Windisch). Added support for the digest
+ command on Solaris 10 for MD5 checksums. Check for available disk space
+ before extracting to the target directory (Andreas Schweitzer). Allow
+ extraction to run asynchronously (patch by Peter Hatch). Use file
+ descriptors internally to avoid error messages (patch by Kay Tiong
+ Khoo).
+
+Links
+
+ * Check out the [15]"Loki setup" installer, used to install many Linux
+ games and other applications, and of which I am the co-author. Since the
+ demise of Loki, I am now the official maintainer of the project, and it
+ is now being hosted on [
16]icculus.org, as well as a bunch of other
+ ex-Loki projects (and a lot of other good stuff!).
+ * Bjarni R. Einarsson also wrote the setup.sh installer script, inspired
+ by Makeself. [17]Check it out !
+
+Contact
+
+ This script was written by [18]Stéphane Peter (megastep at
megastep.org) I
+ welcome any enhancements and suggestions.
+
+ Contributions were included from John C. Quillan, Bjarni R. Einarsson,
+ Francois Petitjean, and Ryan C. Gordon, thanks to them! If you think I
+ forgot your name, don't hesitate to contact me.
+
+
icculus.org also has a [19]Bugzilla server available that allows bug reports
+ to be submitted for Loki setup, and since Makeself is a part of Loki setup,
+ you can submit bug reports from there!
+ _________________________________________________________________
+
+
+ [20]Stéphane Peter
+
+ Last modified: Fri Jan 4 15:51:05 PST 2008
+
+References
+
+ 1.
http://mowser.com/web/megastep.org/makeself/
+ 2.
http://www.megastep.org/makeself/makeself.run
+ 3. mailto:megastep@REMOVEME.megastep.org
+ 4.
http://www.idsoftware.com/
+ 5.
http://www.lokigames.com/products/myth2/updates.php3
+ 6.
http://www.nvidia.com/
+ 7.
http://earth.google.com/
+ 8.
http://www.megastep.org/makeself/makeself.run
+ 9.
http://www.megastep.org/makeself/makeself.run
+ 10.
http://www.gnu.org/copyleft/gpl.html
+ 11.
http://www.megastep.org/makeself/makeself-2.1.5.run
+ 12.
http://cvs.icculus.org/
+ 13.
http://www.icculus.org/loki_setup/
+ 14.
http://www.unrealtournament2003.com/
+ 15.
http://www.icculus.org/loki_setup/
+ 16.
http://www.icculus.org/
+ 17.
http://www.mmedia.is/~bre/programs/setup.sh/
+ 18. mailto:megastep@@megastep.org
+ 19.
https://bugzilla.icculus.org/
+ 20. mailto:megastep@@megastep.org
Property changes on: trunk/build/install/README
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/build/install/makeself-header.sh
===================================================================
--- trunk/build/install/makeself-header.sh (rev 0)
+++ trunk/build/install/makeself-header.sh 2008-02-05 07:33:29 UTC (rev 1352)
@@ -0,0 +1,401 @@
+cat << EOF > "$archname"
+#!/bin/sh
+# This script was generated using Makeself $MS_VERSION
+
+CRCsum="$CRCsum"
+MD5="$MD5sum"
+TMPROOT=\${TMPDIR:=/tmp}
+
+label="$LABEL"
+script="$SCRIPT"
+scriptargs="$SCRIPTARGS"
+targetdir="$archdirname"
+filesizes="$filesizes"
+keep=$KEEP
+
+print_cmd_arg=""
+if type printf > /dev/null; then
+ print_cmd="printf"
+elif test -x /usr/ucb/echo; then
+ print_cmd="/usr/ucb/echo"
+else
+ print_cmd="echo"
+fi
+
+unset CDPATH
+
+MS_Printf()
+{
+ \$print_cmd \$print_cmd_arg "\$1"
+}
+
+MS_Progress()
+{
+ while read a; do
+ MS_Printf .
+ done
+}
+
+MS_diskspace()
+{
+ (
+ if test -d /usr/xpg4/bin; then
+ PATH=/usr/xpg4/bin:\$PATH
+ fi
+ df -kP "\$1" | tail -1 | awk '{print \$4}'
+ )
+}
+
+MS_dd()
+{
+ blocks=\`expr \$3 / 1024\`
+ bytes=\`expr \$3 % 1024\`
+ dd if="\$1" ibs=\$2 skip=1 obs=1024 conv=sync 2> /dev/null | \\
+ { test \$blocks -gt 0 && dd ibs=1024 obs=1024 count=\$blocks ; \\
+ test \$bytes -gt 0 && dd ibs=1 obs=1024 count=\$bytes ; } 2> /dev/null
+}
+
+MS_Help()
+{
+ cat << EOH >&2
+Makeself version $MS_VERSION
+ 1) Getting help or info about \$0 :
+ \$0 --help Print this message
+ \$0 --info Print embedded info : title, default target directory, embedded script
...
+ \$0 --lsm Print embedded lsm entry (or no LSM)
+ \$0 --list Print the list of files in the archive
+ \$0 --check Checks integrity of the archive
+
+ 2) Running \$0 :
+ \$0 [options] [--] [additional arguments to embedded script]
+ with following options (in that order)
+ --confirm Ask before running embedded script
+ --noexec Do not run embedded script
+ --keep Do not erase target directory after running
+ the embedded script
+ --nox11 Do not spawn an xterm
+ --nochown Do not give the extracted files to the current user
+ --target NewDirectory Extract in NewDirectory
+ --tar arg1 [arg2 ...] Access the contents of the archive through the tar command
+ -- Following arguments will be passed to the embedded script
+EOH
+}
+
+MS_Check()
+{
+ OLD_PATH="\$PATH"
+
PATH=\${GUESS_MD5_PATH:-"\$OLD_PATH:/bin:/usr/bin:/sbin:/usr/local/ssl/bin:/usr/local/bin:/opt/openssl/bin"}
+ MD5_ARG=""
+ MD5_PATH=\`exec <&- 2>&-; which md5sum || type md5sum\`
+ test -x "\$MD5_PATH" || MD5_PATH=\`exec <&- 2>&-; which md5
|| type md5\`
+ test -x "\$MD5_PATH" || MD5_PATH=\`exec <&- 2>&-; which digest
|| type digest\`
+ PATH="\$OLD_PATH"
+
+ MS_Printf "Verifying archive integrity..."
+ offset=\`head -n $SKIP "\$1" | wc -c | tr -d " "\`
+ verb=\$2
+ i=1
+ for s in \$filesizes
+ do
+ crc=\`echo \$CRCsum | cut -d" " -f\$i\`
+ if test -x "\$MD5_PATH"; then
+ if test \`basename \$MD5_PATH\` = digest; then
+ MD5_ARG="-a md5"
+ fi
+ md5=\`echo \$MD5 | cut -d" " -f\$i\`
+ if test \$md5 = "00000000000000000000000000000000"; then
+ test x\$verb = xy && echo " \$1 does not contain an embedded MD5
checksum." >&2
+ else
+ md5sum=\`MS_dd "\$1" \$offset \$s | eval "\$MD5_PATH \$MD5_ARG" |
cut -b-32\`;
+ if test "\$md5sum" != "\$md5"; then
+ echo "Error in MD5 checksums: \$md5sum is different from \$md5"
>&2
+ exit 2
+ else
+ test x\$verb = xy && MS_Printf " MD5 checksums are OK."
>&2
+ fi
+ crc="0000000000"; verb=n
+ fi
+ fi
+ if test \$crc = "0000000000"; then
+ test x\$verb = xy && echo " \$1 does not contain a CRC checksum."
>&2
+ else
+ sum1=\`MS_dd "\$1" \$offset \$s | CMD_ENV=xpg4 cksum | awk '{print
\$1}'\`
+ if test "\$sum1" = "\$crc"; then
+ test x\$verb = xy && MS_Printf " CRC checksums are OK." >&2
+ else
+ echo "Error in checksums: \$sum1 is different from \$crc"
+ exit 2;
+ fi
+ fi
+ i=\`expr \$i + 1\`
+ offset=\`expr \$offset + \$s\`
+ done
+ echo " All good."
+}
+
+UnTAR()
+{
+ tar \$1vf - 2>&1 || { echo Extraction failed. > /dev/tty; kill -15 \$$; }
+}
+
+finish=true
+xterm_loop=
+nox11=$NOX11
+copy=$COPY
+ownership=y
+verbose=n
+
+initargs="\$@"
+
+while true
+do
+ case "\$1" in
+ -h | --help)
+ MS_Help
+ exit 0
+ ;;
+ --info)
+ echo Identification: "\$label"
+ echo Target directory: "\$targetdir"
+ echo Uncompressed size: $USIZE KB
+ echo Compression: $COMPRESS
+ echo Date of packaging: $DATE
+ echo Built with Makeself version $MS_VERSION on $OSTYPE
+ echo Build command was: "$MS_COMMAND"
+ if test x\$script != x; then
+ echo Script run after extraction:
+ echo " " \$script \$scriptargs
+ fi
+ if test x"$copy" = xcopy; then
+ echo "Archive will copy itself to a temporary location"
+ fi
+ if test x"$KEEP" = xy; then
+ echo "directory \$targetdir is permanent"
+ else
+ echo "\$targetdir will be removed after extraction"
+ fi
+ exit 0
+ ;;
+ --dumpconf)
+ echo LABEL=\"\$label\"
+ echo SCRIPT=\"\$script\"
+ echo SCRIPTARGS=\"\$scriptargs\"
+ echo archdirname=\"$archdirname\"
+ echo KEEP=$KEEP
+ echo COMPRESS=$COMPRESS
+ echo filesizes=\"\$filesizes\"
+ echo CRCsum=\"\$CRCsum\"
+ echo MD5sum=\"\$MD5\"
+ echo OLDUSIZE=$USIZE
+ echo OLDSKIP=`expr $SKIP + 1`
+ exit 0
+ ;;
+ --lsm)
+cat << EOLSM
+EOF
+eval "$LSM_CMD"
+cat << EOF >> "$archname"
+EOLSM
+ exit 0
+ ;;
+ --list)
+ echo Target directory: \$targetdir
+ offset=\`head -n $SKIP "\$0" | wc -c | tr -d " "\`
+ for s in \$filesizes
+ do
+ MS_dd "\$0" \$offset \$s | eval "$GUNZIP_CMD" | UnTAR t
+ offset=\`expr \$offset + \$s\`
+ done
+ exit 0
+ ;;
+ --tar)
+ offset=\`head -n $SKIP "\$0" | wc -c | tr -d " "\`
+ arg1="\$2"
+ shift 2
+ for s in \$filesizes
+ do
+ MS_dd "\$0" \$offset \$s | eval "$GUNZIP_CMD" | tar
"\$arg1" - \$*
+ offset=\`expr \$offset + \$s\`
+ done
+ exit 0
+ ;;
+ --check)
+ MS_Check "\$0" y
+ exit 0
+ ;;
+ --confirm)
+ verbose=y
+ shift
+ ;;
+ --noexec)
+ script=""
+ shift
+ ;;
+ --keep)
+ keep=y
+ shift
+ ;;
+ --target)
+ keep=y
+ targetdir=\${2:-.}
+ shift 2
+ ;;
+ --nox11)
+ nox11=y
+ shift
+ ;;
+ --nochown)
+ ownership=n
+ shift
+ ;;
+ --xwin)
+ finish="echo Press Return to close this window...; read junk"
+ xterm_loop=1
+ shift
+ ;;
+ --phase2)
+ copy=phase2
+ shift
+ ;;
+ --)
+ shift
+ break ;;
+ -*)
+ echo Unrecognized flag : "\$1" >&2
+ MS_Help
+ exit 1
+ ;;
+ *)
+ break ;;
+ esac
+done
+
+case "\$copy" in
+copy)
+ tmpdir=\$TMPROOT/makeself.\$RANDOM.\`date +"%y%m%d%H%M%S"\`.\$\$
+ mkdir "\$tmpdir" || {
+ echo "Could not create temporary directory \$tmpdir" >&2
+ exit 1
+ }
+ SCRIPT_COPY="\$tmpdir/makeself"
+ echo "Copying to a temporary location..." >&2
+ cp "\$0" "\$SCRIPT_COPY"
+ chmod +x "\$SCRIPT_COPY"
+ cd "\$TMPROOT"
+ exec "\$SCRIPT_COPY" --phase2 -- \$initargs
+ ;;
+phase2)
+ finish="\$finish ; rm -rf \`dirname \$0\`"
+ ;;
+esac
+
+if test "\$nox11" = "n"; then
+ if tty -s; then # Do we have a terminal?
+ :
+ else
+ if test x"\$DISPLAY" != x -a x"\$xterm_loop" = x; then # No,
but do we have X?
+ if xset q > /dev/null 2>&1; then # Check for valid DISPLAY
variable
+ GUESS_XTERMS="xterm rxvt dtterm eterm Eterm kvt konsole aterm"
+ for a in \$GUESS_XTERMS; do
+ if type \$a >/dev/null 2>&1; then
+ XTERM=\$a
+ break
+ fi
+ done
+ chmod a+x \$0 || echo Please add execution rights on \$0
+ if test \`echo "\$0" | cut -c1\` = "/"; then # Spawn
a terminal!
+ exec \$XTERM -title "\$label" -e "\$0" --xwin
"\$initargs"
+ else
+ exec \$XTERM -title "\$label" -e "./\$0" --xwin
"\$initargs"
+ fi
+ fi
+ fi
+ fi
+fi
+
+if test "\$targetdir" = "."; then
+ tmpdir="."
+else
+ if test "\$keep" = y; then
+ echo "Creating directory \$targetdir" >&2
+ tmpdir="\$targetdir"
+ dashp="-p"
+ else
+ tmpdir="\$TMPROOT/selfgz\$\$\$RANDOM"
+ dashp=""
+ fi
+ mkdir \$dashp \$tmpdir || {
+ echo 'Cannot create target directory' \$tmpdir >&2
+ echo 'You should try option --target OtherDirectory' >&2
+ eval \$finish
+ exit 1
+ }
+fi
+
+location="\`pwd\`"
+if test x\$SETUP_NOCHECK != x1; then
+ MS_Check "\$0"
+fi
+offset=\`head -n $SKIP "\$0" | wc -c | tr -d " "\`
+
+if test x"\$verbose" = xy; then
+ MS_Printf "About to extract $USIZE KB in \$tmpdir ... Proceed ? [Y/n] "
+ read yn
+ if test x"\$yn" = xn; then
+ eval \$finish; exit 1
+ fi
+fi
+
+MS_Printf "Uncompressing \$label"
+res=3
+if test "\$keep" = n; then
+ trap 'echo Signal caught, cleaning up >&2; cd \$TMPROOT; /bin/rm -rf
\$tmpdir; eval \$finish; exit 15' 1 2 3 15
+fi
+
+leftspace=\`MS_diskspace \$tmpdir\`
+if test \$leftspace -lt $USIZE; then
+ echo
+ echo "Not enough space left in "\`dirname \$tmpdir\`" (\$leftspace KB)
to decompress \$0 ($USIZE KB)" >&2
+ if test "\$keep" = n; then
+ echo "Consider setting TMPDIR to a directory with more free space."
+ fi
+ eval \$finish; exit 1
+fi
+
+for s in \$filesizes
+do
+ if MS_dd "\$0" \$offset \$s | eval "$GUNZIP_CMD" | ( cd
"\$tmpdir"; UnTAR x ) | MS_Progress; then
+ if test x"\$ownership" = xy; then
+ (PATH=/usr/xpg4/bin:\$PATH; cd "\$tmpdir"; chown -R \`id -u\` .; chgrp -R
\`id -g\` .)
+ fi
+ else
+ echo
+ echo "Unable to decompress \$0" >&2
+ eval \$finish; exit 1
+ fi
+ offset=\`expr \$offset + \$s\`
+done
+echo
+
+cd "\$tmpdir"
+res=0
+if test x"\$script" != x; then
+ if test x"\$verbose" = xy; then
+ MS_Printf "OK to execute: \$script \$scriptargs \$* ? [Y/n] "
+ read yn
+ if test x"\$yn" = x -o x"\$yn" = xy -o x"\$yn" = xY;
then
+ eval \$script \$scriptargs \$*; res=\$?;
+ fi
+ else
+ eval \$script \$scriptargs \$*; res=\$?
+ fi
+ if test \$res -ne 0; then
+ test x"\$verbose" = xy && echo "The program '\$script'
returned an error code (\$res)" >&2
+ fi
+fi
+if test "\$keep" = n; then
+ cd \$TMPROOT
+ /bin/rm -rf \$tmpdir
+fi
+eval \$finish; exit \$res
+EOF
Property changes on: trunk/build/install/makeself-header.sh
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/build/install/makeself.sh
===================================================================
--- trunk/build/install/makeself.sh (rev 0)
+++ trunk/build/install/makeself.sh 2008-02-05 07:33:29 UTC (rev 1352)
@@ -0,0 +1,407 @@
+#!/bin/sh
+#
+# Makeself version 2.1.x
+# by Stephane Peter <megastep(a)megastep.org>
+#
+# $Id: makeself.sh,v 1.64 2008/01/04 23:52:14 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 2.0 is a rewrite of version 1.0 to make the code easier to read and maintain.
+#
+# 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)
+# - 2.0 : Brand new rewrite, cleaner architecture, separated header and UNIX ports.
+# - 2.0.1 : Added --copy
+# - 2.1.0 : Allow multiple tarballs to be stored in one archive, and incremental
updates.
+# Added --nochown for archives
+# Stopped doing redundant checksums when not necesary
+# - 2.1.1 : Work around insane behavior from certain Linux distros with no
'uncompress' command
+# Cleaned up the code to handle error codes from compress. Simplified the
extraction code.
+# - 2.1.2 : Some bug fixes. Use head -n to avoid problems.
+# - 2.1.3 : Bug fixes with command line when spawning terminals.
+# Added --tar for archives, allowing to give arbitrary arguments to tar on the
contents of the archive.
+# Added --noexec to prevent execution of embedded scripts.
+# Added --nomd5 and --nocrc to avoid creating checksums in archives.
+# Added command used to create the archive in --info output.
+# Run the embedded script through eval.
+# - 2.1.4 : Fixed --info output.
+# Generate random directory name when extracting files to . to avoid problems.
(Jason Trent)
+# Better handling of errors with wrong permissions for the directory containing
the files. (Jason Trent)
+# Avoid some race conditions (Ludwig Nussel)
+# Unset the $CDPATH variable to avoid problems if it is set. (Debian)
+# Better handling of dot files in the archive directory.
+# - 2.1.5 : Made the md5sum detection consistent with the header code.
+# Check for the presence of the archive directory
+# Added --encrypt for symmetric encryption through gpg (Eric Windisch)
+# Added support for the digest command on Solaris 10 for MD5 checksums
+# Check for available disk space before extracting to the target directory
(Andreas Schweitzer)
+# Allow extraction to run asynchronously (patch by Peter Hatch)
+# Use file descriptors internally to avoid error messages (patch by Kay Tiong
Khoo)
+#
+# (C) 1998-2008 by St�phane Peter <megastep(a)megastep.org>
+#
+# This software is released under the terms of the GNU GPL version 2 and above
+# Please read the license at
http://www.gnu.org/copyleft/gpl.html
+#
+
+MS_VERSION=2.1.5
+MS_COMMAND="$0"
+unset CDPATH
+
+for f in "${1+"$@"}"; do
+ MS_COMMAND="$MS_COMMAND \\\\
+ \\\"$f\\\""
+done
+
+# Procedures
+
+MS_Usage()
+{
+ echo "Usage: $0 [params] archive_dir file_name label [startup_script]
[args]"
+ echo "params can be one or more of the following :"
+ echo " --version | -v : Print out Makeself version number and exit"
+ echo " --help | -h : Print out this help message"
+ echo " --gzip : Compress using gzip (default if detected)"
+ echo " --bzip2 : Compress using bzip2 instead of gzip"
+ echo " --compress : Compress using the UNIX 'compress'
command"
+ echo " --nocomp : Do not compress the data"
+ echo " --notemp : The archive will create archive_dir in the"
+ echo " current directory and uncompress in
./archive_dir"
+ echo " --copy : Upon extraction, the archive will first copy itself
to"
+ echo " a temporary directory"
+ echo " --append : Append more files to an existing Makeself
archive"
+ echo " The label and startup scripts will then be
ignored"
+ echo " --current : Files will be extracted to the current
directory."
+ echo " Implies --notemp."
+ echo " --nomd5 : Don't calculate an MD5 for archive"
+ echo " --nocrc : Don't calculate a CRC for archive"
+ echo " --header file : Specify location of the header script"
+ echo " --follow : Follow the symlinks in the archive"
+ echo " --nox11 : Disable automatic spawn of a xterm"
+ echo " --nowait : Do not wait for user input after executing
embedded"
+ echo " program from an xterm"
+ echo " --lsm file : LSM file describing the package"
+ 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
+}
+
+# Default settings
+if type gzip 2>&1 > /dev/null; then
+ COMPRESS=gzip
+else
+ COMPRESS=Unix
+fi
+KEEP=n
+CURRENT=n
+NOX11=n
+APPEND=n
+COPY=none
+TAR_ARGS=cvf
+HEADER=`dirname $0`/makeself-header.sh
+
+# LSM file stuff
+LSM_CMD="echo No LSM. >> \"\$archname\""
+
+while true
+do
+ case "$1" in
+ --version | -v)
+ echo Makeself version $MS_VERSION
+ exit 0
+ ;;
+ --bzip2)
+ COMPRESS=bzip2
+ shift
+ ;;
+ --gzip)
+ COMPRESS=gzip
+ shift
+ ;;
+ --compress)
+ COMPRESS=Unix
+ shift
+ ;;
+ --encrypt)
+ COMPRESS=gpg
+ shift
+ ;;
+ --nocomp)
+ COMPRESS=none
+ shift
+ ;;
+ --notemp)
+ KEEP=y
+ shift
+ ;;
+ --copy)
+ COPY=copy
+ shift
+ ;;
+ --current)
+ CURRENT=y
+ KEEP=y
+ shift
+ ;;
+ --header)
+ HEADER="$2"
+ shift 2
+ ;;
+ --follow)
+ TAR_ARGS=cvfh
+ shift
+ ;;
+ --nox11)
+ NOX11=y
+ shift
+ ;;
+ --nowait)
+ shift
+ ;;
+ --nomd5)
+ NOMD5=y
+ shift
+ ;;
+ --nocrc)
+ NOCRC=y
+ shift
+ ;;
+ --append)
+ APPEND=y
+ shift
+ ;;
+ --lsm)
+ LSM_CMD="cat \"$2\" >> \"\$archname\""
+ shift 2
+ ;;
+ -h | --help)
+ MS_Usage
+ ;;
+ -*)
+ echo Unrecognized flag : "$1"
+ MS_Usage
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if test $# -lt 1; then
+ MS_Usage
+else
+ if test -d "$1"; then
+ archdir="$1"
+ else
+ echo "Directory $1 does not exist."
+ exit 1
+ fi
+fi
+archname="$2"
+
+if test "$APPEND" = y; then
+ if test $# -lt 2; then
+ MS_Usage
+ fi
+
+ # Gather the info from the original archive
+ OLDENV=`sh "$archname" --dumpconf`
+ if test $? -ne 0; then
+ echo "Unable to update archive: $archname" >&2
+ exit 1
+ else
+ eval "$OLDENV"
+ fi
+else
+ if test "$KEEP" = n -a $# = 3; then
+ echo "ERROR: Making a temporary archive with no embedded command does not make
sense!" >&2
+ echo
+ MS_Usage
+ fi
+ # We don't really want to create an absolute directory...
+ if test "$CURRENT" = y; then
+ archdirname="."
+ else
+ archdirname=`basename "$1"`
+ fi
+
+ if test $# -lt 3; then
+ MS_Usage
+ fi
+
+ LABEL="$3"
+ SCRIPT="$4"
+ test x$SCRIPT = x || shift 1
+ shift 3
+ SCRIPTARGS="$*"
+fi
+
+if test "$KEEP" = n -a "$CURRENT" = y; then
+ echo "ERROR: It is A VERY DANGEROUS IDEA to try to combine --notemp and
--current." >&2
+ exit 1
+fi
+
+case $COMPRESS in
+gzip)
+ GZIP_CMD="gzip -c9"
+ GUNZIP_CMD="gzip -cd"
+ ;;
+bzip2)
+ GZIP_CMD="bzip2 -9"
+ GUNZIP_CMD="bzip2 -d"
+ ;;
+gpg)
+ GZIP_CMD="gpg -ac -z9"
+ GUNZIP_CMD="gpg -d"
+ ;;
+Unix)
+ GZIP_CMD="compress -cf"
+ GUNZIP_CMD="exec 2>&-; uncompress -c || test \\\$? -eq 2 || gzip
-cd"
+ ;;
+none)
+ GZIP_CMD="cat"
+ GUNZIP_CMD="cat"
+ ;;
+esac
+
+tmpfile="${TMPDIR:=/tmp}/mkself$$"
+
+if test -f $HEADER; then
+ oldarchname="$archname"
+ archname="$tmpfile"
+ # Generate a fake header to count its lines
+ SKIP=0
+ . $HEADER
+ SKIP=`cat "$tmpfile" |wc -l`
+ # Get rid of any spaces
+ SKIP=`expr $SKIP`
+ rm -f "$tmpfile"
+ echo Header is $SKIP lines long >&2
+
+ archname="$oldarchname"
+else
+ echo "Unable to open header file: $HEADER" >&2
+ exit 1
+fi
+
+echo
+
+if test "$APPEND" = n; then
+ if test -f "$archname"; then
+ echo "WARNING: Overwriting existing file: $archname" >&2
+ fi
+fi
+
+USIZE=`du -ks $archdir | cut -f1`
+DATE=`LC_ALL=C date`
+
+if test "." = "$archdirname"; then
+ if test "$KEEP" = n; then
+ archdirname="makeself-$$-`date +%Y%m%d%H%M%S`"
+ fi
+fi
+
+test -d "$archdir" || { echo "Error: $archdir does not exist."; rm -f
"$tmpfile"; exit 1; }
+echo About to compress $USIZE KB of data...
+echo Adding files to archive named \"$archname\"...
+exec 3<> "$tmpfile"
+(cd "$archdir" && ( tar $TAR_ARGS - . | eval "$GZIP_CMD"
>&3 ) ) || { echo Aborting: Archive directory not found or temporary file:
"$tmpfile" could not be created.; exec 3>&-; rm -f "$tmpfile";
exit 1; }
+exec 3>&- # try to close the archive
+
+fsize=`cat "$tmpfile" | wc -c | tr -d " "`
+
+# Compute the checksums
+
+md5sum=00000000000000000000000000000000
+crcsum=0000000000
+
+if test "$NOCRC" = y; then
+ echo "skipping crc at user request"
+else
+ crcsum=`cat "$tmpfile" | CMD_ENV=xpg4 cksum | sed -e 's/ /Z/' -e
's/ /Z/' | cut -dZ -f1`
+ echo "CRC: $crcsum"
+fi
+
+if test "$NOMD5" = y; then
+ echo "skipping md5sum at user request"
+else
+ # Try to locate a MD5 binary
+ OLD_PATH=$PATH
+ PATH=${GUESS_MD5_PATH:-"$OLD_PATH:/bin:/usr/bin:/sbin:/usr/local/ssl/bin:/usr/local/bin:/opt/openssl/bin"}
+ MD5_ARG=""
+ MD5_PATH=`exec <&- 2>&-; which md5sum || type md5sum`
+ test -x $MD5_PATH || MD5_PATH=`exec <&- 2>&-; which md5 || type md5`
+ test -x $MD5_PATH || MD5_PATH=`exec <&- 2>&-; which digest || type
digest`
+ PATH=$OLD_PATH
+ if test `basename $MD5_PATH` = digest; then
+ MD5_ARG="-a md5"
+ fi
+ if test -x "$MD5_PATH"; then
+ md5sum=`cat "$tmpfile" | eval "$MD5_PATH $MD5_ARG" | cut -b-32`;
+ echo "MD5: $md5sum"
+ else
+ echo "MD5: none, MD5 command not found"
+ fi
+fi
+
+if test "$APPEND" = y; then
+ mv "$archname" "$archname".bak || exit
+
+ # Prepare entry for new archive
+ filesizes="$filesizes $fsize"
+ CRCsum="$CRCsum $crcsum"
+ MD5sum="$MD5sum $md5sum"
+ USIZE=`expr $USIZE + $OLDUSIZE`
+ # Generate the header
+ . $HEADER
+ # Append the original data
+ tail -n +$OLDSKIP "$archname".bak >> "$archname"
+ # Append the new data
+ cat "$tmpfile" >> "$archname"
+
+ chmod +x "$archname"
+ rm -f "$archname".bak
+ echo Self-extractible archive \"$archname\" successfully updated.
+else
+ filesizes="$fsize"
+ CRCsum="$crcsum"
+ MD5sum="$md5sum"
+
+ # Generate the header
+ . $HEADER
+
+ # Append the compressed tar data after the stub
+ echo
+ cat "$tmpfile" >> "$archname"
+ chmod +x "$archname"
+ echo Self-extractible archive \"$archname\" successfully created.
+fi
+rm -f "$tmpfile"
Property changes on: trunk/build/install/makeself.sh
___________________________________________________________________
Name: svn:eol-style
+ native