henesyinit from p9fd787fda5 years agoHistory
100 lines · 2.7 KB · Text
RawDownload
#                                                                    -*-perl-*- $description = "Test parallelism (-j) option.";  $details = "This test creates a makefile with two double-colon defaultrules.  The first rule has a series of sleep and echo commandsintended to run in series.  The second and third have just anecho statement.  When make is called in this test, it is giventhe -j option with a value of 4.  This tells make that it maystart up to four jobs simultaneously.  In this case, since thefirst command is a sleep command, the output of the secondand third commands will appear before the first if indeedmake is running all of these commands in parallel."; if (!$parallel_jobs) {  return -1;} if ($vos) {  $delete_command = "delete_file -no_ask";  $sleep_command = "sleep -seconds";}else {  $delete_command = "rm -f";  $sleep_command = "sleep";} open(MAKEFILE,"> $makefile"); print MAKEFILE <<"EOF";all : def_1 def_2 def_3def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWOdef_2 : ; \@$sleep_command 2 ; echo THREEdef_3 : ; \@$sleep_command 1 ; echo FOUREOF close(MAKEFILE); &run_make_with_options($makefile, "-j 4", &get_logfile);$answer = "ONE\nFOUR\nTHREE\nTWO\n";&compare_output($answer, &get_logfile(1));  # 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; \@echo success -include 1.inc 2.inc 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 = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n";&compare_output($answer, &get_logfile(1)); 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 = noifeq (\$(INC),yes)-include 1.inc 2.incendif 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;