mirror of
https://github.com/mirror/make.git
synced 2025-03-04 06:40:56 +08:00
Portability enhancements for Mac OSX.
Don't dup stdout into stderr in the test suite. Don't rely on $port_type eq "UNIX" to mean case-preserving. Check against the real output of ar when creating archives.
This commit is contained in:
parent
300d1296fb
commit
7e77685bc3
@ -1,5 +1,14 @@
|
||||
2013-09-21 Paul Smith <psmith@gnu.org>
|
||||
|
||||
* scripts/features/archives: Some versions of ar (MacOSX) generate
|
||||
different output when creating archives. Run it and verify the
|
||||
real output.
|
||||
* scripts/features/default_names: MacOSX is, like Windows,
|
||||
case-preserving / case-insensitive. Redo the test to avoid
|
||||
checking for "UNIX".
|
||||
* test_driver.pl (attach_default_output): Don't dup stdout into
|
||||
stderr. Reported by Denis Excoffier <bug-tar@Denis-Excoffier.org>
|
||||
|
||||
* scripts/features/se_explicit: Fix a test that behaves
|
||||
differently with/without archive capability enabled.
|
||||
* scripts/features/output-sync: Don't test output-sync if it's not
|
||||
|
@ -11,9 +11,13 @@ exists $FEATURES{archives} or return -1;
|
||||
# Create some .o files to work with
|
||||
utouch(-60, qw(a1.o a2.o a3.o));
|
||||
|
||||
# Some versions of ar print different things on creation. Find out.
|
||||
my $created = `ar rv libxx.a a1.o 2>&1`;
|
||||
unlink('libxx.a');
|
||||
|
||||
# Very simple
|
||||
run_make_test('all: libxx.a(a1.o)',
|
||||
'', "ar rv libxx.a a1.o\nar: creating libxx.a\na - a1.o\n");
|
||||
'', "ar rv libxx.a a1.o\n$created");
|
||||
|
||||
# Multiple .o's. Add a new one to the existing library
|
||||
run_make_test('all: libxx.a(a1.o a2.o)',
|
||||
|
@ -10,32 +10,33 @@ open(MAKEFILE,"> $makefile");
|
||||
print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n";
|
||||
close(MAKEFILE);
|
||||
|
||||
# DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
|
||||
# Just test what we can here (avoid Makefile versus makefile test).
|
||||
|
||||
if ($port_type eq 'UNIX') {
|
||||
# Create another makefile called "makefile"
|
||||
open(MAKEFILE,"> makefile");
|
||||
print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
|
||||
close(MAKEFILE);
|
||||
}
|
||||
|
||||
# Create another makefile called "Makefile"
|
||||
open(MAKEFILE,"> Makefile");
|
||||
print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
|
||||
# Create another makefile called "makefile"
|
||||
open(MAKEFILE,"> makefile");
|
||||
print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
|
||||
close(MAKEFILE);
|
||||
|
||||
# DOS/WIN32/MacOSX platforms are case-insensitive / case-preserving, so
|
||||
# Makefile is the same file as makefile. Just test what we can here.
|
||||
|
||||
&run_make_with_options("","",&get_logfile);
|
||||
&compare_output("It chose GNUmakefile\n",&get_logfile(1));
|
||||
unlink $makefile;
|
||||
|
||||
if ($port_type eq 'UNIX') {
|
||||
&run_make_with_options("","",&get_logfile);
|
||||
&compare_output("It chose makefile\n",&get_logfile(1));
|
||||
unlink "makefile";
|
||||
my $case_sensitive = 0;
|
||||
if (! -f 'Makefile') {
|
||||
# Create another makefile called "Makefile"
|
||||
$case_sensitive = 1;
|
||||
open(MAKEFILE,"> Makefile");
|
||||
print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
|
||||
close(MAKEFILE);
|
||||
}
|
||||
|
||||
&run_make_with_options("","",&get_logfile);
|
||||
&compare_output("It chose Makefile\n",&get_logfile(1));
|
||||
unlink "Makefile";
|
||||
run_make_with_options("","",&get_logfile);
|
||||
compare_output("It chose GNUmakefile\n",&get_logfile(1));
|
||||
unlink($makefile);
|
||||
|
||||
run_make_with_options("","",&get_logfile);
|
||||
compare_output("It chose makefile\n",&get_logfile(1));
|
||||
unlink("makefile");
|
||||
|
||||
if ($case_sensitive) {
|
||||
run_make_with_options("","",&get_logfile);
|
||||
compare_output("It chose Makefile\n",&get_logfile(1));
|
||||
unlink("Makefile");
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ sub toplevel
|
||||
print "s" unless $total_tests_failed == 1;
|
||||
print " in $categories_failed Categor";
|
||||
print ($categories_failed == 1 ? "y" : "ies");
|
||||
print " Failed (See .$diffext files in $workdir dir for details) :-(\n\n";
|
||||
print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n";
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
@ -752,6 +752,7 @@ sub attach_default_output
|
||||
open($dup, '>&', STDOUT) or error("ado: $! duping STDOUT\n", 1);
|
||||
push @OUTSTACK, $dup;
|
||||
|
||||
$dup = undef;
|
||||
open($dup, '>&', STDERR) or error("ado: $! duping STDERR\n", 1);
|
||||
push @ERRSTACK, $dup;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user