X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=autogen.sh;h=d87fbb6f525b443f93740d6e8cfbbfbd1b396e4b;hp=1fce0a455fc75dbe6868fadaace20be4c998bef7;hb=c9420061c26a910c3bd0fcf4d347c74a5edbdf3a;hpb=147839e23d49551ba61319b0812a3ef7e36cc80a diff --git a/autogen.sh b/autogen.sh index 1fce0a4..d87fbb6 100644 --- a/autogen.sh +++ b/autogen.sh @@ -1,9 +1,152 @@ #!/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 -exec bash build/autogen.sh $@ +# 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 + # 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 (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 + + local dist_id="$(lsb_release -is)" + local howto="" + howto() { + echo -e "To install $cmd, you can use the command:\n# $1" + } + case $dist_id in + Ubuntu|Debian) howto "apt-get install $cmd" ;; + CentOS|RedHat*|Fedora*) howto "yum install $cmd" ;; + SUSE*) howto "yast -i $cmd" ;; + *) cat <= $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..." +REQUIRED_DIRS="build libcfs lnet lustre" +OPTIONAL_DIRS="snmp portals" +CONFIGURE_DIRS="libsysio lustre-iokit ldiskfs" + +for dir in $REQUIRED_DIRS ; do + if [ ! -d "$dir" ] ; then + cat >&2 < /dev/null; then + found=true + break + fi +done + +if ! $found; then + cmd=automake required="1.9" error_msg "not found" + exit 1 +fi + +[ "${AMVER#1.}" -ge "10" ] && AMOPT="-W no-portability" +check_version automake automake-$AMVER "1.9" +check_version autoconf autoconf "2.57" + +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