-
Yang Sheng authored
b=13876 i=sheng.yang, brian(llnl) Detect available autoconf version.
Yang Sheng authoredb=13876 i=sheng.yang, brian(llnl) Detect available autoconf version.
autogen.sh 3.48 KiB
#!/bin/bash
# taken from gnome-common/macros2/autogen.sh
compare_versions() {
ch_min_version=$1
ch_actual_version=$2
ch_status=0
IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="."
set $ch_actual_version
for ch_min in $ch_min_version; do
ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes
if [ -z "$ch_min" ]; then break; fi
if [ -z "$ch_cur" ]; then ch_status=1; break; fi
if [ $ch_cur -gt $ch_min ]; then break; fi
if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi
done
IFS="$ch_save_IFS"
return $ch_status
}
error_msg() {
echo "$cmd is $1. version $required is required to build Lustre."
if [ -e /usr/lib/autolustre/bin/$cmd ]; then
cat >&2 <<-EOF
You apparently already have Lustre-specific autoconf/make RPMs
installed on your system at /usr/lib/autolustre/share/$cmd.
Please set your PATH to point to those versions:
export PATH="/usr/lib/autolustre/bin:\$PATH"
EOF
else
cat >&2 <<-EOF
Sun provides RPMs which can be installed alongside your
existing autoconf/make RPMs, if you are nervous about
upgrading. See
http://downloads.lustre.org/public/tools/autolustre/README.autolustre
You may be able to download newer version from:
http://ftp.gnu.org/gnu/$tool/$tool-$required.tar.gz
EOF
fi
[ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <<EOF
or for RH9 systems you can use:
ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/autoconf-2.57-3.noarch.rpm
EOF
[ "$cmd" = "automake-1.7" -a "$required" = "1.7.8" ] && cat >&2 <<EOF
or for RH9 systems you can use:
ftp://fr2.rpmfind.net/linux/fedora/core/1/i386/os/Fedora/RPMS/automake-1.7.8-1.noarch.rpm
EOF
exit 1
}
check_version() {
local tool
local cmd
local required
local version
tool=$1
cmd=$2
required=$3
echo -n "checking for $cmd $required... "
if ! $cmd --version >/dev/null ; then
error_msg "missing"
fi
version=$($cmd --version | awk "/$tool \(GNU/ { print \$4 }")
echo "found $version"
if ! compare_versions "$required" "$version" ; then
error_msg "too old"
fi
}
echo "Checking for a complete tree..."
if [ -d kernel_patches ] ; then
# This is ldiskfs
REQUIRED_DIRS="build"
CONFIGURE_DIRS=""
else
REQUIRED_DIRS="build libcfs lnet lustre"
OPTIONAL_DIRS="snmp portals"
CONFIGURE_DIRS="libsysio lustre-iokit ldiskfs"
fi
for dir in $REQUIRED_DIRS ; do
if [ ! -d "$dir" ] ; then
cat >&2 <<EOF
Your tree seems to be missing $dir.
Please read README.lustrecvs for details.
EOF
exit 1
fi
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $PWD/$dir/autoconf"
done
# optional directories for Lustre
for dir in $OPTIONAL_DIRS; do
if [ -d "$dir" ] ; then
ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $PWD/$dir/autoconf"
fi
done
for AMVER in 1.7 1.8 1.9 1.10; do
[ "$(which automake-$AMVER 2> /dev/null)" ] && break
done
[ "$AMVER" = "1.10" ] && AMOPT="-W no-portability"
check_version automake automake-$AMVER "1.7.8"
check_version autoconf autoconf "2.57"
echo "Running aclocal-$AMVER $ACLOCAL_FLAGS..."
aclocal-$AMVER $ACLOCAL_FLAGS || exit 1
echo "Running autoheader..."
autoheader || exit 1
echo "Running automake-$AMVER..."
automake-$AMVER -a -c $AMOPT || exit 1
echo "Running autoconf..."
autoconf || exit 1
# Run autogen.sh in these directories
for dir in $CONFIGURE_DIRS; do
if [ -d $dir ] ; then
pushd $dir >/dev/null
echo "Running autogen for $dir..."
sh autogen.sh || exit $?
popd >/dev/null
fi
done