All pastes #243994 Raw Edit

Mine

public text v1 · immutable
#243994 ·published 2006-11-09 03:46 UTC
rendered paste body
Index: bootstrap.sh
===================================================================
--- bootstrap.sh	(revision 2017)
+++ bootstrap.sh	(working copy)
@@ -14,28 +14,75 @@
 #
 #*******************************************
 
-# Check for required version and die if unhappy
-libtoolize --version | grep 1.5.20 > /dev/null || 
-  (
-	echo You have the wrong, or missing version of libtool.  
-	echo The minumum required version is 1.5.20 and is available from:
-	echo http://www.gnu.org/software/libtool/
-  ) 
+debug ()
+{
+	# Outputs debug statments if DEBUG var is set
+	if [ ! -z "$DEBUG" ]; then
+		echo "DEBUG: $1"
+	fi
+}
+version_compare()
+{
+	# Checks a command is found and the version is high enough
+	PROGRAM=$1
+	MAJOR=$2
+	MINOR=$3
+	MICRO=$4
+	test -z "$MAJOR" && MAJOR=0
+	test -z "$MINOR" && MINOR=0
+	test -z "$MICRO" && MICRO=0
 
-automake --version | grep 1.9.6 > /dev/null ||
-  (
-	echo You have the wrong, or missing version of automake.  
-	echo The minumum required version is 1.9.6 and is available from:
-	echo http://www.gnu.org/software/automake/
-  )
+	debug "Checking $PROGRAM >= $MAJOR.$MINOR.$MICRO"
 
-autoconf --version | grep 2.59 > /dev/null ||
-  (
-	echo You have the wrong, or missing version of autoconf. 
-	echo The minumum required version is 2.59 and is available from:
-	echo http://www.gnu.org/software/autoconf/
-  )
+	COMMAND=`/bin/which $PROGRAM`
+	if [ -z $COMMAND ]; then
+		echo "$PROGRAM is required and was not found."
+		return 1
+	else
+		debug "Found $COMMAND"
+	fi
 
+	INS_VER=`$COMMAND --version | head -1 | sed 's/[^0-9]*//' | cut -d' ' -f1`
+	INS_MAJOR=`echo $INS_VER | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
+	INS_MINOR=`echo $INS_VER | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
+	INS_MICRO=`echo $INS_VER | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
+	test -z "$INS_MAJOR" && INS_MAJOR=0
+	test -z "$INS_MINOR" && INS_MINOR=0
+	test -z "$INS_MICRO" && INS_MICRO=0
+	debug "Installed version: $INS_VER"
+
+	if [ "$INS_MAJOR" -gt "$MAJOR" ]; then
+		debug "MAJOR: $INS_MAJOR > $MAJOR"
+		return 0
+	elif [ "$INS_MAJOR" -eq "$MAJOR" ]; then
+		debug "MAJOR: $INS_MAJOR = $MAJOR"
+		if [ "$INS_MINOR" -gt "$MINOR" ]; then
+			debug "MINOR: $INS_MINOR > $MINOR"
+			return 0
+		elif [ "$INS_MINOR" -eq "$MINOR" ]; then
+			if [ "$INS_MICRO" -ge "$MICRO" ]; then
+				debug "MICRO: $INS_MICRO >= $MICRO"
+				return 0
+			else
+				debug "MICRO: $INS_MICRO < $MICRO"
+			fi
+		else
+			debug "MINOR: $INS_MINOR < $MINOR"
+		fi
+	else
+		debug "MAJOR: $INS_MAJOR < $MAJOR"
+	fi
+
+	echo "You have the wrong version of $PROGRAM. The minimum required version is $MAJOR.$MINOR.$MICRO"
+	echo "    and the version installed is $INS_MAJOR.$INS_MINOR.$INS_MICRO ($COMMAND)."
+	return 1
+}
+
+# Check for required version and die if unhappy
+version_compare libtoolize 1 5 20 || exit 1
+version_compare automake 1 9 6 || exit 1
+version_compare autoconf 2 59 || exit 1
+
 libtoolize --copy --force --ltdl
 aclocal -I acmacros
 autoheader --force