Whamcloud - gitweb
LU-3544 nfs: writing to new files will return ENOENT
[fs/lustre-release.git] / autogen.sh
index d8ccf52..fd09398 100644 (file)
@@ -1,98 +1,62 @@
-#!/bin/bash
+#!/bin/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
-        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
-               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
-       fi
-       [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <<EOF
-
-or for RH9 systems you can use:
+# NOTE: Please avoid bashisms (bash specific syntax) in this script
 
-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
+# die a horrible death.  All output goes to stderr.
+#
+die()
+{
+       echo "bootstrap failure:  $*"
+       echo Aborting
        exit 1
-}
+} 1>&2
 
-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 "BEGIN { IGNORECASE=1 } /$tool \(GNU $tool\)/ { print \$4 }")
-    echo "found $version"
-    if ! compare_versions "$required" "$version" ; then
-       error_msg "too old"
-    fi
+run_cmd()
+{
+       echo -n "Running $*"
+       eval "$@" || die "command exited with code $?"
+       echo
 }
 
+# install Lustre Git commit hooks by default - LU-2083
+for HOOK in commit-msg prepare-commit-msg; do
+       if [ -d .git/hooks -a ! -e .git/hooks/$HOOK ]; then
+               ln -sf ../../build/$HOOK .git/hooks/
+       fi
+done
+
 echo "Checking for a complete tree..."
-if ! [ -d build -a -d portals -a -d lustre ] ; then
-    cat >&2 <<EOF
-    This seems to be an incomplete checkout.  Please read
-    README.lustrecvs for details.
-EOF
-fi
+REQUIRED_DIRS="libcfs lnet lustre"
+OPTIONAL_DIRS="snmp portals"
+CONFIGURE_DIRS="libsysio lustre-iokit ldiskfs"
+
+for dir in $REQUIRED_DIRS ; do
+       test -d "$dir" || \
+               die "Your tree seems to be missing $dir.
+Please read README.lustrecvs for details."
+
+       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
 
-check_version automake automake-1.7 "1.7.8"
-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
+PWD_SAVE=$PWD
 
+run_cmd "aclocal -I $PWD/config $ACLOCAL_FLAGS"
+run_cmd "autoheader"
+run_cmd "automake -a -c"
+run_cmd autoconf
+
+# bootstrap in these directories
+for dir in $CONFIGURE_DIRS; do
+       if [ -d $dir ] ; then
+               cd $dir
+               echo "bootstrapping in $dir..."
+               run_cmd "sh autogen.sh"
+       fi
+       cd $PWD_SAVE
+done