X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=autogen.sh;h=d87fbb6f525b443f93740d6e8cfbbfbd1b396e4b;hp=d8ccf52fe4148b7258d090524632a13882f7b4f0;hb=3a84f1d934e471f2ca6fb4c68a0e674651adf73e;hpb=2ec4f8cc2c890edcd2199c92113438c8584b78b7 diff --git a/autogen.sh b/autogen.sh index d8ccf52..d87fbb6 100644 --- a/autogen.sh +++ b/autogen.sh @@ -1,98 +1,152 @@ -#!/bin/bash +#!/bin/sh + +# NOTE: Please avoid bashisms (bash specific syntax) in this script + +# install Lustre Git commit hooks by default - LU-2083 +for HOOK in commit-msg prepare-commit-msg; do + [ -e .git/hooks/$HOOK ] || ln -sf ../build/$HOOK .git/hooks/ +done # 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 + 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 + # remove letter suffixes + ch_cur=$(echo $1 | sed 's/[^0-9].*$//'); shift + 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 - CFS provides RPMs which can be installed alongside your - existing autoconf/make RPMs, if you are nervous about - upgrading. See - - ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre - - You may be able to download newer version from: - - http://ftp.gnu.org/gnu/$cmd/$cmd-$required.tar.gz - EOF + echo "$cmd is $1. Version $required (or higher) is"\ + " required to build Lustre." + + if [ ! -x /usr/bin/lsb_release ]; then + echo "lsb_release could not be found. "\ + "If it were available more help on how to resolve this" + echo "situation would be available." + exit 1 fi - [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <&2 </dev/null ; then - error_msg "missing" - fi - version=$($cmd --version | awk "BEGIN { IGNORECASE=1 } /$tool \(GNU $tool\)/ { print \$4 }") - echo "found $version" - if ! compare_versions "$required" "$version" ; then - error_msg "too old" - fi + 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 build -a -d portals -a -d lustre ] ; then - cat >&2 <&2 < /dev/null; then + found=true + break + fi +done + +if ! $found; then + cmd=automake required="1.9" error_msg "not found" + exit 1 fi -check_version automake automake-1.7 "1.7.8" +[ "${AMVER#1.}" -ge "10" ] && AMOPT="-W no-portability" + +check_version automake automake-$AMVER "1.9" check_version autoconf autoconf "2.57" -echo "Running aclocal..." -aclocal-1.7 -echo "Running autoheader..." -autoheader -echo "Running automake..." -automake-1.7 -a -c -echo "Running autoconf..." -autoconf +run_cmd() +{ + cmd="$@" + echo -n "Running $cmd" + eval $cmd + res=$? + if [ $res -ne 0 ]; then + echo " failed: $res" + echo "Aborting" + exit 1 + fi + echo +} + +export ACLOCAL="aclocal-$AMVER" +export AUTOMAKE="automake-$AMVER" + +run_cmd "$ACLOCAL $ACLOCAL_FLAGS" +run_cmd "autoheader" +run_cmd "$AUTOMAKE -a -c $AMOPT" +run_cmd autoconf + +# Run autogen.sh in these directories +PWD_SAVE=$PWD +for dir in $CONFIGURE_DIRS; do + if [ -d $dir ] ; then + cd $dir + echo "Running autogen for $dir..." + run_cmd "sh autogen.sh" + fi + cd $PWD_SAVE +done