mirror of
https://github.com/mirror/make.git
synced 2025-03-27 20:40:35 +08:00
Release GNU make 3.82
- Update tests for Solaris bizarre-ness - Update files for release
This commit is contained in:
parent
59691939f9
commit
95f1a32d27
13
ChangeLog
13
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>
|
2010-07-24 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
* job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
|
* job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
|
||||||
@ -1643,7 +1654,7 @@
|
|||||||
2005-12-12 Paul D. Smith <psmith@gnu.org>
|
2005-12-12 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* make.1: Fix some display errors and document all existing options.
|
* 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>
|
2005-12-11 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
96
NEWS
96
NEWS
@ -1,6 +1,6 @@
|
|||||||
GNU make NEWS -*-indented-text-*-
|
GNU make NEWS -*-indented-text-*-
|
||||||
History of user-visible changes.
|
History of user-visible changes.
|
||||||
19 July 2010
|
28 July 2010
|
||||||
|
|
||||||
See the end of this file for copyrights and conditions.
|
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
|
See the README file and the GNU make manual for instructions for
|
||||||
reporting bugs.
|
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
|
* Compiling GNU make now requires a conforming ISO C 1989 compiler and
|
||||||
standard runtime library.
|
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!
|
* WARNING: Backward-incompatibility!
|
||||||
The POSIX standard for make was changed in the 2008 version in a
|
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
|
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
|
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'.
|
default behavior of GNU make remains to invoke the shell with simply '-c'.
|
||||||
However, any makefile specifying the .POSIX special target will follow the
|
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!
|
* WARNING: Backward-incompatibility!
|
||||||
The '$?' variable now contains all prerequisites that caused the target to
|
The '$?' variable now contains all prerequisites that caused the target to
|
||||||
@ -31,12 +44,12 @@ Version 3.81.91
|
|||||||
* WARNING: Backward-incompatibility!
|
* WARNING: Backward-incompatibility!
|
||||||
As a result of parser enhancements, three backward-compatibility issues
|
As a result of parser enhancements, three backward-compatibility issues
|
||||||
exist: first, a prerequisite containing an "=" cannot be escaped with a
|
exist: first, a prerequisite containing an "=" cannot be escaped with a
|
||||||
backslash any longer. You must create a variable containing an "=" and use
|
backslash any longer. You must create a variable containing an "=" and
|
||||||
that variable in the prerequisite. Second, variable names can no longer
|
use that variable in the prerequisite. Second, variable names can no
|
||||||
contain whitespace, unless you put the whitespace in a variable and use the
|
longer contain whitespace, unless you put the whitespace in a variable and
|
||||||
variable. Third, in previous versions of make it was sometimes not flagged
|
use the variable. Third, in previous versions of make it was sometimes
|
||||||
as an error for explicit and pattern targets to appear in the same rule.
|
not flagged as an error for explicit and pattern targets to appear in the
|
||||||
Now this is always reported as an error.
|
same rule. Now this is always reported as an error.
|
||||||
|
|
||||||
* WARNING: Backward-incompatibility!
|
* WARNING: Backward-incompatibility!
|
||||||
The pattern-specific variables and pattern rules are now applied in the
|
The pattern-specific variables and pattern rules are now applied in the
|
||||||
@ -48,57 +61,58 @@ Version 3.81.91
|
|||||||
|
|
||||||
* WARNING: Backward-incompatibility!
|
* WARNING: Backward-incompatibility!
|
||||||
The library search behavior has changed to be compatible with the standard
|
The library search behavior has changed to be compatible with the standard
|
||||||
linker behavior. Prior to this version for prerequisites specified using the
|
linker behavior. Prior to this version for prerequisites specified using
|
||||||
-lfoo syntax make first searched for libfoo.so in the current directory,
|
the -lfoo syntax make first searched for libfoo.so in the current
|
||||||
vpath directories, and system directories. If that didn't yield a match,
|
directory, vpath directories, and system directories. If that didn't yield
|
||||||
make then searched for libfoo.a in these directories. Starting with this
|
a match, make then searched for libfoo.a in these directories. Starting
|
||||||
version make searches first for libfoo.so and then for libfoo.a in each of
|
with this version make searches first for libfoo.so and then for libfoo.a
|
||||||
these directories in order.
|
in each of these directories in order.
|
||||||
|
|
||||||
* New command line option: --eval=STRING causes STRING to be evaluated as
|
* New command line option: --eval=STRING causes STRING to be evaluated as
|
||||||
makefile syntax (akin to using the $(eval ...) function). The evaluation is
|
makefile syntax (akin to using the $(eval ...) function). The evaluation
|
||||||
performed after all default rules and variables are defined, but before any
|
is performed after all default rules and variables are defined, but before
|
||||||
makefiles are read.
|
any makefiles are read.
|
||||||
|
|
||||||
* New special variable: .RECIPEPREFIX allows you to reset the recipe
|
* New special variable: .RECIPEPREFIX allows you to reset the recipe
|
||||||
introduction character from the default (TAB) to something else. The first
|
introduction character from the default (TAB) to something else. The
|
||||||
character of this variable value is the new recipe introduction character.
|
first character of this variable value is the new recipe introduction
|
||||||
If the variable is set to the empty string, TAB is used again. It can be
|
character. If the variable is set to the empty string, TAB is used again.
|
||||||
set and reset at will; recipes will use the value active when they were
|
It can be set and reset at will; recipes will use the value active when
|
||||||
first parsed. To detect this feature check the value of $(.RECIPEPREFIX).
|
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
|
* New special variable: .SHELLFLAGS allows you to change the options passed
|
||||||
the shell when it invokes recipes. By default the value will be "-c" (or
|
to the shell when it invokes recipes. By default the value will be "-c"
|
||||||
"-ec" if .POSIX is set).
|
(or "-ec" if .POSIX is set).
|
||||||
|
|
||||||
* New special target: .ONESHELL instructs make to invoke a single instance of
|
* New special target: .ONESHELL instructs make to invoke a single instance
|
||||||
the shell and provide it with the entire recipe, regardless of how many
|
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
|
lines it contains. As a special feature to allow more straightforward
|
||||||
conversion of makefiles to use .ONESHELL, any recipe line control characters
|
conversion of makefiles to use .ONESHELL, any recipe line control
|
||||||
('@', '+', or '-') will be removed from the second and subsequent recipe
|
characters ('@', '+', or '-') will be removed from the second and
|
||||||
lines. This happens _only_ if the SHELL value is deemed to be a standard
|
subsequent recipe lines. This happens _only_ if the SHELL value is deemed
|
||||||
POSIX-style shell. If not, then no interior line control characters are
|
to be a standard POSIX-style shell. If not, then no interior line control
|
||||||
removed (as they may be part of the scripting language used with the
|
characters are removed (as they may be part of the scripting language used
|
||||||
alternate SHELL).
|
with the alternate SHELL).
|
||||||
|
|
||||||
* New variable modifier 'private': prefixing a variable assignment with the
|
* New variable modifier 'private': prefixing a variable assignment with the
|
||||||
modifier 'private' suppresses inheritance of that variable by
|
modifier 'private' suppresses inheritance of that variable by
|
||||||
prerequisites. This is most useful for target- and pattern-specific
|
prerequisites. This is most useful for target- and pattern-specific
|
||||||
variables.
|
variables.
|
||||||
|
|
||||||
* New make directive: 'undefine' allows you to undefine a variable so
|
* New make directive: 'undefine' allows you to undefine a variable so that
|
||||||
that it appears as if it was never set. Both $(flavor) and $(origin)
|
it appears as if it was never set. Both $(flavor) and $(origin) functions
|
||||||
functions will return 'undefined' for such a variable. To detect this
|
will return 'undefined' for such a variable. To detect this feature search
|
||||||
feature search for 'undefine' in the .FEATURES special variable.
|
for 'undefine' in the .FEATURES special variable.
|
||||||
|
|
||||||
* The parser for variable assignments has been enhanced to allow multiple
|
* The parser for variable assignments has been enhanced to allow multiple
|
||||||
modifiers ('export', 'override', 'private') on the same line as variables,
|
modifiers ('export', 'override', 'private') on the same line as variables,
|
||||||
including define/endef variables, and in any order. Also, it is possible
|
including define/endef variables, and in any order. Also, it is possible
|
||||||
to create variables and targets named as these modifiers.
|
to create variables and targets named as these modifiers.
|
||||||
|
|
||||||
* The 'define' make directive now allows a variable assignment operator after
|
* The 'define' make directive now allows a variable assignment operator
|
||||||
the variable name, to allow for simple, conditional, or appending multi-line
|
after the variable name, to allow for simple, conditional, or appending
|
||||||
variable assignment.
|
multi-line variable assignment.
|
||||||
|
|
||||||
|
|
||||||
Version 3.81
|
Version 3.81
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License along with
|
# You should have received a copy of the GNU General Public License along with
|
||||||
# this program. If not, see <http://www.gnu.org/licenses/>.
|
# 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_PREREQ(2.59)
|
||||||
AC_REVISION([[$Id$]])
|
AC_REVISION([[$Id$]])
|
||||||
|
@ -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>
|
2010-07-12 Paul Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* test_driver.pl: Add a new $perl_name containing the path to Perl.
|
* test_driver.pl: Add a new $perl_name containing the path to Perl.
|
||||||
|
@ -6,23 +6,28 @@ $details = "";
|
|||||||
|
|
||||||
|
|
||||||
# Ensure turning on .POSIX enables the -e flag for the shell
|
# Ensure turning on .POSIX enables the -e flag for the shell
|
||||||
# We can't just use "false" because on different systems it provides a
|
# We can't assume the exit value of "false" because on different systems it's
|
||||||
# different exit code.
|
# different.
|
||||||
|
|
||||||
run_make_test(q!
|
my $script = 'false; true';
|
||||||
|
my $flags = '-ec';
|
||||||
|
my $out = `/bin/sh $flags '$script' 2>&1`;
|
||||||
|
my $err = $? >> 8;
|
||||||
|
run_make_test(qq!
|
||||||
.POSIX:
|
.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
|
# User settings must override .POSIX
|
||||||
|
$flags = '-xc';
|
||||||
run_make_test(q!
|
$out = `/bin/sh $flags '$script' 2>&1`;
|
||||||
.SHELLFLAGS = -xc
|
run_make_test(qq!
|
||||||
|
.SHELLFLAGS = $flags
|
||||||
.POSIX:
|
.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.
|
# This tells the test driver that the perl test script executed properly.
|
||||||
1;
|
1;
|
||||||
|
@ -58,27 +58,29 @@ one two:;@echo "$@: $(SHELL) $$SHELL"
|
|||||||
|
|
||||||
# Test .SHELLFLAGS
|
# 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 (!!)
|
# by the shell in -x mode has a trailing space (!!)
|
||||||
my $script = 'true';
|
my $script = 'true; true';
|
||||||
my $out = `/bin/sh -xc '$script' 2>&1`;
|
my $flags = '-xc';
|
||||||
|
my $out = `/bin/sh $flags '$script' 2>&1`;
|
||||||
|
|
||||||
run_make_test(qq!
|
run_make_test(qq!
|
||||||
.SHELLFLAGS = -xc
|
.SHELLFLAGS = $flags
|
||||||
all: ; \@$script
|
all: ; \@$script
|
||||||
!,
|
!,
|
||||||
'', $out);
|
'', $out);
|
||||||
|
|
||||||
# We can't just use "false" because on different systems it provides a
|
# We can't just use "false" because on different systems it provides a
|
||||||
# different exit code.
|
# different exit code--once again Solaris: false exits with 255 not 1
|
||||||
|
$script = 'true; false; true';
|
||||||
my $script = 'r() { return 1; }; true; r; true';
|
$flags = '-xec';
|
||||||
my $out = `/bin/sh -xec '$script' 2>&1`;
|
$out = `/bin/sh $flags '$script' 2>&1`;
|
||||||
|
my $err = $? >> 8;
|
||||||
|
|
||||||
run_make_test(qq!
|
run_make_test(qq!
|
||||||
.SHELLFLAGS = -xec
|
.SHELLFLAGS = $flags
|
||||||
all: ; \@$script
|
all: ; \@$script
|
||||||
!,
|
!,
|
||||||
'', "$out#MAKE#: *** [all] Error 1\n", 512);
|
'', "$out#MAKE#: *** [all] Error $err\n", 512);
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -802,7 +802,7 @@ sub _run_command
|
|||||||
eval {
|
eval {
|
||||||
local $SIG{ALRM} = sub { die "timeout\n"; };
|
local $SIG{ALRM} = sub { die "timeout\n"; };
|
||||||
alarm $test_timeout;
|
alarm $test_timeout;
|
||||||
$code = system @_;
|
$code = system(@_);
|
||||||
alarm 0;
|
alarm 0;
|
||||||
};
|
};
|
||||||
if ($@) {
|
if ($@) {
|
||||||
|
Loading…
Reference in New Issue
Block a user