[SV 39203] Don't set MAKEFLAGS when restarting.
authorPaul Smith <psmith@gnu.org>
Sun, 15 Sep 2013 17:30:21 +0000 (13:30 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 15 Sep 2013 17:30:21 +0000 (13:30 -0400)
We are restarting with the original command line flags, so if we set
MAKEFLAGS as well that will cause double flags.

ChangeLog
main.c
tests/ChangeLog
tests/scripts/options/eval

index 16cf70fea3df0054a42e22e2a63518eecfc4028d..4e80e38083110e5c1f68d8cf604fc781d8c76e8a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-09-15  Paul Smith  <psmith@gnu.org>
+
+       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  <psmith@gnu.org>
 
        Fix Savannah bug #35248.
diff --git a/main.c b/main.c
index 575ca92f009aac49553bb03eef83fd6c6c64b2a8..0fdf50101e760eee2a63a0e6fb0bcfa9bff9676e 100644 (file)
--- 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;
index 5eff7ec07675837c6b627e5c5a4ca3a7a42a9dee..c629a0edcbe9c85e3e52361d48a7a8388a473f3c 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-15  Paul Smith  <psmith@gnu.org>
+
+       * scripts/options/eval: Verify --eval during restart.
+       Test for Savannah bug #39203.
+
 2013-09-14  Paul Smith  <psmith@gnu.org>
 
        * scripts/features/output-sync: Verify -Orecurse properly.
index 06a035c32775df57e74de1d3440186771f6ca8b2..0f824090a11e40864d0d74973d24ac5502adcbd9 100644 (file)
@@ -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;