]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
Fix 'compile' script to not call mv when target equals source.
authorBruno Haible <bruno@clisp.org>
Tue, 6 Oct 2009 20:03:33 +0000 (22:03 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Tue, 6 Oct 2009 20:03:33 +0000 (22:03 +0200)
* lib/compile: Don't attempt to move the generated file to its
target destination when it is already at the target destination.
Avoids an mv failure with subdir-objects.
* tests/ccnoco3.test: New test.
* tests/Makefile.am: Adjust.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
ChangeLog
lib/compile
tests/Makefile.am
tests/Makefile.in
tests/ccnoco3.test [new file with mode: 0755]

index f6bd5079b0626e797c659a7cb29508e8d8dcb655..9e45e73b1bdb6f6d33697a4da9304a79f88b0473 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-10-06  Bruno Haible  <bruno@clisp.org>
+           Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix 'compile' script to not call mv when target equals source.
+       * lib/compile: Don't attempt to move the generated file to its
+       target destination when it is already at the target destination.
+       Avoids an mv failure with subdir-objects.
+       * tests/ccnoco3.test: New test.
+       * tests/Makefile.am: Adjust.
+
 2009-10-01  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
 
        Fix recommended way to run automake's test scripts with Zsh.
index ec64c6220266fb75d8c6b6e0e32492f5983f3472..c0096a7b563231c0c7ade728962574ec3b8df270 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2009-10-06.20; # UTC
 
 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
 # Foundation, Inc.
@@ -124,9 +124,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15
 ret=$?
 
 if test -f "$cofile"; then
-  mv "$cofile" "$ofile"
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
 elif test -f "${cofile}bj"; then
-  mv "${cofile}bj" "$ofile"
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
 fi
 
 rmdir "$lockdir"
index 62529a6b50dd633b02aca46de906bf9ab9b196bc..bab2ac319475741ced634d96b6ba451fb278761f 100644 (file)
@@ -103,6 +103,7 @@ canon5.test \
 canon-name.test \
 ccnoco.test \
 ccnoco2.test \
+ccnoco3.test \
 check.test \
 check2.test \
 check3.test \
index 570b76d1d2b751c904e4ab64ec7c0cb67d9776bc..02fa60ae3b1b5a77f0f23c5e39598db1f9bbd4bf 100644 (file)
@@ -337,6 +337,7 @@ canon5.test \
 canon-name.test \
 ccnoco.test \
 ccnoco2.test \
+ccnoco3.test \
 check.test \
 check2.test \
 check3.test \
diff --git a/tests/ccnoco3.test b/tests/ccnoco3.test
new file mode 100755 (executable)
index 0000000..2e9cd37
--- /dev/null
@@ -0,0 +1,81 @@
+#! /bin/sh
+# Copyright (C) 2001, 2002, 2008, 2009  Free Software Foundation, Inc.
+#
+# This program 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.
+#
+# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test to make sure `compile' doesn't call 'mv SRC SRC'.
+
+required=gcc
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+bin_PROGRAMS = wish
+wish_SOURCES = a.c
+END
+
+mkdir sub
+
+cat > a.c << 'END'
+#include <stdio.h>
+
+int main ()
+{
+  printf ("hi\n");
+}
+END
+
+cat > Mycomp << 'END'
+#!/bin/sh
+
+case " "$* in
+ *\ -c*\ -o* | *\ -o*\ -c*)
+    exit 1
+    ;;
+esac
+
+exec gcc "$@"
+END
+
+chmod +x Mycomp
+
+# Ignore user CFLAGS.
+CFLAGS=
+export CFLAGS
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --copy --add-missing
+
+mkdir build
+cd build
+
+# Make sure the compiler doesn't understand `-c -o'
+CC=`pwd`/../Mycomp
+export CC
+
+../configure
+$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
+cat stderr >&2
+grep 'mv.*the same file' stderr && Exit 1
+
+Exit 0