mirror of
https://github.com/mirror/make.git
synced 2026-09-04 21:52:55 +08:00
* Ouch: found a bug where re-exec from changed makefiles turned off
jobserver :(.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
$description = "Test parallelism (-j) option.";
|
||||
|
||||
|
||||
$details = "This test creates a makefile with three double-colon default
|
||||
$details = "This test creates a makefile with two double-colon default
|
||||
rules. The first rule has a series of sleep and echo commands
|
||||
intended to run in series. The second and third have just an
|
||||
echo statement. When make is called in this test, it is given
|
||||
@@ -29,48 +29,72 @@ else {
|
||||
open(MAKEFILE,"> $makefile");
|
||||
|
||||
print MAKEFILE <<"EOF";
|
||||
all : def_1 def_5 def_6
|
||||
def_1 :
|
||||
\t\@$sleep_command 3 ; echo ONE
|
||||
\t\@echo TWO
|
||||
\t\@$sleep_command 1 ; echo THREE
|
||||
\t\@echo FOUR
|
||||
def_5 :
|
||||
\t\@echo FIVE
|
||||
def_6 :
|
||||
\t\@$sleep_command 1 ; echo SIX
|
||||
|
||||
all : def_1 def_2 def_3
|
||||
def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
|
||||
def_2 : ; \@$sleep_command 2 ; echo THREE
|
||||
def_3 : ; \@$sleep_command 1 ; echo FOUR
|
||||
EOF
|
||||
|
||||
close(MAKEFILE);
|
||||
|
||||
&run_make_with_options($makefile, "-j 4", &get_logfile);
|
||||
$answer = "FIVE\nSIX\nONE\nTWO\nTHREE\nFOUR\n";
|
||||
$answer = "ONE\nFOUR\nTHREE\nTWO\n";
|
||||
&compare_output($answer, &get_logfile(1));
|
||||
|
||||
|
||||
# Test parallelism with included files
|
||||
# Test parallelism with included files. Here we sleep/echo while
|
||||
# building the included files, to test that they are being built in
|
||||
# parallel.
|
||||
|
||||
$makefile2 = &get_tmpfile;
|
||||
|
||||
open(MAKEFILE,"> $makefile2");
|
||||
|
||||
print MAKEFILE <<'EOF';
|
||||
all: 1 2 3; @echo success
|
||||
print MAKEFILE <<"EOF";
|
||||
all: 1 2; \@echo success
|
||||
|
||||
-include 1.inc 2.inc 3.inc
|
||||
-include 1.inc 2.inc
|
||||
|
||||
1.inc: ; @sleep 1; echo 1; echo "1: ; @sleep 2; echo $@ has been included" > $@
|
||||
2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
|
||||
3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@
|
||||
1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
|
||||
2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
|
||||
EOF
|
||||
|
||||
close(MAKEFILE);
|
||||
|
||||
&run_make_with_options("$makefile2", "-j 4", &get_logfile);
|
||||
$answer = "3\n1\n2\n2.inc has been included\n3.inc has been included\n1.inc has been included\nsuccess\n";
|
||||
$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
|
||||
&compare_output($answer, &get_logfile(1));
|
||||
|
||||
unlink('1.inc', '2.inc', '3.inc');
|
||||
unlink('1.inc', '2.inc');
|
||||
|
||||
|
||||
# Test parallelism with included files--this time recurse first and make
|
||||
# sure the jobserver works.
|
||||
|
||||
$makefile3 = &get_tmpfile;
|
||||
|
||||
open(MAKEFILE,"> $makefile3");
|
||||
|
||||
print MAKEFILE <<"EOF";
|
||||
recurse: ; \@\$(MAKE) --no-print-directory -f $makefile3 INC=yes all
|
||||
|
||||
all: 1 2; \@echo success
|
||||
|
||||
INC = no
|
||||
ifeq (\$(INC),yes)
|
||||
-include 1.inc 2.inc
|
||||
endif
|
||||
|
||||
1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
|
||||
2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
|
||||
EOF
|
||||
|
||||
close(MAKEFILE);
|
||||
|
||||
&run_make_with_options("$makefile3", "-j 4", &get_logfile);
|
||||
$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";
|
||||
&compare_output($answer, &get_logfile(1));
|
||||
|
||||
unlink('1.inc', '2.inc');
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user