changeset 14742:f2a4196e5eea

* build-aux/bootstrap (gnulib_tool): Handle symlink timestamps better.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 16 May 2011 09:17:48 -0700
parents eb6ac457b650
children e2175e5db896
files ChangeLog build-aux/bootstrap
diffstat 2 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- a/build-aux/bootstrap
+++ b/build-aux/bootstrap
@@ -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 @@
         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
         /*) ;;