Module Name:    src
Committed By:   rillig
Date:           Wed Jun 16 09:47:51 UTC 2021

Modified Files:
        src/usr.bin/make: job.c
        src/usr.bin/make/unit-tests: jobs-empty-commands-error.exp

Log Message:
make: fix error handling in jobs mode

By using the same error handling code as in the branch for non-empty
commands, the behavior is the same again as before 2021-01-29.


To generate a diff of this commit:
cvs rdiff -u -r1.434 -r1.435 src/usr.bin/make/job.c
cvs rdiff -u -r1.1 -r1.2 \
    src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp

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.434 src/usr.bin/make/job.c:1.435
--- src/usr.bin/make/job.c:1.434	Wed Jun 16 03:56:59 2021
+++ src/usr.bin/make/job.c	Wed Jun 16 09:47:51 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.434 2021/06/16 03:56:59 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.435 2021/06/16 09:47:51 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -142,7 +142,7 @@
 #include "trace.h"
 
 /*	"@(#)job.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: job.c,v 1.434 2021/06/16 03:56:59 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.435 2021/06/16 09:47:51 rillig Exp $");
 
 /*
  * A shell defines how the commands are run.  All commands for a target are
@@ -1663,6 +1663,15 @@ JobStart(GNode *gn, bool special)
 	if (Lst_IsEmpty(&gn->commands)) {
 		job->cmdFILE = stdout;
 		run = false;
+
+		/*
+		 * We're serious here, but if the commands were bogus, we're
+		 * also dead...
+		 */
+		if (!cmdsOK) {
+			PrintOnError(gn, NULL); /* provide some clue */
+			DieHorribly();
+		}
 	} else if (((gn->type & OP_MAKE) && !opts.noRecursiveExecute) ||
 	    (!opts.noExecute && !opts.touchFlag)) {
 		/*

Index: src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp
diff -u src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp:1.1 src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp:1.2
--- src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp:1.1	Wed Jun 16 09:39:48 2021
+++ src/usr.bin/make/unit-tests/jobs-empty-commands-error.exp	Wed Jun 16 09:47:51 2021
@@ -1,4 +1,5 @@
 : 'Making existing-target out of nothing.'
 make: don't know how to make nonexistent-target (continuing)
-`nonexistent-target' was not built (being made, type OP_DEPS_FOUND|OP_MARK, flags REMAKE|DONE_WAIT|DONE_ALLSRC|DONECYCLE)!
-exit status 1
+
+make: stopped in unit-tests
+exit status 2

Reply via email to