[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fix per-Makefile.am setting of -Werror.
From: |
Ralf Wildenhues |
Subject: |
Fix per-Makefile.am setting of -Werror. |
Date: |
Sun, 11 Apr 2010 20:16:04 +0200 |
User-agent: |
Mutt/1.5.20 (2009-10-28) |
Setting -Werror in a Makefile.am affects the handling of Makefile.am
files treated later by the same automake process (more precisely, the
same thread):
sub/Makefile.am:
AUTOMAKE_OPTIONS = -Werror
# no warnings happen in this file
Makefile.am:
AUTOMAKE_OPTIONS = -Wall
# redefined variable warning
VAR = 1
VAR = 2
AUTOMAKE_JOBS=2 automake # zero exit status
unset AUTOMAKE_JOBS; automake # nonzero
automake Makefile # zero because we see no -Werror
I'm pushing this fix to maint, for master and branch-1.11.
Thanks,
Ralf
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.
diff --git a/NEWS b/NEWS
index 5af2439..fee7f83 100644
--- 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.
New in 1.11:
diff --git a/lib/Automake/Channels.pm b/lib/Automake/Channels.pm
index 223d8d2..050ba05 100644
--- a/lib/Automake/Channels.pm
+++ b/lib/Automake/Channels.pm
@@ -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 = ();
address@hidden = ();
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 ()>
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7e14b1c..eb63337 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -746,6 +746,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
index 0000000..96b4ff3
--- /dev/null
+++ b/tests/werror3.test
@@ -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
+:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Fix per-Makefile.am setting of -Werror.,
Ralf Wildenhues <=