summaryrefslogtreecommitdiffstats
path: root/bin/install-scons.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/install-scons.sh')
-rw-r--r--bin/install-scons.sh176
1 files changed, 176 insertions, 0 deletions
diff --git a/bin/install-scons.sh b/bin/install-scons.sh
new file mode 100644
index 0000000..50c1cce
--- /dev/null
+++ b/bin/install-scons.sh
@@ -0,0 +1,176 @@
+#!/bin/sh
+#
+# A script for unpacking and installing different historic versions of
+# SCons in a consistent manner for side-by-side development testing.
+#
+# This abstracts the changes we've made to the SCons setup.py scripts in
+# different versions so that, no matter what version is specified, it ends
+# up install the necessary script(s) and library into version-specific
+# names that won't interfere with other things.
+#
+# We expect to extract the .tar.gz files from a Downloads subdirectory
+# in the current directory.
+#
+# Note that this script cleans up after itself, removing the extracted
+# directory in which we do the build.
+#
+# This was written for a Linux system (specifically Ubuntu) but should
+# be reasonably generic to any POSIX-style system with a /usr/local
+# hierarchy.
+
+USAGE="\
+Usage: $0 [-ahnq] [-d DIR] [-p PREFIX] [VERSION ...]
+"
+
+PRINT="echo"
+EXECUTE="eval"
+
+DOWNLOADS=Downloads
+DOWNLOADS_URL=http://downloads.sourceforge.net/scons
+SUDO=sudo
+PREFIX=/usr/local
+
+while getopts "ad:hnq" FLAG; do
+ case ${FLAG} in
+ a )
+ ALL="1"
+ ;;
+ d )
+ DOWNLOADS="${OPTARG}"
+ ;;
+ h )
+ echo "${USAGE}"
+ exit 0
+ ;;
+ n )
+ EXECUTE=":"
+ ;;
+ p )
+ PREFIX="${OPTARG}"
+ ;;
+ q )
+ PRINT=":"
+ ;;
+ * )
+ echo "$0: unknown option ${FLAG}; use -h for help." >&2
+ exit 1
+ ;;
+ esac
+done
+
+shift `expr ${OPTIND} - 1`
+
+VERSIONS="$*"
+
+if test "X${ALL}" != "X"; then
+ if test "${VERSIONS}"; then
+ msg="$0: -a and version arguments both specified on the command line"
+ echo "${msg}" >&2
+ exit 1
+ fi
+ VERSIONS="
+ 0.01
+ 0.02
+ 0.03
+ 0.04
+ 0.05
+ 0.06
+ 0.07
+ 0.08
+ 0.09
+ 0.10
+ 0.11
+ 0.12
+ 0.13
+ 0.14
+ 0.90
+ 0.91
+ 0.92
+ 0.93
+ 0.94
+ 0.94.1
+ 0.95
+ 0.95.1
+ 0.96
+ 0.96.1
+ 0.96.90
+ 0.96.91
+ 0.96.92
+ 0.96.93
+ 0.96.94
+ 0.96.95
+ 0.96.96
+ 0.97
+ 0.97.0d20070809
+ 0.97.0d20070918
+ 0.97.0d20071212
+ "
+fi
+
+Command()
+{
+ ${PRINT} "$*"
+ ARGS=`echo "$*" | sed 's/\\$/\\\\$/'`
+ ${EXECUTE} "$*"
+}
+
+for VERSION in $VERSIONS; do
+ SCONS=scons-${VERSION}
+
+ TAR_GZ=${SCONS}.tar.gz
+ if test ! -f ${DOWNLOADS}/${TAR_GZ}; then
+ if test ! -d ${DOWNLOADS}; then
+ Command mkdir ${DOWNLOADS}
+ fi
+ Command "( cd ${DOWNLOADS} && wget ${DOWNLOADS_URL}/${TAR_GZ} )"
+ fi
+
+ Command tar zxf ${DOWNLOADS}/${TAR_GZ}
+
+ (
+ Command cd ${SCONS}
+
+ case ${VERSION} in
+ 0.0[123456789] | 0.10 )
+ # 0.01 through 0.10 install /usr/local/bin/scons and
+ # /usr/local/lib/scons. The "scons" script knows how to
+ # look up the library in a version-specific directory, but
+ # we have to move both it and the library directory into
+ # the right version-specific name by hand.
+ Command python setup.py build
+ Command ${SUDO} python setup.py install --prefix=${PREFIX}
+ Command ${SUDO} mv ${PREFIX}/bin/scons ${PREFIX}/bin/scons-${VERSION}
+ Command ${SUDO} mv ${PREFIX}/lib/scons ${PREFIX}/lib/scons-${VERSION}
+ ;;
+ 0.1[1234] | 0.90 )
+ # 0.11 through 0.90 install /usr/local/bin/scons and
+ # /usr/local/lib/scons-${VERSION}. We just need to move
+ # the script to a version-specific name.
+ Command python setup.py build
+ Command ${SUDO} python setup.py install --prefix=${PREFIX}
+ Command ${SUDO} mv ${PREFIX}/bin/scons ${PREFIX}/bin/scons-${VERSION}
+ ;;
+ 0.9[123456] | 0.9[456].1 | 0.96.90 )
+ # 0.91 through 0.96.90 install /usr/local/bin/scons,
+ # /usr/local/bin/sconsign and /usr/local/lib/scons-${VERSION}.
+ # We need to move both scripts to version-specific names.
+ Command python setup.py build
+ Command ${SUDO} python setup.py install --prefix=${PREFIX}
+ Command ${SUDO} mv ${PREFIX}/bin/scons ${PREFIX}/bin/scons-${VERSION}
+ Command ${SUDO} mv ${PREFIX}/bin/sconsign ${PREFIX}/bin/sconsign-${VERSION}
+ if test -d ${PREFIX}/lib/scons; then
+ Command ${SUDO} mv ${PREFIX}/lib/scons ${PREFIX}/lib/scons-${VERSION}
+ fi
+ ;;
+ * )
+ # Versions from 0.96.91 and later (through at least 0.97)
+ # support what we want with a --no-scons-script option.
+ Command python setup.py build
+ Command ${SUDO} python setup.py install --prefix=${PREFIX} --no-scons-script
+ ;;
+ esac
+
+ ${PRINT} cd ..
+ )
+ Command rm -rf ${SCONS}
+done