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: