Module Name: src
Committed By: rillig
Date: Sat Nov 27 23:56:11 UTC 2021
Modified Files:
src/usr.bin/make/unit-tests: opt-debug-errors-jobs.exp
opt-debug-errors-jobs.mk
Log Message:
tests/make: demonstrate unhelpful debug log in case of errors
The releng build job that runs lint fails. It outputs the usage message
of lint, which doesn't include the failing option. After that, make
outputs:
*** Failed target: lint-cgdconfig
*** Failed commands:
${LINT} ${LINTFLAGS} \
${_LDFLAGS.${:Ucgdconfig}:C/-L[ ]*/-L/Wg:M-L*} \
${LOBJS.${:Ucgdconfig}} ${_LDADD.${:Ucgdconfig}}
Make doesn't output the expanded command, therefore the log doesn't show
the offending option '-pthread' that leads to the usage message.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/usr.bin/make/unit-tests/opt-debug-errors-jobs.exp
cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/opt-debug-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/unit-tests/opt-debug-errors-jobs.exp
diff -u src/usr.bin/make/unit-tests/opt-debug-errors-jobs.exp:1.2 src/usr.bin/make/unit-tests/opt-debug-errors-jobs.exp:1.3
--- src/usr.bin/make/unit-tests/opt-debug-errors-jobs.exp:1.2 Tue Apr 27 16:23:21 2021
+++ src/usr.bin/make/unit-tests/opt-debug-errors-jobs.exp Sat Nov 27 23:56:11 2021
@@ -45,4 +45,11 @@ word1 word2
*** [fail-multiline-intention] Error code 1
make: stopped in unit-tests
+
+*** Failed target: fail-vars
+*** Failed commands:
+ @${COMPILE_C} ${COMPILE_C_FLAGS}
+*** [fail-vars] Error code 1
+
+make: stopped in unit-tests
exit status 1
Index: src/usr.bin/make/unit-tests/opt-debug-errors-jobs.mk
diff -u src/usr.bin/make/unit-tests/opt-debug-errors-jobs.mk:1.1 src/usr.bin/make/unit-tests/opt-debug-errors-jobs.mk:1.2
--- src/usr.bin/make/unit-tests/opt-debug-errors-jobs.mk:1.1 Tue Apr 27 16:20:06 2021
+++ src/usr.bin/make/unit-tests/opt-debug-errors-jobs.mk Sat Nov 27 23:56:11 2021
@@ -1,4 +1,4 @@
-# $NetBSD: opt-debug-errors-jobs.mk,v 1.1 2021/04/27 16:20:06 rillig Exp $
+# $NetBSD: opt-debug-errors-jobs.mk,v 1.2 2021/11/27 23:56:11 rillig Exp $
#
# Tests for the -de command line option, which adds debug logging for
# failed commands and targets; since 2021-04-27 also in jobs mode.
@@ -10,6 +10,7 @@ all: fail-escaped-space
all: fail-newline
all: fail-multiline
all: fail-multiline-intention
+all: fail-vars
fail-spaces:
echo '3 spaces'; false
@@ -34,3 +35,14 @@ fail-multiline:
fail-multiline-intention:
echo 'word1' \
'word2'; false
+
+# In makefiles that rely heavily on abstracted variables, it is not possible
+# to determine the actual command from the unexpanded command alone. To help
+# debugging these issues (for example in NetBSD's build.sh), output the
+# expanded command as well whenever it differs from the unexpanded command.
+# Since 2021-11-28.
+COMPILE_C= false c-compiler
+COMPILE_C_DEFS= macro="several words"
+COMPILE_C_FLAGS=flag1 ${COMPILE_C_DEFS:@def@-${def}@}
+fail-vars:
+ @${COMPILE_C} ${COMPILE_C_FLAGS}