* aclocal.in (write_aclocal): Unlink `aclocal.m4' before
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 19 Mar 2006 05:09:11 +0000 (05:09 +0000)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 19 Mar 2006 05:09:11 +0000 (05:09 +0000)
writing into it, to break a symlinked file.
* tests/acloca20.test: New test.
* tests/Makefile.am: Updated.

ChangeLog
aclocal.in
tests/Makefile.am
tests/Makefile.in
tests/acloca20.test [new file with mode: 0755]

index 0ffb55fce15926bc80ae5405da7b77d49a4f7243..c31c4ea5e70c8a77bfa3fd1e6de4017341cfe193 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-03-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * aclocal.in (write_aclocal): Unlink `aclocal.m4' before
+       writing into it, to break a symlinked file.
+       * tests/acloca20.test: New test.
+       * tests/Makefile.am: Updated.
+
 2006-03-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        Allow package trees (packages with subpackages) to share
index 18d9c7d03c744316e05f7a8fd9d4d36ae25ba16f..a05ba72a69791b751fb0e6a2bd4058adc40581a9 100644 (file)
@@ -763,6 +763,10 @@ $output";
 
   if (!$dry_run)
     {
+      if (-e $output_file && !unlink $output_file)
+        {
+         fatal "could not remove `$output_file': $!";
+       }
       my $out = new Automake::XFile "> $output_file";
       print $out $output;
     }
index c5f826b2aaeafda8ef3831ffd75939231d450ea6..e984632ff8e3a32a8b57cb9d7ae2303b7c509d5e 100644 (file)
@@ -22,6 +22,7 @@ acloca16.test \
 acloca17.test \
 acloca18.test \
 acloca19.test \
+acloca20.test \
 acoutnoq.test \
 acoutpt.test \
 acoutpt2.test \
index 647ad3956fdc49ef6c692118af942332e00919cc..bb02d7643bbd64314760eeb4086025045fd3c3a6 100644 (file)
@@ -34,10 +34,10 @@ TESTS = aclibobj.test aclocal.test aclocal3.test aclocal4.test \
        aclocal5.test aclocal6.test aclocal7.test aclocal8.test \
        aclocal9.test acloca10.test acloca11.test acloca12.test \
        acloca13.test acloca14.test acloca15.test acloca16.test \
-       acloca17.test acloca18.test acloca19.test acoutnoq.test \
-       acoutpt.test acoutpt2.test acoutqnl.test acoutbs.test \
-       acsilent.test acsubst.test acsubst2.test all.test alloca.test \
-       alloca2.test alpha.test alpha2.test amassign.test \
+       acloca17.test acloca18.test acloca19.test acloca20.test \
+       acoutnoq.test acoutpt.test acoutpt2.test acoutqnl.test \
+       acoutbs.test acsilent.test acsubst.test acsubst2.test all.test \
+       alloca.test alloca2.test alpha.test alpha2.test amassign.test \
        ammissing.test ansi.test ansi2.test ansi3.test ansi3b.test \
        ansi4.test ansi5.test ansi6.test ansi7.test ansi8.test \
        ansi9.test ansi10.test ar.test ar2.test asm.test autohdr.test \
diff --git a/tests/acloca20.test b/tests/acloca20.test
new file mode 100755 (executable)
index 0000000..16b5192
--- /dev/null
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2006  Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Make sure aclocal does not write into symlinked aclocal.m4.
+
+. ./defs || exit 1
+
+set -e
+
+cat >foo.m4 <<'END'
+m4_define([FOO], [echo wrong foo])
+END
+
+cat >doit.in <<'END'
+@LN_S@ foo.m4 aclocal.m4
+END
+
+cat >configure.in <<'END'
+AC_INIT([acloca20], [1.0])
+AC_PROG_LN_S
+dnl FOO
+AC_CONFIG_FILES([doit], [chmod +x doit])
+AC_OUTPUT
+END
+
+$AUTOCONF
+./configure
+./doit
+grep 'wrong foo' aclocal.m4
+
+cat >acinclude.m4 <<'END'
+m4_define([FOO], [echo right foo])
+END
+sed 's/dnl //' <configure.in >configure.int
+mv -f configure.int configure.in
+
+$ACLOCAL
+$AUTOCONF
+./configure | grep 'right foo'
+grep 'wrong foo' foo.m4