Module Name: src
Committed By: sjg
Date: Sat Dec 9 00:13:38 UTC 2023
Modified Files:
src/usr.bin/make: var.c
src/usr.bin/make/unit-tests: varname-dot-shell.exp
Log Message:
make: Var_SetWithFlags set fromCmd for SCOPE_CMDLINE
Set fromCmd true for SCOPE_CMDLINE
regardless of the variable name.
Reviewed by: rillig
To generate a diff of this commit:
cvs rdiff -u -r1.1075 -r1.1076 src/usr.bin/make/var.c
cvs rdiff -u -r1.16 -r1.17 src/usr.bin/make/unit-tests/varname-dot-shell.exp
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.1075 src/usr.bin/make/var.c:1.1076
--- src/usr.bin/make/var.c:1.1075 Sun Nov 19 22:50:11 2023
+++ src/usr.bin/make/var.c Sat Dec 9 00:13:38 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.1075 2023/11/19 22:50:11 rillig Exp $ */
+/* $NetBSD: var.c,v 1.1076 2023/12/09 00:13:38 sjg Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -139,7 +139,7 @@
#include "metachar.h"
/* "@(#)var.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.1075 2023/11/19 22:50:11 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.1076 2023/12/09 00:13:38 sjg Exp $");
/*
* Variables are defined using one of the VAR=value assignments. Their
@@ -994,25 +994,26 @@ Var_SetWithFlags(GNode *scope, const cha
* Any variables given on the command line are automatically exported
* to the environment (as per POSIX standard), except for internals.
*/
- if (scope == SCOPE_CMDLINE && !(flags & VAR_SET_NO_EXPORT) &&
- name[0] != '.') {
+ if (scope == SCOPE_CMDLINE) {
v->fromCmd = true;
+ if (!(flags & VAR_SET_NO_EXPORT) && name[0] != '.') {
- /*
- * If requested, don't export these in the environment
- * individually. We still put them in .MAKEOVERRIDES so
- * that the command-line settings continue to override
- * Makefile settings.
- */
- if (!opts.varNoExportEnv)
- setenv(name, val, 1);
- /* XXX: What about .MAKE.EXPORTED? */
- /*
- * XXX: Why not just mark the variable for needing export, as
- * in ExportVarPlain?
- */
-
- Global_Append(".MAKEOVERRIDES", name);
+ /*
+ * If requested, don't export these in the
+ * environment individually. We still put
+ * them in .MAKEOVERRIDES so that the
+ * command-line settings continue to override
+ * Makefile settings.
+ */
+ if (!opts.varNoExportEnv)
+ setenv(name, val, 1);
+ /* XXX: What about .MAKE.EXPORTED? */
+ /*
+ * XXX: Why not just mark the variable for
+ * needing export, as in ExportVarPlain?
+ */
+ Global_Append(".MAKEOVERRIDES", name);
+ }
}
if (name[0] == '.' && strcmp(name, MAKE_SAVE_DOLLARS) == 0)
Index: src/usr.bin/make/unit-tests/varname-dot-shell.exp
diff -u src/usr.bin/make/unit-tests/varname-dot-shell.exp:1.16 src/usr.bin/make/unit-tests/varname-dot-shell.exp:1.17
--- src/usr.bin/make/unit-tests/varname-dot-shell.exp:1.16 Sat Mar 26 14:34:07 2022
+++ src/usr.bin/make/unit-tests/varname-dot-shell.exp Sat Dec 9 00:13:38 2023
@@ -5,7 +5,7 @@ Global: delete .SHELL (not found)
Command: .SHELL = (details omitted)
Global: ORIG_SHELL = (details omitted)
Parsing line 12: .SHELL= overwritten
-Global: .SHELL = overwritten
+Global: .SHELL = overwritten ignored!
CondParser_Eval: ${.SHELL} != ${ORIG_SHELL}
Var_Parse: ${.SHELL} != ${ORIG_SHELL} (eval-defined)
Var_Parse: ${ORIG_SHELL} (eval-defined)
@@ -18,9 +18,9 @@ Var_Parse: ${.SHELL} != ${ORIG_SHELL} (e
Var_Parse: ${ORIG_SHELL} (eval-defined)
Comparing "(details omitted)" != "(details omitted)"
Parsing line 27: .undef .SHELL
-Global: delete .SHELL
+Global: delete .SHELL (not found)
Parsing line 28: .SHELL= newly overwritten
-Global: .SHELL = newly overwritten
+Global: .SHELL = newly overwritten ignored!
CondParser_Eval: ${.SHELL} != ${ORIG_SHELL}
Var_Parse: ${.SHELL} != ${ORIG_SHELL} (eval-defined)
Var_Parse: ${ORIG_SHELL} (eval-defined)