summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2010-07-28 05:39:50 +0000
committerPaul Smith <psmith@gnu.org>2010-07-28 05:39:50 +0000
commit95f1a32d27eef91a8a037522467d7060e7da2624 (patch)
tree5425627c23c80a78e77fbc4f6d51b08c5bad1874
parent59691939f93130491768297080773d91aaa3a3d0 (diff)
downloadmake-3.82.tar.gz
Release GNU make 3.823.82
- Update tests for Solaris bizarre-ness - Update files for release
-rw-r--r--ChangeLog13
-rw-r--r--NEWS100
-rw-r--r--configure.in2
-rw-r--r--tests/ChangeLog8
-rw-r--r--tests/scripts/targets/POSIX27
-rw-r--r--tests/scripts/variables/SHELL22
-rw-r--r--tests/test_driver.pl2
7 files changed, 107 insertions, 67 deletions
diff --git a/ChangeLog b/ChangeLog
index 96c162e..d135d1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-07-28 Paul Smith <psmith@gnu.org>
+
+ Version 3.82 released.
+
+ * configure.in: Change release version.
+ * NEWS: Change the date.
+
+ * read.c (parse_file_seq): Remove GLOB_NOSORT for
+ backward-compatibility. We'll add it back in next release.
+ * NEWS: Note it.
+
2010-07-24 Eli Zaretskii <eliz@gnu.org>
* job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
@@ -1643,7 +1654,7 @@
2005-12-12 Paul D. Smith <psmith@gnu.org>
* make.1: Fix some display errors and document all existing options.
- Patch provided by Mike Frysinger <vapier@gentoo.org>.
+ Patch by Mike Frysinger <vapier@gentoo.org>.
2005-12-11 Paul D. Smith <psmith@gnu.org>
diff --git a/NEWS b/NEWS
index ee14e9e..523c9a7 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
GNU make NEWS -*-indented-text-*-
History of user-visible changes.
- 19 July 2010
+ 28 July 2010
See the end of this file for copyrights and conditions.
@@ -9,11 +9,23 @@ manual, which is contained in this distribution as the file doc/make.texi.
See the README file and the GNU make manual for instructions for
reporting bugs.
-Version 3.81.91
+Version 3.82
+
+A complete list of bugs fixed in this version is available here:
+
+http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
* Compiling GNU make now requires a conforming ISO C 1989 compiler and
standard runtime library.
+* WARNING: Future backward-incompatibility!
+ Wildcards are not documented as returning sorted values, but up to and
+ including this release the results have been sorted and some makefiles are
+ apparently depending on that. In the next release of GNU make, for
+ performance reasons, we may remove that sorting. If your makefiles
+ require sorted results from wildcard expansions, use the $(sort ...)
+ function to request it explicitly.
+
* WARNING: Backward-incompatibility!
The POSIX standard for make was changed in the 2008 version in a
fundamentally incompatible way: make is required to invoke the shell as if
@@ -21,7 +33,8 @@ Version 3.81.91
have been written to conform to the original text of the standard, the
default behavior of GNU make remains to invoke the shell with simply '-c'.
However, any makefile specifying the .POSIX special target will follow the
- new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS below.
+ new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS
+ below.
* WARNING: Backward-incompatibility!
The '$?' variable now contains all prerequisites that caused the target to
@@ -31,12 +44,12 @@ Version 3.81.91
* WARNING: Backward-incompatibility!
As a result of parser enhancements, three backward-compatibility issues
exist: first, a prerequisite containing an "=" cannot be escaped with a
- backslash any longer. You must create a variable containing an "=" and use
- that variable in the prerequisite. Second, variable names can no longer
- contain whitespace, unless you put the whitespace in a variable and use the
- variable. Third, in previous versions of make it was sometimes not flagged
- as an error for explicit and pattern targets to appear in the same rule.
- Now this is always reported as an error.
+ backslash any longer. You must create a variable containing an "=" and
+ use that variable in the prerequisite. Second, variable names can no
+ longer contain whitespace, unless you put the whitespace in a variable and
+ use the variable. Third, in previous versions of make it was sometimes
+ not flagged as an error for explicit and pattern targets to appear in the
+ same rule. Now this is always reported as an error.
* WARNING: Backward-incompatibility!
The pattern-specific variables and pattern rules are now applied in the
@@ -48,57 +61,58 @@ Version 3.81.91
* WARNING: Backward-incompatibility!
The library search behavior has changed to be compatible with the standard
- linker behavior. Prior to this version for prerequisites specified using the
- -lfoo syntax make first searched for libfoo.so in the current directory,
- vpath directories, and system directories. If that didn't yield a match,
- make then searched for libfoo.a in these directories. Starting with this
- version make searches first for libfoo.so and then for libfoo.a in each of
- these directories in order.
+ linker behavior. Prior to this version for prerequisites specified using
+ the -lfoo syntax make first searched for libfoo.so in the current
+ directory, vpath directories, and system directories. If that didn't yield
+ a match, make then searched for libfoo.a in these directories. Starting
+ with this version make searches first for libfoo.so and then for libfoo.a
+ in each of these directories in order.
* New command line option: --eval=STRING causes STRING to be evaluated as
- makefile syntax (akin to using the $(eval ...) function). The evaluation is
- performed after all default rules and variables are defined, but before any
- makefiles are read.
+ makefile syntax (akin to using the $(eval ...) function). The evaluation
+ is performed after all default rules and variables are defined, but before
+ any makefiles are read.
* New special variable: .RECIPEPREFIX allows you to reset the recipe
- introduction character from the default (TAB) to something else. The first
- character of this variable value is the new recipe introduction character.
- If the variable is set to the empty string, TAB is used again. It can be
- set and reset at will; recipes will use the value active when they were
- first parsed. To detect this feature check the value of $(.RECIPEPREFIX).
-
-* New special variable: .SHELLFLAGS allows you to change the options passed to
- the shell when it invokes recipes. By default the value will be "-c" (or
- "-ec" if .POSIX is set).
-
-* New special target: .ONESHELL instructs make to invoke a single instance of
- the shell and provide it with the entire recipe, regardless of how many
+ introduction character from the default (TAB) to something else. The
+ first character of this variable value is the new recipe introduction
+ character. If the variable is set to the empty string, TAB is used again.
+ It can be set and reset at will; recipes will use the value active when
+ they were first parsed. To detect this feature check the value of
+ $(.RECIPEPREFIX).
+
+* New special variable: .SHELLFLAGS allows you to change the options passed
+ to the shell when it invokes recipes. By default the value will be "-c"
+ (or "-ec" if .POSIX is set).
+
+* New special target: .ONESHELL instructs make to invoke a single instance
+ of the shell and provide it with the entire recipe, regardless of how many
lines it contains. As a special feature to allow more straightforward
- conversion of makefiles to use .ONESHELL, any recipe line control characters
- ('@', '+', or '-') will be removed from the second and subsequent recipe
- lines. This happens _only_ if the SHELL value is deemed to be a standard
- POSIX-style shell. If not, then no interior line control characters are
- removed (as they may be part of the scripting language used with the
- alternate SHELL).
+ conversion of makefiles to use .ONESHELL, any recipe line control
+ characters ('@', '+', or '-') will be removed from the second and
+ subsequent recipe lines. This happens _only_ if the SHELL value is deemed
+ to be a standard POSIX-style shell. If not, then no interior line control
+ characters are removed (as they may be part of the scripting language used
+ with the alternate SHELL).
* New variable modifier 'private': prefixing a variable assignment with the
modifier 'private' suppresses inheritance of that variable by
prerequisites. This is most useful for target- and pattern-specific
variables.
-* New make directive: 'undefine' allows you to undefine a variable so
- that it appears as if it was never set. Both $(flavor) and $(origin)
- functions will return 'undefined' for such a variable. To detect this
- feature search for 'undefine' in the .FEATURES special variable.
+* New make directive: 'undefine' allows you to undefine a variable so that
+ it appears as if it was never set. Both $(flavor) and $(origin) functions
+ will return 'undefined' for such a variable. To detect this feature search
+ for 'undefine' in the .FEATURES special variable.
* The parser for variable assignments has been enhanced to allow multiple
modifiers ('export', 'override', 'private') on the same line as variables,
including define/endef variables, and in any order. Also, it is possible
to create variables and targets named as these modifiers.
-* The 'define' make directive now allows a variable assignment operator after
- the variable name, to allow for simple, conditional, or appending multi-line
- variable assignment.
+* The 'define' make directive now allows a variable assignment operator
+ after the variable name, to allow for simple, conditional, or appending
+ multi-line variable assignment.
Version 3.81
diff --git a/configure.in b/configure.in
index b0dd44b..f33cb34 100644
--- a/configure.in
+++ b/configure.in
@@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([GNU make],[3.81.91],[bug-make@gnu.org])
+AC_INIT([GNU make],[3.82],[bug-make@gnu.org])
AC_PREREQ(2.59)
AC_REVISION([[$Id$]])
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 66682ac..d036568 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-28 Paul Smith <psmith@gnu.org>
+
+ * scripts/targets/POSIX: Compatibility issues with Solaris (and
+ Tru64?); "false" returns different exit codes, and set -x shows
+ output with extra whitespace. Run the commands by hand first to
+ find out what the real shell would do, then compare what make does.
+ * scripts/variables/SHELL: Ditto.
+
2010-07-12 Paul Smith <psmith@gnu.org>
* test_driver.pl: Add a new $perl_name containing the path to Perl.
diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX
index 1b57448..9c30e18 100644
--- a/tests/scripts/targets/POSIX
+++ b/tests/scripts/targets/POSIX
@@ -6,23 +6,28 @@ $details = "";
# Ensure turning on .POSIX enables the -e flag for the shell
-# We can't just use "false" because on different systems it provides a
-# different exit code.
-
-run_make_test(q!
+# We can't assume the exit value of "false" because on different systems it's
+# different.
+
+my $script = 'false; true';
+my $flags = '-ec';
+my $out = `/bin/sh $flags '$script' 2>&1`;
+my $err = $? >> 8;
+run_make_test(qq!
.POSIX:
-all: ; @r() { return 1; }; r; true
+all: ; \@$script
!,
- '', "#MAKE#: *** [all] Error 1\n", 512);
+ '', "#MAKE#: *** [all] Error $err\n", 512);
# User settings must override .POSIX
-
-run_make_test(q!
-.SHELLFLAGS = -xc
+$flags = '-xc';
+$out = `/bin/sh $flags '$script' 2>&1`;
+run_make_test(qq!
+.SHELLFLAGS = $flags
.POSIX:
-all: ; @r() { return 1; }; r; true
+all: ; \@$script
!,
- '', "+ r\n+ return 1\n+ true\n");
+ '', $out);
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL
index 0028d9f..7b7e7fe 100644
--- a/tests/scripts/variables/SHELL
+++ b/tests/scripts/variables/SHELL
@@ -58,27 +58,29 @@ one two:;@echo "$@: $(SHELL) $$SHELL"
# Test .SHELLFLAGS
-# We can't assume the value here: on Solaris for example, every line printed
+# We don't know the output here: on Solaris for example, every line printed
# by the shell in -x mode has a trailing space (!!)
-my $script = 'true';
-my $out = `/bin/sh -xc '$script' 2>&1`;
+my $script = 'true; true';
+my $flags = '-xc';
+my $out = `/bin/sh $flags '$script' 2>&1`;
run_make_test(qq!
-.SHELLFLAGS = -xc
+.SHELLFLAGS = $flags
all: ; \@$script
!,
'', $out);
# We can't just use "false" because on different systems it provides a
-# different exit code.
-
-my $script = 'r() { return 1; }; true; r; true';
-my $out = `/bin/sh -xec '$script' 2>&1`;
+# different exit code--once again Solaris: false exits with 255 not 1
+$script = 'true; false; true';
+$flags = '-xec';
+$out = `/bin/sh $flags '$script' 2>&1`;
+my $err = $? >> 8;
run_make_test(qq!
-.SHELLFLAGS = -xec
+.SHELLFLAGS = $flags
all: ; \@$script
!,
- '', "$out#MAKE#: *** [all] Error 1\n", 512);
+ '', "$out#MAKE#: *** [all] Error $err\n", 512);
1;
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index dc0c29a..06e8a6a 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -802,7 +802,7 @@ sub _run_command
eval {
local $SIG{ALRM} = sub { die "timeout\n"; };
alarm $test_timeout;
- $code = system @_;
+ $code = system(@_);
alarm 0;
};
if ($@) {