mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-28 15:57:48 +00:00
* Ouch: found a bug where re-exec from changed makefiles turned off
jobserver :(.
This commit is contained in:
parent
c828aeaa98
commit
dbb8f3e30b
6 changed files with 73 additions and 36 deletions
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
1999-09-23 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* Version 3.78.1 released.
|
||||||
|
|
||||||
|
* make.texinfo: Update version/date stamp.
|
||||||
|
|
||||||
|
* main.c (main): Argh. For some reason we were closing _all_ the
|
||||||
|
jobserver pipes before we re-exec'd due to changed makefiles.
|
||||||
|
This means that any re-exec got a "jobserver unavailable" error :-/.
|
||||||
|
I can't believe we didn't notice this before.
|
||||||
|
|
||||||
1999-09-22 Paul D. Smith <psmith@gnu.org>
|
1999-09-22 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* Version 3.78 released.
|
* Version 3.78 released.
|
||||||
|
@ -764,9 +775,9 @@
|
||||||
a bit saying whether we've seen this target in this pass or not.
|
a bit saying whether we've seen this target in this pass or not.
|
||||||
(update_goal_chain): Initially set the global considered toggle to
|
(update_goal_chain): Initially set the global considered toggle to
|
||||||
1, since all targets initialize their boolean to 0. At the end of
|
1, since all targets initialize their boolean to 0. At the end of
|
||||||
each pass, toggle the global considered variable. * filedef.h
|
each pass, toggle the global considered variable.
|
||||||
(struct file): Per-file considered toggle bit. * file.c: New
|
* filedef.h (struct file): Per-file considered toggle bit.
|
||||||
global toggle variable considered.
|
* file.c: New global toggle variable considered.
|
||||||
|
|
||||||
1999-04-05 Paul D. Smith <psmith@gnu.org>
|
1999-04-05 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ AC_REVISION([$Id$])
|
||||||
AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
|
AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
|
||||||
AC_INIT(vpath.c)dnl dnl A distinctive file to look for in srcdir.
|
AC_INIT(vpath.c)dnl dnl A distinctive file to look for in srcdir.
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE(make, 3.78)
|
AM_INIT_AUTOMAKE(make, 3.78.1)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
dnl Regular configure stuff
|
dnl Regular configure stuff
|
||||||
|
|
7
main.c
7
main.c
|
@ -1700,12 +1700,7 @@ int main (int argc, char ** argv)
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
fflush (stderr);
|
fflush (stderr);
|
||||||
|
|
||||||
/* Close the jobserver pipes if we opened any. */
|
/* Close the dup'd jobserver pipe if we opened one. */
|
||||||
if (job_fds[0] >= 0)
|
|
||||||
{
|
|
||||||
close (job_fds[0]);
|
|
||||||
close (job_fds[1]);
|
|
||||||
}
|
|
||||||
if (job_rfd >= 0)
|
if (job_rfd >= 0)
|
||||||
close (job_rfd);
|
close (job_rfd);
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,10 @@
|
||||||
@c FSF publishers: format makebook.texi instead of using this file directly.
|
@c FSF publishers: format makebook.texi instead of using this file directly.
|
||||||
|
|
||||||
@set RCSID $Id$
|
@set RCSID $Id$
|
||||||
@set EDITION 0.53
|
@set EDITION 0.54
|
||||||
@set VERSION 3.78
|
@set VERSION 3.78.1
|
||||||
@set UPDATED 14 April 1999
|
@set UPDATED 09 September 1999
|
||||||
@set UPDATE-MONTH April 1999
|
@set UPDATE-MONTH September 1999
|
||||||
@comment The ISBN number might need to change on next publication.
|
@comment The ISBN number might need to change on next publication.
|
||||||
@set ISBN 1-882114-80-9 @c CHANGE THIS BEFORE PRINTING AGAIN! --psmith 16jul98
|
@set ISBN 1-882114-80-9 @c CHANGE THIS BEFORE PRINTING AGAIN! --psmith 16jul98
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
1999-09-23 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* scripts/features/parallelism: Add a check to ensure that the
|
||||||
|
jobserver works when we re-invoke. Also cleaned up the tests a
|
||||||
|
little, reducing the number of rules we use so the test won't need
|
||||||
|
as many "sleep" commands.
|
||||||
|
|
||||||
1999-09-16 Paul D. Smith <psmith@gnu.org>
|
1999-09-16 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* scripts/features/reinvoke: Remove invocations of "touch" in
|
* scripts/features/reinvoke: Remove invocations of "touch" in
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
$description = "Test parallelism (-j) option.";
|
$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
|
rules. The first rule has a series of sleep and echo commands
|
||||||
intended to run in series. The second and third have just an
|
intended to run in series. The second and third have just an
|
||||||
echo statement. When make is called in this test, it is given
|
echo statement. When make is called in this test, it is given
|
||||||
|
@ -29,48 +29,72 @@ else {
|
||||||
open(MAKEFILE,"> $makefile");
|
open(MAKEFILE,"> $makefile");
|
||||||
|
|
||||||
print MAKEFILE <<"EOF";
|
print MAKEFILE <<"EOF";
|
||||||
all : def_1 def_5 def_6
|
all : def_1 def_2 def_3
|
||||||
def_1 :
|
def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
|
||||||
\t\@$sleep_command 3 ; echo ONE
|
def_2 : ; \@$sleep_command 2 ; echo THREE
|
||||||
\t\@echo TWO
|
def_3 : ; \@$sleep_command 1 ; echo FOUR
|
||||||
\t\@$sleep_command 1 ; echo THREE
|
|
||||||
\t\@echo FOUR
|
|
||||||
def_5 :
|
|
||||||
\t\@echo FIVE
|
|
||||||
def_6 :
|
|
||||||
\t\@$sleep_command 1 ; echo SIX
|
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
close(MAKEFILE);
|
close(MAKEFILE);
|
||||||
|
|
||||||
&run_make_with_options($makefile, "-j 4", &get_logfile);
|
&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));
|
&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;
|
$makefile2 = &get_tmpfile;
|
||||||
|
|
||||||
open(MAKEFILE,"> $makefile2");
|
open(MAKEFILE,"> $makefile2");
|
||||||
|
|
||||||
print MAKEFILE <<'EOF';
|
print MAKEFILE <<"EOF";
|
||||||
all: 1 2 3; @echo success
|
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" > $@
|
1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@
|
||||||
2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
|
2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@
|
||||||
3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
close(MAKEFILE);
|
close(MAKEFILE);
|
||||||
|
|
||||||
&run_make_with_options("$makefile2", "-j 4", &get_logfile);
|
&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));
|
&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;
|
1;
|
||||||
|
|
Loading…
Reference in a new issue