]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
funclib.sh: simplify version comparison functions.
authorGary V. Vaughan <gary@gnu.org>
Mon, 28 Oct 2013 07:14:22 +0000 (20:14 +1300)
committerGary V. Vaughan <gary@gnu.org>
Mon, 28 Oct 2013 07:49:47 +0000 (20:49 +1300)
* gl/build-aux/funclib.sh (func_sort_ver): Much simplified.
(func_lt_ver): New function, return true if arguments are in
ascending order.
* gl/build-aux/bootstrap.in: Simplify with func_lt_ver.
* gl/build-aux/do-release-commit-and-tag.diff: Likewise.
* bootstrap: Regenerate.

Co-Authored-by: Paul Eggert <eggert@cs.ucla.edu>
Signed-off-by: Gary V. Vaughan <gary@gnu.org>
bootstrap
gl/build-aux/bootstrap.in
gl/build-aux/do-release-commit-and-tag.diff
gl/build-aux/funclib.sh

index 4b91a4ad10f4ced4c6242d4898e3d591c6642e1f..f238ca622de5e0dc8750e79bd747b602bdbc0dab 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -1322,37 +1322,21 @@ func_sort_ver ()
 {
     $debug_cmd
 
-    ver1=$1
-    ver2=$2
+    printf '%s\n%s\n' "$1" "$2" |
+    sort -t. -k1n -k1 -k2n -k2 -k3n -k3 -k4n -k4 -k5n -k5 -k6n -k6 -k7n -k7 -k8n -k8 -k9n -k9
+}
 
-    # Split on '.' and compare each component.
-    i=1
-    while :; do
-      p1=`echo "$ver1" |cut -d. -f$i`
-      p2=`echo "$ver2" |cut -d. -f$i`
-      if test ! "$p1"; then
-        echo "$1 $2"
-        break
-      elif test ! "$p2"; then
-        echo "$2 $1"
-        break
-      elif test ! "$p1" = "$p2"; then
-        if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison
-          echo "$2 $1"
-        elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison
-          echo "$1 $2"
-        else # numeric, then lexicographic comparison
-          lp=`printf "$p1\n$p2\n" |sort -n |tail -n1`
-          if test "$lp" = "$p2"; then
-            echo "$1 $2"
-          else
-            echo "$2 $1"
-          fi
-        fi
-        break
-      fi
-      i=`expr $i + 1`
-    done
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | sed 1q`
 }
 
 
@@ -4801,8 +4785,7 @@ delimited list of triples; 'program min-version url'."
 
         # Fail if a newer version than what we have is required.
         else
-          _G_newer=`func_sort_ver $_G_reqver $_G_instver |cut -d' ' -f2`
-          test "$_G_newer" != "$_G_instver" && {
+          func_lt_ver "$_G_reqver" "$_G_instver" || {
             func_error "\
   '$_G_app' version == $_G_instver is too old
   '$_G_app' version >= $_G_reqver is required"
index d91880d2f4d9dfbbfccb178d71882e280390b8d8..649899ad2ffb68fd31d9bb6c35fddefb3d3e3777 100755 (executable)
@@ -2421,8 +2421,7 @@ delimited list of triples; 'program min-version url'."
 
         # Fail if a newer version than what we have is required.
         else
-          _G_newer=`func_sort_ver $_G_reqver $_G_instver |cut -d' ' -f2`
-          test "$_G_newer" != "$_G_instver" && {
+          func_lt_ver "$_G_reqver" "$_G_instver" || {
             func_error "\
   '$_G_app' version == $_G_instver is too old
   '$_G_app' version >= $_G_reqver is required"
index ad1b40934ea6d3ae4c807864f1a208cbd1b2352f..1a8b29d1d8bfca59fba00b5283e4020c7c467a74 100644 (file)
@@ -1,5 +1,5 @@
---- gnulib/build-aux/do-release-commit-and-tag 2013-01-26 16:46:26.000000000 +1300
-+++ gl/build-aux/do-release-commit-and-tag     2013-10-26 15:42:36.000000000 +1300
+--- ./gnulib/build-aux/do-release-commit-and-tag       2013-01-26 16:46:26.000000000 +1300
++++ gl/build-aux/do-release-commit-and-tag     2013-10-28 20:21:38.000000000 +1300
 @@ -5,6 +5,9 @@
  # will serve to identify the release, so apply a signed tag to it as well.
  VERSION=2012-08-01.09 # UTC
@@ -10,7 +10,7 @@
  # Note: this is a bash script (could be zsh or dash)
  
  # Copyright (C) 2009-2013 Free Software Foundation, Inc.
-@@ -125,10 +128,9 @@
+@@ -125,10 +128,8 @@
    || die 'failed to determine previous version number from .prev-version'
  
  # Verify that $ver is sensible (> .prev-version).
@@ -18,9 +18,8 @@
 -  "$prev_ver:$ver:") ;;
 -  *) die "invalid version: $ver (<= $prev_ver)";;
 -esac
-+newer_ver=$(func_sort_ver $prev_ver $ver |cut -d' ' -f2)
-+test "$newer_ver" != "$ver" && \
-+  die "invalid version: $ver (<= $prev_ver)"
++func_lt_ver "$prev_ver" "$ver" \
++  || die "invalid version: $ver (<= $prev_ver)"
  
  case $type in
    alpha|beta|stable) ;;
index beb2aa47ec83a70e6ab5ad96dc601d429c9dd34b..aedc85cccda3da91b8a45d1a67d9e4e1e21edad0 100644 (file)
@@ -1312,37 +1312,21 @@ func_sort_ver ()
 {
     $debug_cmd
 
-    ver1=$1
-    ver2=$2
+    printf '%s\n%s\n' "$1" "$2" |
+    sort -t. -k1n -k1 -k2n -k2 -k3n -k3 -k4n -k4 -k5n -k5 -k6n -k6 -k7n -k7 -k8n -k8 -k9n -k9
+}
 
-    # Split on '.' and compare each component.
-    i=1
-    while :; do
-      p1=`echo "$ver1" |cut -d. -f$i`
-      p2=`echo "$ver2" |cut -d. -f$i`
-      if test ! "$p1"; then
-        echo "$1 $2"
-        break
-      elif test ! "$p2"; then
-        echo "$2 $1"
-        break
-      elif test ! "$p1" = "$p2"; then
-        if test "$p1" -gt "$p2" 2>/dev/null; then # numeric comparison
-          echo "$2 $1"
-        elif test "$p2" -gt "$p1" 2>/dev/null; then # numeric comparison
-          echo "$1 $2"
-        else # numeric, then lexicographic comparison
-          lp=`printf "$p1\n$p2\n" |sort -n |tail -n1`
-          if test "$lp" = "$p2"; then
-            echo "$1 $2"
-          else
-            echo "$2 $1"
-          fi
-        fi
-        break
-      fi
-      i=`expr $i + 1`
-    done
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | sed 1q`
 }