From 0a81d50d66565fd3e930fadaadc4a5cb9381d840 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 15 Sep 2013 13:30:21 -0400 Subject: [PATCH] [SV 39203] Don't set MAKEFLAGS when restarting. We are restarting with the original command line flags, so if we set MAKEFLAGS as well that will cause double flags. --- ChangeLog | 8 ++++++++ main.c | 18 ++++++------------ tests/ChangeLog | 5 +++++ tests/scripts/options/eval | 10 ++++++++++ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 16cf70fe..4e80e380 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-09-15 Paul Smith + + Fix Savannah bug #39203. + + * main.c (main): Don't set MAKEFLAGS in the environment when we + restart. We have the original command line flags so keep the + original MAKEFLAGS settings as well. + 2013-09-14 Paul Smith Fix Savannah bug #35248. diff --git a/main.c b/main.c index 575ca92f..0fdf5010 100644 --- a/main.c +++ b/main.c @@ -1887,12 +1887,14 @@ main (int argc, char **argv, char **envp) jobserver. If !job_slots and we don't have a pipe, we can start infinite jobs. If we see both a pipe and job_slots >0 that means the user set -j explicitly. This is broken; in this case obey the user - (ignore the jobserver pipe for this make) but print a message. */ + (ignore the jobserver pipe for this make) but print a message. + If we've restarted, we already printed this the first time. */ if (job_slots > 0) - error (NILF, - _("warning: -jN forced in submake: disabling jobserver mode.")); - + { + if (! restarts) + error (NILF, _("warning: -jN forced in submake: disabling jobserver mode.")); + } #ifndef WINDOWS32 /* Create a duplicate pipe, that will be closed in the SIGCHLD handler. If this fails with EBADF, the parent has closed the pipe @@ -2279,14 +2281,6 @@ main (int argc, char **argv, char **envp) if (master_job_slots) job_slots = master_job_slots; - /* Reset makeflags in case they were changed. */ - { - const char *pv = define_makeflags (1, 0); - char *p = alloca (CSTRLEN ("MAKEFLAGS=") + strlen (pv) + 1); - sprintf (p, "MAKEFLAGS=%s", pv); - putenv (allocated_variable_expand (p)); - } - if (ISDB (DB_BASIC)) { char **p; diff --git a/tests/ChangeLog b/tests/ChangeLog index 5eff7ec0..c629a0ed 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2013-09-15 Paul Smith + + * scripts/options/eval: Verify --eval during restart. + Test for Savannah bug #39203. + 2013-09-14 Paul Smith * scripts/features/output-sync: Verify -Orecurse properly. diff --git a/tests/scripts/options/eval b/tests/scripts/options/eval index 06a035c3..0f824090 100644 --- a/tests/scripts/options/eval +++ b/tests/scripts/options/eval @@ -16,4 +16,14 @@ recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!, run_make_test(undef, '--no-print-directory --eval=\$\(info\ eval\) recurse', "eval\neval\nall\nrecurse"); +# Make sure that --eval is handled correctly during restarting +run_make_test(q! +all: ; @echo $@ +-include gen.mk +gen.mk: ; @echo > $@ +!, + '--eval=\$\(info\ eval\)', "eval\neval\nall"); + +unlink('gen.mk'); + 1;