diff options
Diffstat (limited to 'sys-devel/make/files/make-3.80-parallel-build-failure.patch')
-rw-r--r-- | sys-devel/make/files/make-3.80-parallel-build-failure.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sys-devel/make/files/make-3.80-parallel-build-failure.patch b/sys-devel/make/files/make-3.80-parallel-build-failure.patch new file mode 100644 index 00000000000..717e0f3556c --- /dev/null +++ b/sys-devel/make/files/make-3.80-parallel-build-failure.patch @@ -0,0 +1,59 @@ +http://lists.gnu.org/archive/html/bug-make/2005-07/msg00050.html +http://lists.gnu.org/archive/html/bug-make/2005-08/msg00019.html +http://bugs.gentoo.org/107613 + +2005-08-07 Paul D. Smith <psmith@gnu.org> + + Fix a bug reported by Michael Matz <matz@suse.de>: patch included. + If make is running in parallel without -k and two jobs die in a + row, but not too close to each other, then make will quit without + waiting for the rest of the jobs to die. + + * main.c (die): Don't reset err before calling reap_children() the + second time: we still want it to be in the error condition. + * job.c (reap_children): Use a static variable, rather than err, + to control whether or not the error message should be printed. + +Index: job.c +=================================================================== +RCS file: /cvsroot/make/make/job.c,v +retrieving revision 1.166 +retrieving revision 1.167 +diff -u -p -r1.166 -r1.167 +--- job.c 26 Jun 2005 03:31:30 -0000 1.166 ++++ job.c 8 Aug 2005 05:08:00 -0000 1.167 +@@ -475,9 +479,14 @@ reap_children (int block, int err) + + if (err && block) + { +- /* We might block for a while, so let the user know why. */ ++ static int printed = 0; ++ ++ /* We might block for a while, so let the user know why. ++ Only print this message once no matter how many jobs are left. */ + fflush (stdout); +- error (NILF, _("*** Waiting for unfinished jobs....")); ++ if (!printed) ++ error (NILF, _("*** Waiting for unfinished jobs....")); ++ printed = 1; + } + + /* We have one less dead child to reap. As noted in +Index: main.c +=================================================================== +RCS file: /cvsroot/make/make/main.c,v +retrieving revision 1.210 +retrieving revision 1.211 +diff -u -p -r1.210 -r1.211 +--- main.c 12 Jul 2005 04:35:13 -0000 1.210 ++++ main.c 8 Aug 2005 05:08:00 -0000 1.211 +@@ -2990,7 +2996,8 @@ die (int status) + print_version (); + + /* Wait for children to die. */ +- for (err = (status != 0); job_slots_used > 0; err = 0) ++ err = (status != 0); ++ while (job_slots_used > 0) + reap_children (1, err); + + /* Let the remote job module clean up its state. */ |