bootstrap: support a prereq of 'rpcgen -' on RHEL5
authorEric Blake <eblake@redhat.com>
Wed, 11 May 2011 17:21:01 +0000 (11:21 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 11 May 2011 17:27:57 +0000 (11:27 -0600)
On RHEL 5, 'rpcgen --version' spews usage to stderr with status 1,
rather than a version string to stdout with status 0.  But libvirt
merely requires a prereq of 'rpcgen -' - that is, it must exist,
but need not have a well-behaved --version.

* build-aux/bootstrap (check_versions): When no specific version
is required, merely check that the app produces an exit status
that indicates its existence.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
build-aux/bootstrap

index e26d2571071fccedbffb35eb337bd79d78d6300a..f4d78dd8880f4b3ce9a362aaa712cfca438d6d69 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2011-05-11  Eric Blake  <eblake@redhat.com>
 
+       bootstrap: support a prereq of 'rpcgen -' on RHEL5
+       * build-aux/bootstrap (check_versions): When no specific version
+       is required, merely check that the app produces an exit status
+       that indicates its existence.
+
        maint.mk: drop redundant check
        * top/maint.mk (sc_the_the): Delete; sc_prohibit_doubled_word does
        the same but better.
index d91611b4a4819b247b852066b80dbc729156295e..d32db57bf17797338dbdb7b14811cf0addb8a962 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Print a version string.
-scriptversion=2011-05-03.08; # UTC
+scriptversion=2011-05-11.17; # UTC
 
 # Bootstrap this package from checked-out sources.
 
@@ -425,17 +425,28 @@ check_versions() {
         GZIP) ;; # Do not use $GZIP:  it contains gzip options.
         *) eval "app=\${$appvar-$app}" ;;
     esac
-    inst_ver=$(get_version $app)
-    if [ ! "$inst_ver" ]; then
-      echo "$me: Error: '$app' not found" >&2
-      ret=1
-    elif [ ! "$req_ver" = "-" ]; then
-      latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
-      if [ ! "$latest_ver" = "$inst_ver" ]; then
-        echo "$me: Error: '$app' version == $inst_ver is too old" >&2
-        echo "       '$app' version >= $req_ver is required" >&2
+    if [ "$req_ver" = "-" ]; then
+      # Merely require app to exist; not all prereq apps are well-behaved
+      # so we have to rely on $? rather than get_version.
+      $app --version >/dev/null 2>&1
+      if [ 126 -le $? ]; then
+        echo "$me: Error: '$app' not found" >&2
         ret=1
       fi
+    else
+      # Require app to produce a new enough version string.
+      inst_ver=$(get_version $app)
+      if [ ! "$inst_ver" ]; then
+        echo "$me: Error: '$app' not found" >&2
+        ret=1
+      else
+        latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
+        if [ ! "$latest_ver" = "$inst_ver" ]; then
+          echo "$me: Error: '$app' version == $inst_ver is too old" >&2
+          echo "       '$app' version >= $req_ver is required" >&2
+          ret=1
+        fi
+      fi
     fi
   done