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: