Module Name: src Committed By: rillig Date: Sat Jul 20 14:09:27 UTC 2024
Modified Files: src/usr.bin/make: job.c src/usr.bin/make/unit-tests: cmd-errors-jobs.exp cmd-errors-jobs.mk Log Message: make: don't run erroneous commands in parallel mode To generate a diff of this commit: cvs rdiff -u -r1.480 -r1.481 src/usr.bin/make/job.c cvs rdiff -u -r1.10 -r1.11 src/usr.bin/make/unit-tests/cmd-errors-jobs.exp cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/cmd-errors-jobs.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/job.c diff -u src/usr.bin/make/job.c:1.480 src/usr.bin/make/job.c:1.481 --- src/usr.bin/make/job.c:1.480 Sun Jul 7 07:50:57 2024 +++ src/usr.bin/make/job.c Sat Jul 20 14:09:27 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.480 2024/07/07 07:50:57 rillig Exp $ */ +/* $NetBSD: job.c,v 1.481 2024/07/20 14:09:27 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -141,7 +141,7 @@ #include "trace.h" /* "@(#)job.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: job.c,v 1.480 2024/07/07 07:50:57 rillig Exp $"); +MAKE_RCSID("$NetBSD: job.c,v 1.481 2024/07/20 14:09:27 rillig Exp $"); /* * A shell defines how the commands are run. All commands for a target are @@ -1680,6 +1680,8 @@ JobStart(GNode *gn, bool special) * virtual targets. */ + int parseErrorsBefore; + /* * We're serious here, but if the commands were bogus, we're * also dead... @@ -1689,7 +1691,10 @@ JobStart(GNode *gn, bool special) DieHorribly(); } + parseErrorsBefore = parseErrors; JobWriteShellCommands(job, gn, &run); + if (parseErrors != parseErrorsBefore) + run = false; (void)fflush(job->cmdFILE); } else if (!GNode_ShouldExecute(gn)) { /* Index: src/usr.bin/make/unit-tests/cmd-errors-jobs.exp diff -u src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.10 src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.11 --- src/usr.bin/make/unit-tests/cmd-errors-jobs.exp:1.10 Sat Jul 20 13:59:31 2024 +++ src/usr.bin/make/unit-tests/cmd-errors-jobs.exp Sat Jul 20 14:09:27 2024 @@ -1,12 +1,8 @@ : undefined--eol make: in target "unclosed-expression": Unclosed variable "UNCLOSED" -: unclosed-expression- make: in target "unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}' -: unclosed-modifier- make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z" -: unknown-modifier--eol make: in target "depend-source": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}' -: depend-source- : end-eol : Making depend-target : .END-eol Index: src/usr.bin/make/unit-tests/cmd-errors-jobs.mk diff -u src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.9 src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.10 --- src/usr.bin/make/unit-tests/cmd-errors-jobs.mk:1.9 Sat Jul 20 13:59:31 2024 +++ src/usr.bin/make/unit-tests/cmd-errors-jobs.mk Sat Jul 20 14:09:27 2024 @@ -1,4 +1,4 @@ -# $NetBSD: cmd-errors-jobs.mk,v 1.9 2024/07/20 13:59:31 rillig Exp $ +# $NetBSD: cmd-errors-jobs.mk,v 1.10 2024/07/20 14:09:27 rillig Exp $ # # Demonstrate how errors in expressions affect whether the commands # are actually executed in jobs mode. @@ -17,20 +17,17 @@ undefined: unclosed-expression: # expect: make: in target "unclosed-expression": Unclosed variable "UNCLOSED" -# XXX: This command is executed even though it contains parse errors. -# expect: : unclosed-expression- +# expect-not: : unclosed-expression- : $@-${UNCLOSED unclosed-modifier: # expect: make: in target "unclosed-modifier": while evaluating variable "UNCLOSED" with value "": Unclosed expression, expecting '}' -# XXX: This command is executed even though it contains parse errors. -# expect: : unclosed-modifier- +# expect-not: : unclosed-modifier- : $@-${UNCLOSED: unknown-modifier: # expect: make: in target "unknown-modifier": while evaluating variable "UNKNOWN" with value "": Unknown modifier "Z" -# XXX: This command is executed even though it contains parse errors. -# expect: : unknown-modifier--eol +# expect-not: : unknown-modifier--eol : $@-${UNKNOWN:Z}-eol depend-target: depend-source