summaryrefslogtreecommitdiff
path: root/qpid/cpp/qpid-autotools-install
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/qpid-autotools-install')
-rwxr-xr-xqpid/cpp/qpid-autotools-install224
1 files changed, 224 insertions, 0 deletions
diff --git a/qpid/cpp/qpid-autotools-install b/qpid/cpp/qpid-autotools-install
new file mode 100755
index 0000000000..dcd1c93902
--- /dev/null
+++ b/qpid/cpp/qpid-autotools-install
@@ -0,0 +1,224 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Written by Jim Meyering
+
+VERSION='2007-07-10 09:09' # UTC
+
+prog_name=`basename $0`
+die () { echo "$prog_name: $*" >&2; exit 1; }
+
+tarballs='
+ http://pkgconfig.freedesktop.org/releases/pkg-config-0.21.tar.gz
+ ftp://ftp.gnu.org/gnu/m4/m4-1.4.10.tar.gz
+ ftp://ftp.gnu.org/gnu/automake/automake-1.10.tar.gz
+ ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz
+ ftp://ftp.gnu.org/gnu/libtool/libtool-1.5.24.tar.gz
+'
+
+usage() {
+ echo >&2 "\
+Usage: $0 [OPTION]...
+Download, build, and install some tools.
+
+Options:
+ --prefix=PREFIX install tools under specified directory
+ --skip-check do not run "make check" (this can save 50+ min)
+ --help display this help and exit
+
+For example, to install programs into \$HOME/qpid-tools/bin, run this command:
+
+ $prog_name --prefix=\$HOME/qpid-tools
+
+If you've already verified that your system/environment can build working
+versions of these tools, you can make this script complete in just a
+minute or two (rather than about an hour if you let all "make check"
+tests run) by invoking it like this:
+
+ $prog_name --prefix=\$HOME/qpid-tools --skip-check
+
+"
+}
+
+# Get the listed tarballs into the current directory.
+get_sources()
+{
+ case `wget --help` in
+ *'--no-cache'*)
+ WGET_COMMAND='wget -nv --no-cache';;
+ *'--cache=on/off'*)
+ WGET_COMMAND='wget -nv --cache=off';;
+ *'--non-verbose'*)
+ WGET_COMMAND='wget -nv';;
+ *)
+ die 'no wget program found; please install it and try again';;
+ esac
+
+ # Download the each tar-ball along with its signature, if there is one.
+ pkgs=
+ for t in $(echo $tarballs); do
+ base=$(basename $t)
+ pkgs="$pkgs $base"
+ test -f $base || $WGET_COMMAND $t
+
+ # pkg-config has no .sig file.
+ case $base in pkg-config*) continue;; esac
+
+ test -f $base.sig || $WGET_COMMAND $t.sig
+ # Verify each signature.
+ gpg --quiet --verify --trust-model=always \
+ --trusted-key=32419B785D0CDCFC \
+ --trusted-key=3859C03B2E236E47 \
+ --trusted-key=B93F60C6B5C4CE13 \
+ --trusted-key=F382AE19F4850180 \
+ $base.sig > /dev/null 2>&1 \
+ || echo "info: not verifying GPG signature for $base" 1>&2
+ done
+
+ printf 'verifying package SHA1 checksums...' 1>&2
+ sha1sum -c --warn --status <<EOF || die "checksum mismatch"
+69f37c509a4757d747b6f4c091d209ab3984d62f autoconf-2.61.tar.gz
+69dc02b083b9a609b28fc4db129fef6a83ed2339 automake-1.10.tar.gz
+b4c994f1bf4a76d2b0c1d0a6f54d16598c15f3db libtool-1.5.24.tar.gz
+26d47c893722d683308f5d9fc172a11d5b2ad8a9 m4-1.4.10.tar.gz
+b2508ba8404cad46ec42f6f58cbca43ae59d715f pkg-config-0.21.tar.gz
+EOF
+ printf 'ok\n' 1>&2
+ echo $pkgs
+}
+
+#################################################################
+set -e
+
+# Parse options.
+
+make_check=yes
+prefix=
+
+for option
+do
+ case $option in
+ --help) usage; exit;;
+ --skip-check) make_check=no;;
+ --prefix=*) prefix=`expr "$option" : '--prefix=\(.*\)'`;;
+ *) die "$option: unknown option";;
+ esac
+done
+
+test -n "$prefix" \
+ || die "you must specify a --prefix"
+
+case $prefix in
+ /*) ;;
+ *) die 'invalid prefix: '"$prefix"': it must be an absolute name';;
+esac
+
+# Don't run as root.
+# Make sure id -u succeeds.
+my_uid=`id -u`
+test $? = 0 || {
+ echo "$0: cannot run \`id -u'" 1>&2
+ (exit 1); exit 1
+}
+test $my_uid = 0 && die "please don't run this program as root"
+
+# Ensure that prefix is not /usr/bin or /bin, /sbin, etc.
+case $prefix in
+ /bin|/sbin|/usr/bin|/usr/sbin)
+ die "don't set PREFIX to a system directory";;
+ *) ;;
+esac
+
+# Create a build directory, then cd into it for the rest....
+tmpdir=.build-auto-tools
+mkdir -p $tmpdir
+cd $tmpdir
+
+pkgs=$(get_sources)
+
+for pkg in $pkgs; do
+ echo building/installing $pkg...
+ dir=$(basename $pkg .tar.gz)
+ rm -rf dir
+ gzip -dc $pkg|tar xf -
+ cd $dir
+ ./configure CFLAGS=-O2 LDFLAGS=-s --prefix=$prefix > makerr-config 2>&1
+ make -j1 > makerr-build 2>&1
+ if test "$make_check" = yes; then
+ case $pkg in
+ automake*) expected_duration_minutes=40;;
+ autoconf*) expected_duration_minutes=15;;
+ # libtool*) expected_duration_minutes=3;;
+ *);;
+ esac
+ test -n "$expected_duration_minutes" \
+ && echo "running 'make check' for $pkg; NB: this can take over" \
+ "$expected_duration_minutes minutes"
+ case $pkg in
+ # In this package, the check-requires-private test fails.
+ # Change the Makefile so it skips that test.
+ pkg-config-0.21.tar.gz)
+ perl -pi.bak -e 's/check-requires-private //' check/Makefile;;
+
+ esac
+ make -j1 check > makerr-check 2>&1
+ fi
+ make -j1 install > makerr-install 2>&1
+ echo done at $(date +%Y-%m-%d.%T)
+ cd ..
+done
+
+# Without checks (and with existing tarballs), it takes just one minute.
+# Including all checks, it takes nearly an hour on an AMD64/3400+
+
+case $PKG_CONFIG_PATH in
+ $prefix/lib/pkgconfig:/usr/lib/pkgconfig)
+ echo 'Good! your PKG_CONFIG_PATH envvar is already set';;
+ *) cat <<EOF;;
+**************************************************************************
+Be sure that PKG_CONFIG_PATH is set in your environment, e.g.,
+PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib/pkgconfig
+**************************************************************************
+EOF
+esac
+
+case $PATH in
+ "$prefix/bin:"*) echo 'Good! your PATH is fine';;
+ *) cat <<EOF;;
+**************************************************************************
+Be sure that "$prefix/bin" is earlier in your PATH than /bin, /usr/bin, etc.
+**************************************************************************
+EOF
+esac
+
+cat <<EOF
+**************************************************************************
+You may want to remove the tool build directory:
+rm -rf $tmpdir
+**************************************************************************
+EOF
+
+## Local Variables:
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "VERSION='"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "' # UTC"
+## End: