Module Name:    src
Committed By:   rillig
Date:           Sun Jun 30 11:00:06 UTC 2024

Modified Files:
        src/usr.bin/make: var.c
        src/usr.bin/make/unit-tests: varmod-shell.exp varmod-shell.mk
            varmod-sun-shell.exp varmod-sun-shell.mk

Log Message:
make: add more context to "returned non-zero status" message

Previously, this message was an "error" but had no influence on the exit
status, so make it a warning instead.  In the seldom used -W mode that
treats warnings as errors, this change influences the exit status.


To generate a diff of this commit:
cvs rdiff -u -r1.1121 -r1.1122 src/usr.bin/make/var.c
cvs rdiff -u -r1.5 -r1.6 src/usr.bin/make/unit-tests/varmod-shell.exp
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/varmod-shell.mk
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/make/unit-tests/varmod-sun-shell.exp
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/varmod-sun-shell.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/var.c
diff -u src/usr.bin/make/var.c:1.1121 src/usr.bin/make/var.c:1.1122
--- src/usr.bin/make/var.c:1.1121	Sat Jun 15 22:06:30 2024
+++ src/usr.bin/make/var.c	Sun Jun 30 11:00:06 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.1121 2024/06/15 22:06:30 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.1122 2024/06/30 11:00:06 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -132,7 +132,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.1121 2024/06/15 22:06:30 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.1122 2024/06/30 11:00:06 rillig Exp $");
 
 /*
  * Variables are defined using one of the VAR=value assignments.  Their
@@ -2632,8 +2632,7 @@ ApplyModifier_ShellCommand(const char **
 		output = Cmd_Exec(cmd.str, &error);
 		Expr_SetValueOwn(expr, output);
 		if (error != NULL) {
-			/* XXX: why still return AMR_OK? */
-			Error("%s", error);
+			Parse_Error(PARSE_WARNING, "%s", error);
 			free(error);
 		}
 	} else
@@ -3746,7 +3745,7 @@ ApplyModifier_SunShell(const char **pp, 
 		char *output, *error;
 		output = Cmd_Exec(Expr_Str(expr), &error);
 		if (error != NULL) {
-			Error("%s", error);
+			Parse_Error(PARSE_WARNING, "%s", error);
 			free(error);
 		}
 		Expr_SetValueOwn(expr, output);

Index: src/usr.bin/make/unit-tests/varmod-shell.exp
diff -u src/usr.bin/make/unit-tests/varmod-shell.exp:1.5 src/usr.bin/make/unit-tests/varmod-shell.exp:1.6
--- src/usr.bin/make/unit-tests/varmod-shell.exp:1.5	Sat Mar 26 14:34:07 2022
+++ src/usr.bin/make/unit-tests/varmod-shell.exp	Sun Jun 30 11:00:06 2024
@@ -1,11 +1,11 @@
-make: "echo word; false" returned non-zero status
-make: "echo word; false" returned non-zero status
+make: "varmod-shell.mk" line 25: warning: while evaluating "${:!echo word; false!} != "word"": "echo word; false" returned non-zero status
+make: "varmod-shell.mk" line 29: warning: while evaluating "${:Uprevious value:!echo word; false!} != "word"": "echo word; false" returned non-zero status
 Global: _ = # (empty)
 Var_Parse: ${:!echo word; ${:Ufalse}!} (eval-keep-dollar-and-undefined)
 Evaluating modifier ${:!...} on value "" (eval-keep-dollar-and-undefined, undefined)
 Modifier part: "echo word; false"
 Capturing the output of command "echo word; false"
-make: "echo word; false" returned non-zero status
+make: "varmod-shell.mk" line 36: warning: while evaluating "${:!echo word; ${:Ufalse}!}": "echo word; false" returned non-zero status
 Result of ${:!echo word; ${:Ufalse}!} is "word" (eval-keep-dollar-and-undefined, defined)
 Global: _ = word
 Global: .MAKEFLAGS =  -r -k -d v -d

Index: src/usr.bin/make/unit-tests/varmod-shell.mk
diff -u src/usr.bin/make/unit-tests/varmod-shell.mk:1.7 src/usr.bin/make/unit-tests/varmod-shell.mk:1.8
--- src/usr.bin/make/unit-tests/varmod-shell.mk:1.7	Mon Jan 10 20:32:29 2022
+++ src/usr.bin/make/unit-tests/varmod-shell.mk	Sun Jun 30 11:00:06 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-shell.mk,v 1.7 2022/01/10 20:32:29 rillig Exp $
+# $NetBSD: varmod-shell.mk,v 1.8 2024/06/30 11:00:06 rillig Exp $
 #
 # Tests for the ':!cmd!' variable modifier, which runs the shell command
 # given by the variable modifier and returns its output.
@@ -21,16 +21,20 @@
 # Between 2000-04-29 and 2020-11-17, the error message mentioned the previous
 # value of the expression (which is usually an empty string) instead of the
 # command that was executed.
+# expect+1: warning: while evaluating "${:!echo word; false!} != "word"": "echo word; false" returned non-zero status
 .if ${:!echo word; false!} != "word"
 .  error
 .endif
+# expect+1: warning: while evaluating "${:Uprevious value:!echo word; false!} != "word"": "echo word; false" returned non-zero status
 .if ${:Uprevious value:!echo word; false!} != "word"
 .  error
 .endif
 
 
-.MAKEFLAGS: -dv			# to see the actual command
+.MAKEFLAGS: -dv			# to see the "Capturing" debug output
+# expect+1: warning: while evaluating "${:!echo word; ${:Ufalse}!}": "echo word; false" returned non-zero status
 _:=	${:!echo word; ${:Ufalse}!}
 .MAKEFLAGS: -d0
 
+
 all:

Index: src/usr.bin/make/unit-tests/varmod-sun-shell.exp
diff -u src/usr.bin/make/unit-tests/varmod-sun-shell.exp:1.3 src/usr.bin/make/unit-tests/varmod-sun-shell.exp:1.4
--- src/usr.bin/make/unit-tests/varmod-sun-shell.exp:1.3	Sat Mar 26 14:34:07 2022
+++ src/usr.bin/make/unit-tests/varmod-sun-shell.exp	Sun Jun 30 11:00:06 2024
@@ -1,11 +1,11 @@
-make: "echo word; false" returned non-zero status
+make: "varmod-sun-shell.mk" line 17: warning: while evaluating variable "echo word; false": "echo word; false" returned non-zero status
 Global: _ = # (empty)
 Var_Parse: ${echo word; ${:Ufalse}:L:sh} (eval-keep-dollar-and-undefined)
 Evaluating modifier ${echo word; false:L} on value "" (eval-keep-dollar-and-undefined, undefined)
 Result of ${echo word; false:L} is "echo word; false" (eval-keep-dollar-and-undefined, defined)
 Evaluating modifier ${echo word; false:s...} on value "echo word; false" (eval-keep-dollar-and-undefined, defined)
 Capturing the output of command "echo word; false"
-make: "echo word; false" returned non-zero status
+make: "varmod-sun-shell.mk" line 24: warning: while evaluating variable "echo word; false": "echo word; false" returned non-zero status
 Result of ${echo word; false:sh} is "word" (eval-keep-dollar-and-undefined, defined)
 Global: _ = word
 Global: .MAKEFLAGS =  -r -k -d v -d

Index: src/usr.bin/make/unit-tests/varmod-sun-shell.mk
diff -u src/usr.bin/make/unit-tests/varmod-sun-shell.mk:1.2 src/usr.bin/make/unit-tests/varmod-sun-shell.mk:1.3
--- src/usr.bin/make/unit-tests/varmod-sun-shell.mk:1.2	Mon Jan 10 20:32:29 2022
+++ src/usr.bin/make/unit-tests/varmod-sun-shell.mk	Sun Jun 30 11:00:06 2024
@@ -1,4 +1,4 @@
-# $NetBSD: varmod-sun-shell.mk,v 1.2 2022/01/10 20:32:29 rillig Exp $
+# $NetBSD: varmod-sun-shell.mk,v 1.3 2024/06/30 11:00:06 rillig Exp $
 #
 # Tests for the :sh variable modifier, which runs the shell command
 # given by the variable value and returns its output.
@@ -12,15 +12,17 @@
 .  error
 .endif
 
-# If the command exits with non-zero, an error message is printed.
-# XXX: Processing continues as usual though.
+# If the command exits with non-zero, a warning is printed.
+# expect+1: warning: while evaluating variable "echo word; false": "echo word; false" returned non-zero status
 .if ${echo word; false:L:sh} != "word"
 .  error
 .endif
 
 
-.MAKEFLAGS: -dv			# to see the actual command
+.MAKEFLAGS: -dv			# to see the "Capturing" debug output
+# expect+1: warning: while evaluating variable "echo word; false": "echo word; false" returned non-zero status
 _:=	${echo word; ${:Ufalse}:L:sh}
 .MAKEFLAGS: -d0
 
+
 all:

Reply via email to