* build-aux/bootstrap (gnulib_tool): Handle symlink timestamps better.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 16 May 2011 16:17:48 +0000 (09:17 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 16 May 2011 16:18:26 +0000 (09:18 -0700)
ChangeLog
build-aux/bootstrap

index c2a67da..2fb40f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-05-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * build-aux/bootstrap (gnulib_tool): Handle symlink timestamps better.
+
 2011-05-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        intprops-tests: new module
index d32db57..522ac70 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Print a version string.
-scriptversion=2011-05-11.17; # UTC
+scriptversion=2011-05-16.16; # UTC
 
 # Bootstrap this package from checked-out sources.
 
@@ -670,10 +670,18 @@ symlink_to_dir()
         cp -fp "$src" "$dst"
       }
     else
+      # Leave any existing symlink alone, if it already points to the source,
+      # so that broken build tools that care about symlink times
+      # aren't confused into doing unnecessary builds.  Conversely, if the
+      # existing symlink's time stamp is older than the source, make it afresh,
+      # so that broken tools aren't confused into skipping needed builds.  See
+      # <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00326.html>.
       test -h "$dst" &&
       src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
       dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
-      test "$src_i" = "$dst_i" || {
+      test "$src_i" = "$dst_i" &&
+      both_ls=`ls -dt "$src" "$dst"` &&
+      test "X$both_ls" = "X$dst$nl$src" || {
         dot_dots=
         case $src in
         /*) ;;