When we re-exec the master makefile in a jobserver environment, ensure

that MAKEFLAGS is set properly so the re-exec'd make runs in parallel.
See Savannah bug #33873.
This commit is contained in:
Paul Smith 2011-09-18 23:39:26 +00:00
parent 0369a93825
commit d472624f33
4 changed files with 29 additions and 3 deletions

View File

@ -1,5 +1,9 @@
2011-09-18 Paul Smith <psmith@gnu.org> 2011-09-18 Paul Smith <psmith@gnu.org>
* main.c (main): If we're re-exec'ing and we're the master make,
then restore the job_slots value so it goes back into MAKEFLAGS
properly. See Savannah bug #33873.
* remake.c (library_search): STD_DIRS is computed when other * remake.c (library_search): STD_DIRS is computed when other
static vars like buflen etc. are computed, so it must be static static vars like buflen etc. are computed, so it must be static
as well. See Savannah bug #32511. as well. See Savannah bug #32511.

8
main.c
View File

@ -2089,6 +2089,11 @@ main (int argc, char **argv, char **envp)
++restarts; ++restarts;
/* If we're re-exec'ing the first make, put back the number of
job slots so define_makefiles() will get it right. */
if (master_job_slots)
job_slots = master_job_slots;
/* Reset makeflags in case they were changed. */ /* Reset makeflags in case they were changed. */
{ {
const char *pv = define_makeflags (1, 1); const char *pv = define_makeflags (1, 1);
@ -2825,9 +2830,6 @@ define_makeflags (int all, int makefile)
&& (*(unsigned int *) cs->value_ptr == && (*(unsigned int *) cs->value_ptr ==
*(unsigned int *) cs->noarg_value)) *(unsigned int *) cs->noarg_value))
ADD_FLAG ("", 0); /* Optional value omitted; see below. */ ADD_FLAG ("", 0); /* Optional value omitted; see below. */
else if (cs->c == 'j')
/* Special case for `-j'. */
ADD_FLAG ("1", 1);
else else
{ {
char *buf = alloca (30); char *buf = alloca (30);

View File

@ -1,5 +1,8 @@
2011-09-18 Paul Smith <psmith@gnu.org> 2011-09-18 Paul Smith <psmith@gnu.org>
* scripts/features/parallelism: On re-exec make sure we preserve
the value of MAKEFLAGS when necessary. See Savannah bug #33873.
* scripts/features/vpath3: Verify handling of -lfoo libraries * scripts/features/vpath3: Verify handling of -lfoo libraries
found via vpath vs. the standard directory search. found via vpath vs. the standard directory search.
See Savannah bug #32511. See Savannah bug #32511.

View File

@ -167,6 +167,23 @@ inc.mk:
rmfiles('inc.mk'); rmfiles('inc.mk');
# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec
# See Savannah bug #33873
$extraENV{MAKEFLAGS} = '-j4';
run_make_test(q!
things = thing1 thing2
all: $(things)
$(things):; @echo '$@ start'; sleep 1; echo '$@ end'
-include inc.mk
inc.mk: ; @touch $@
!,
'', "thing1 start\nthing2 start\nthing1 end\nthing2 end\n");
delete $extraENV{MAKEFLAGS};
rmfiles('inc.mk');
if ($all_tests) { if ($all_tests) {
# Implicit files aren't properly recreated during parallel builds # Implicit files aren't properly recreated during parallel builds
# Savannah bug #26864 # Savannah bug #26864