Release GNU make 3.82 3.82
authorPaul Smith <psmith@gnu.org>
Wed, 28 Jul 2010 05:39:50 +0000 (05:39 +0000)
committerPaul Smith <psmith@gnu.org>
Wed, 28 Jul 2010 05:39:50 +0000 (05:39 +0000)
- Update tests for Solaris bizarre-ness
- Update files for release

ChangeLog
NEWS
configure.in
tests/ChangeLog
tests/scripts/targets/POSIX
tests/scripts/variables/SHELL
tests/test_driver.pl

index 96c162e47a2b58a4981e27b6fedfa8c08b82385a..d135d1cddbe57a7c1070b8e4eb59f2ac66600369 100644 (file)
--- 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
 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 ee14e9e4dafafd01ffc3acd2eb90f6cb069e8952..523c9a7f4b049116dff820eabf595378bb41be98 100644 (file)
--- 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.
 \f
-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.
 
 \f
 Version 3.81
index b0dd44bde259e6d4b95b97244bbded1a7d9cac52..f33cb34934b47da0a07be77126eb6821d0c32b35 100644 (file)
@@ -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$]])
index 66682acf42aef31f7bf5997bb3c9acf8bfed4132..d036568e10430d67427a371510abaa06f1e0912d 100644 (file)
@@ -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.
index 1b57448d358ca96a0867649160bcfa8804dd8c56..9c30e1817cc74a47e8cf156be96a2480d54b92f7 100644 (file)
@@ -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;
index 0028d9f51622184de87b4acdc533fab43f90034e..7b7e7feff91c56f05f085f14b1f5a2771c64475e 100644 (file)
@@ -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;
index dc0c29ae8f9b5058f6b72a3a894872037504804a..06e8a6a1a4fcca8eee9b4a6caeacedb007b10668 100644 (file)
@@ -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 ($@) {