summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>1999-09-23 18:23:33 +0000
committerPaul Smith <psmith@gnu.org>1999-09-23 18:23:33 +0000
commitdbb8f3e30bade196ab6c56b0918cbb7706cf49a6 (patch)
tree19484c45c39bd3206e9482ddd4f7169bf38c588f
parentc828aeaa985fde7010af946d4a6592bd51989d12 (diff)
downloadgunmake-3.78.1.tar.gz
* Ouch: found a bug where re-exec from changed makefiles turned off3.78.1
jobserver :(.
-rw-r--r--ChangeLog17
-rw-r--r--configure.in2
-rw-r--r--main.c7
-rw-r--r--make.texinfo8
-rw-r--r--tests/ChangeLog7
-rw-r--r--tests/scripts/features/parallelism68
6 files changed, 73 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index 9a02343..e3b3166 100644
--- a/ChangeLog
+++ b/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>
* Version 3.78 released.
@@ -764,9 +775,9 @@
a bit saying whether we've seen this target in this pass or not.
(update_goal_chain): Initially set the global considered toggle to
1, since all targets initialize their boolean to 0. At the end of
- each pass, toggle the global considered variable. * filedef.h
- (struct file): Per-file considered toggle bit. * file.c: New
- global toggle variable considered.
+ each pass, toggle the global considered variable.
+ * filedef.h (struct file): Per-file considered toggle bit.
+ * file.c: New global toggle variable considered.
1999-04-05 Paul D. Smith <psmith@gnu.org>
diff --git a/configure.in b/configure.in
index 2768653..6cb935f 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@ AC_REVISION([$Id$])
AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
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)
dnl Regular configure stuff
diff --git a/main.c b/main.c
index ec92f01..4065265 100644
--- a/main.c
+++ b/main.c
@@ -1700,12 +1700,7 @@ int main (int argc, char ** argv)
fflush (stdout);
fflush (stderr);
- /* Close the jobserver pipes if we opened any. */
- if (job_fds[0] >= 0)
- {
- close (job_fds[0]);
- close (job_fds[1]);
- }
+ /* Close the dup'd jobserver pipe if we opened one. */
if (job_rfd >= 0)
close (job_rfd);
diff --git a/make.texinfo b/make.texinfo
index 8334526..fb15117 100644
--- a/make.texinfo
+++ b/make.texinfo
@@ -8,10 +8,10 @@
@c FSF publishers: format makebook.texi instead of using this file directly.
@set RCSID $Id$
-@set EDITION 0.53
-@set VERSION 3.78
-@set UPDATED 14 April 1999
-@set UPDATE-MONTH April 1999
+@set EDITION 0.54
+@set VERSION 3.78.1
+@set UPDATED 09 September 1999
+@set UPDATE-MONTH September 1999
@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
diff --git a/tests/ChangeLog b/tests/ChangeLog
index b40612f..f8f6700 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -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>
* scripts/features/reinvoke: Remove invocations of "touch" in
diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
index 323eb5c..cd75392 100644
--- a/tests/scripts/features/parallelism
+++ b/tests/scripts/features/parallelism
@@ -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');
+
+
+# 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', '3.inc');
+unlink('1.inc', '2.inc');
1;