]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
Fix per-Makefile.am setting of -Werror.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 11 Apr 2010 17:56:21 +0000 (19:56 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 11 Apr 2010 17:57:07 +0000 (19:57 +0200)
Before this patch, 'AUTOMAKE_OPTIONS = -Werror' in one
Makefile.am would carry over to other Makefile.am files
treated afterwards by the same thread, causing inconsistent
and unstable exit status values.

* lib/Automake/Channels.pm (dup_channel_setup)
(drop_channel_setup): Save and restore the setting of
$warnings_are_errors.
* tests/werror3.test: New test.
* tests/Makefile.am: Adjust.
* NEWS: Update.

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

index cab8ce45a5071d41c5e05ce7b92d410fb9d06cab..64238757818d5e3ebdd927ba00b365e7aec386e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2010-04-11  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Fix per-Makefile.am setting of -Werror.
+       Before this patch, 'AUTOMAKE_OPTIONS = -Werror' in one
+       Makefile.am would carry over to other Makefile.am files
+       treated afterwards by the same thread, causing inconsistent
+       and unstable exit status values.
+       * lib/Automake/Channels.pm (dup_channel_setup)
+       (drop_channel_setup): Save and restore the setting of
+       $warnings_are_errors.
+       * tests/werror3.test: New test.
+       * tests/Makefile.am: Adjust.
+       * NEWS: Update.
+
 2010-04-11  Stefano Lattarini  <stefano.lattarini@gmail.com>
 
        Avoid possible false negatives in cond46.test.
diff --git a/NEWS b/NEWS
index 5af2439466d188cb2ef755573a031ab82375c459..fee7f83f225b24119fbbb240d095842ce517bac9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -31,6 +31,8 @@ Bugs fixed in 1.11.0a:
   - Several scripts as well as the parallel-tests testsuite driver now
     exit with the right exit status upon receiving a signal.
 
+  - A per-Makefile.am setting of -Werror does not carry over to the
+    handling of other Makefile.am files any more.
 \f
 New in 1.11:
 
index 223d8d203977c86f3eb95ba41d9b25a77224254e..050ba05fd026c19b21c9b3aeebe1a6cc623ad591 100644 (file)
@@ -710,8 +710,9 @@ entry, while C<drop_channel_setup ()> just deletes it.
 
 =cut
 
-use vars qw (@_saved_channels);
+use vars qw (@_saved_channels @_saved_werrors);
 @_saved_channels = ();
+@_saved_werrors = ();
 
 sub dup_channel_setup ()
 {
@@ -721,12 +722,14 @@ sub dup_channel_setup ()
       $channels_copy{$k1} = {%{$channels{$k1}}};
     }
   push @_saved_channels, \%channels_copy;
+  push @_saved_werrors, $warnings_are_errors;
 }
 
 sub drop_channel_setup ()
 {
   my $saved = pop @_saved_channels;
   %channels = %$saved;
+  $warnings_are_errors = pop @_saved_werrors;
 }
 
 =item C<buffer_messages (@types)>, C<flush_messages ()>
index 7e14b1c660cdd1d02744d18d0c7dca05ce38ec29..eb63337e58f834331a461c57dcf5b0e5ff8afe0e 100644 (file)
@@ -746,6 +746,7 @@ vtexi2.test \
 warnopts.test \
 werror.test \
 werror2.test \
+werror3.test \
 whoami.test \
 xsource.test \
 xz.test \
index 648966f643024e93d92eaac4cb3bda3f7333b715..58e7554720717e084d0ba9b48c7256e92ff7331e 100644 (file)
@@ -983,6 +983,7 @@ vtexi2.test \
 warnopts.test \
 werror.test \
 werror2.test \
+werror3.test \
 whoami.test \
 xsource.test \
 xz.test \
diff --git a/tests/werror3.test b/tests/werror3.test
new file mode 100755 (executable)
index 0000000..96b4ff3
--- /dev/null
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2010  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/>.
+
+# Make sure a per-Makefile.am -Werror setting is not carried over
+# to another Makefile.am.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in <<\END
+AC_CONFIG_FILES([sub/Makefile])
+AC_OUTPUT
+END
+
+mkdir sub
+cat >sub/Makefile.am <<\END
+AUTOMAKE_OPTIONS = -Werror
+END
+cat >Makefile.am <<\END
+VAR = foo
+VAR = bar
+END
+
+$ACLOCAL
+
+# The issue would not manifest with threaded execution.
+unset AUTOMAKE_JOBS || :
+AUTOMAKE_run 0 -Wno-error
+grep 'VAR multiply defined' stderr
+
+AUTOMAKE_JOBS=2
+export AUTOMAKE_JOBS
+AUTOMAKE_run 0 -Wno-error
+grep 'VAR multiply defined' stderr
+: