Thu Oct 29 18:38:24 2020 UTC ()
make(1): add test for ignoring assignment to read-only variable


(rillig)
diff -r1.10 -r1.11 src/usr.bin/make/unit-tests/vardebug.exp
diff -r1.4 -r1.5 src/usr.bin/make/unit-tests/vardebug.mk

cvs diff -r1.10 -r1.11 src/usr.bin/make/unit-tests/vardebug.exp (expand / switch to context diff)
--- src/usr.bin/make/unit-tests/vardebug.exp 2020/10/29 18:19:41 1.10
+++ src/usr.bin/make/unit-tests/vardebug.exp 2020/10/29 18:38:24 1.11
@@ -78,6 +78,9 @@
 make: "vardebug.mk" line 44: Malformed conditional (${:Uvariable:unknown})
 Var_Parse: ${UNDEFINED} with VARE_UNDEFERR|VARE_WANTRES
 make: "vardebug.mk" line 53: Malformed conditional (${UNDEFINED})
+Global:delete .SHELL (not found)
+Command:.SHELL = /bin/sh
+Command:.SHELL = overwritten ignored (read-only)
 Global:.MAKEFLAGS =  -r -k -d v -d
 Global:.MAKEFLAGS =  -r -k -d v -d 0
 make: Fatal errors encountered -- cannot continue

cvs diff -r1.4 -r1.5 src/usr.bin/make/unit-tests/vardebug.mk (expand / switch to context diff)
--- src/usr.bin/make/unit-tests/vardebug.mk 2020/10/29 18:19:41 1.4
+++ src/usr.bin/make/unit-tests/vardebug.mk 2020/10/29 18:38:24 1.5
@@ -1,4 +1,4 @@
-# $NetBSD: vardebug.mk,v 1.4 2020/10/29 18:19:41 rillig Exp $
+# $NetBSD: vardebug.mk,v 1.5 2020/10/29 18:38:24 rillig Exp $
 #
 # Demonstrates the debugging output for var.c.
 
@@ -52,6 +52,11 @@
 # unreachable.
 .if ${UNDEFINED}
 .endif
+
+# By default, .SHELL is not defined and thus can be set.  As soon as it is
+# accessed, it is initialized in the command line context (during VarFind),
+# where it is set to read-only.  Assigning to it is ignored.
+.MAKEFLAGS: .SHELL=overwritten
 
 .MAKEFLAGS: -d0