From 3c2ab5fddc576e58f3ffa70dc5fa95144646a513 Mon Sep 17 00:00:00 2001 From: "Simon J. Gerraty" Date: Mon, 13 May 2024 21:13:22 -0700 Subject: [PATCH] Import bmake-20240508 Intersting/relevant changes since bmake-20240430 ChangeLog since bmake-20240430 2024-05-07 Simon J Gerraty * VERSION (_MAKE_VERSION): 20240508 Merge with NetBSD make, pick up o make: ensure variables set on command line get added to .MAKEOVERRIDES (even if they start with '.') so they are passed to sub-makes. mk/ChangeLog since bmake-20240430 2024-05-04 Simon J Gerraty * install-mk (MK_VERSION): 20240504 * dirdeps.mk: allow BUILD_DIRDEPS_OVERRIDES to pass overrides to sub-make building DIRDEPS_CACHE. --- ChangeLog | 8 ++++++++ VERSION | 2 +- job.c | 7 ++++--- main.c | 6 +++--- make.h | 5 +++-- mk/ChangeLog | 7 +++++++ mk/dirdeps.mk | 7 +++++-- mk/install-mk | 4 ++-- unit-tests/opt-debug-graph1.exp | 2 +- unit-tests/opt-debug-graph2.exp | 2 +- unit-tests/opt-debug-graph3.exp | 2 +- unit-tests/suff-main-several.exp | 2 +- unit-tests/suff-transform-debug.exp | 2 +- unit-tests/varname-dot-makeoverrides.exp | 6 +++--- unit-tests/varname-dot-makeoverrides.mk | 4 ++-- var.c | 17 +++++++---------- 16 files changed, 50 insertions(+), 33 deletions(-) mode change 100755 => 100644 mk/install-mk diff --git a/ChangeLog b/ChangeLog index a2dd8dd5ed1..1ce033887c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2024-05-07 Simon J Gerraty + + * VERSION (_MAKE_VERSION): 20240508 + Merge with NetBSD make, pick up + o make: ensure variables set on command line get added to + .MAKEOVERRIDES (even if they start with '.') so they are passed to + sub-makes. + 2024-04-30 Simon J Gerraty * VERSION (_MAKE_VERSION): 20240430 diff --git a/VERSION b/VERSION index 49a67b80073..60aa9ae5069 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ # keep this compatible with sh and make -_MAKE_VERSION=20240430 +_MAKE_VERSION=20240508 diff --git a/job.c b/job.c index e653dcb7ecd..7fafec0e4c8 100644 --- a/job.c +++ b/job.c @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.470 2024/04/27 20:41:32 rillig Exp $ */ +/* $NetBSD: job.c,v 1.471 2024/05/07 18:26:22 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -154,7 +154,7 @@ #include "trace.h" /* "@(#)job.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: job.c,v 1.470 2024/04/27 20:41:32 rillig Exp $"); +MAKE_RCSID("$NetBSD: job.c,v 1.471 2024/05/07 18:26:22 sjg Exp $"); /* * A shell defines how the commands are run. All commands for a target are @@ -2173,7 +2173,8 @@ Shell_Init(void) if (shellPath == NULL) InitShellNameAndPath(); - Var_SetWithFlags(SCOPE_CMDLINE, ".SHELL", shellPath, VAR_SET_READONLY); + Var_SetWithFlags(SCOPE_CMDLINE, ".SHELL", shellPath, + VAR_SET_INTERNAL|VAR_SET_READONLY); if (shell->errFlag == NULL) shell->errFlag = ""; if (shell->echoFlag == NULL) diff --git a/main.c b/main.c index ea834bf669e..fff294291cc 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.614 2024/04/30 16:13:33 sjg Exp $ */ +/* $NetBSD: main.c,v 1.615 2024/05/07 18:26:22 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -111,7 +111,7 @@ #include "trace.h" /* "@(#)main.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: main.c,v 1.614 2024/04/30 16:13:33 sjg Exp $"); +MAKE_RCSID("$NetBSD: main.c,v 1.615 2024/05/07 18:26:22 sjg Exp $"); #if defined(MAKE_NATIVE) __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 " "The Regents of the University of California. " @@ -1411,7 +1411,7 @@ main_Init(int argc, char **argv) Global_Set(".MAKEOVERRIDES", ""); Global_Set("MFLAGS", ""); Global_Set(".ALLTARGETS", ""); - Var_Set(SCOPE_CMDLINE, ".MAKE.LEVEL.ENV", MAKE_LEVEL_ENV); + Global_Set_ReadOnly(".MAKE.LEVEL.ENV", MAKE_LEVEL_ENV); /* Set some other useful variables. */ { diff --git a/make.h b/make.h index ff85ae4f41d..b7fcc77b91b 100644 --- a/make.h +++ b/make.h @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.332 2024/04/27 20:41:32 rillig Exp $ */ +/* $NetBSD: make.h,v 1.333 2024/05/07 18:26:22 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -1013,7 +1013,8 @@ typedef enum VarSetFlags { * except for another call to Var_Set with the same flag. See the * special targets '.NOREADONLY' and '.READONLY'. */ - VAR_SET_READONLY = 1 << 1 + VAR_SET_READONLY = 1 << 1, + VAR_SET_INTERNAL = 1 << 2 } VarSetFlags; typedef enum VarExportMode { diff --git a/mk/ChangeLog b/mk/ChangeLog index ee65ea0fadc..4c3f4f4572c 100644 --- a/mk/ChangeLog +++ b/mk/ChangeLog @@ -1,3 +1,10 @@ +2024-05-04 Simon J Gerraty + + * install-mk (MK_VERSION): 20240504 + + * dirdeps.mk: allow BUILD_DIRDEPS_OVERRIDES to pass overrides to + sub-make building DIRDEPS_CACHE. + 2024-04-24 Simon J Gerraty * meta.autodep.mk: do not override start_utc diff --git a/mk/dirdeps.mk b/mk/dirdeps.mk index b3b34145e8e..7a9ecd881d7 100644 --- a/mk/dirdeps.mk +++ b/mk/dirdeps.mk @@ -1,4 +1,4 @@ -# $Id: dirdeps.mk,v 1.166 2024/01/05 23:16:34 sjg Exp $ +# $Id: dirdeps.mk,v 1.167 2024/05/06 20:41:08 sjg Exp $ # SPDX-License-Identifier: BSD-2-Clause # @@ -581,6 +581,7 @@ BUILD_DIRDEPS_MAKEFILE ?= -f dirdeps.mk # these should generally do BUILD_DIRDEPS_MAKEFILE ?= +BUILD_DIRDEPS_OVERRIDES ?= BUILD_DIRDEPS_TARGETS ?= ${.TARGETS} .if ${DIRDEPS_CACHE} != ${STATIC_DIRDEPS_CACHE:Uno} && ${DIRDEPS_CACHE:M${SRCTOP}/*} == "" @@ -600,7 +601,9 @@ ${DIRDEPS_CACHE}: .META .NOMETA_CMP TARGET_SPEC=${TARGET_SPEC} \ MAKEFLAGS= ${DIRDEP_CACHE_MAKE:U${.MAKE}} -C ${_CURDIR} \ ${BUILD_DIRDEPS_MAKEFILE} \ - ${BUILD_DIRDEPS_TARGETS} BUILD_DIRDEPS_CACHE=yes \ + ${BUILD_DIRDEPS_TARGETS} \ + ${BUILD_DIRDEPS_OVERRIDES} \ + BUILD_DIRDEPS_CACHE=yes \ .MAKE.DEPENDFILE=.none \ ${"${DEBUG_DIRDEPS:Nno}":?DEBUG_DIRDEPS='${DEBUG_DIRDEPS}':} \ ${.MAKEFLAGS:tW:S,-D ,-D,g:tw:M*WITH*} \ diff --git a/mk/install-mk b/mk/install-mk old mode 100755 new mode 100644 index 97874ac4901..c2962ffee6d --- a/mk/install-mk +++ b/mk/install-mk @@ -59,7 +59,7 @@ # Simon J. Gerraty # RCSid: -# $Id: install-mk,v 1.253 2024/04/18 17:18:31 sjg Exp $ +# $Id: install-mk,v 1.254 2024/05/06 20:41:08 sjg Exp $ # # @(#) Copyright (c) 1994-2024 Simon J. Gerraty # @@ -74,7 +74,7 @@ # sjg@crufty.net # -MK_VERSION=20240414 +MK_VERSION=20240504 OWNER= GROUP= MODE=444 diff --git a/unit-tests/opt-debug-graph1.exp b/unit-tests/opt-debug-graph1.exp index 26777a67111..d01a98a31fd 100644 --- a/unit-tests/opt-debug-graph1.exp +++ b/unit-tests/opt-debug-graph1.exp @@ -23,6 +23,7 @@ .MAKE.GID =
.MAKE.JOBS.C =
.MAKE.LEVEL =
+.MAKE.LEVEL.ENV = MAKELEVEL .MAKE.MAKEFILES =
.MAKE.MAKEFILE_PREFERENCE =
.MAKE.OS =
@@ -41,7 +42,6 @@ MACHINE_ARCH =
MAKE =
MFLAGS = -r -k -d g1 #*** Command-line Variables: -.MAKE.LEVEL.ENV = MAKELEVEL #*** Directory Cache: # Stats: 0 hits 2 misses 0 near misses 0 losers (0%) diff --git a/unit-tests/opt-debug-graph2.exp b/unit-tests/opt-debug-graph2.exp index a5a51413fd3..d4182650bae 100644 --- a/unit-tests/opt-debug-graph2.exp +++ b/unit-tests/opt-debug-graph2.exp @@ -57,6 +57,7 @@ all : made-target error-target aborted-target .MAKE.GID =
.MAKE.JOBS.C =
.MAKE.LEVEL =
+.MAKE.LEVEL.ENV = MAKELEVEL .MAKE.MAKEFILES =
.MAKE.MAKEFILE_PREFERENCE =
.MAKE.OS =
@@ -75,7 +76,6 @@ MACHINE_ARCH =
MAKE =
MFLAGS = -r -k -d g2 #*** Command-line Variables: -.MAKE.LEVEL.ENV = MAKELEVEL .SHELL =
#*** Directory Cache: diff --git a/unit-tests/opt-debug-graph3.exp b/unit-tests/opt-debug-graph3.exp index ff88400668f..fea3c658cb7 100644 --- a/unit-tests/opt-debug-graph3.exp +++ b/unit-tests/opt-debug-graph3.exp @@ -57,6 +57,7 @@ all : made-target error-target aborted-target .MAKE.GID =
.MAKE.JOBS.C =
.MAKE.LEVEL =
+.MAKE.LEVEL.ENV = MAKELEVEL .MAKE.MAKEFILES =
.MAKE.MAKEFILE_PREFERENCE =
.MAKE.OS =
@@ -75,7 +76,6 @@ MACHINE_ARCH =
MAKE =
MFLAGS = -r -k -d g3 #*** Command-line Variables: -.MAKE.LEVEL.ENV = MAKELEVEL .SHELL =
#*** Directory Cache: diff --git a/unit-tests/suff-main-several.exp b/unit-tests/suff-main-several.exp index 4391610be74..d19a392f596 100644 --- a/unit-tests/suff-main-several.exp +++ b/unit-tests/suff-main-several.exp @@ -88,6 +88,7 @@ ParseDependency(.MAKEFLAGS: -d0 -dg1) .MAKE.GID =
.MAKE.JOBS.C =
.MAKE.LEVEL =
+.MAKE.LEVEL.ENV = MAKELEVEL .MAKE.MAKEFILES =
.MAKE.MAKEFILE_PREFERENCE =
.MAKE.OS =
@@ -106,7 +107,6 @@ MACHINE_ARCH =
MAKE =
MFLAGS = -r -k -d mps -d 0 -d g1 #*** Command-line Variables: -.MAKE.LEVEL.ENV = MAKELEVEL #*** Directory Cache: # Stats: 0 hits 2 misses 0 near misses 0 losers (0%) diff --git a/unit-tests/suff-transform-debug.exp b/unit-tests/suff-transform-debug.exp index 5d632a22f80..2e88db58bc8 100644 --- a/unit-tests/suff-transform-debug.exp +++ b/unit-tests/suff-transform-debug.exp @@ -14,6 +14,7 @@ .MAKE.GID =
.MAKE.JOBS.C =
.MAKE.LEVEL =
+.MAKE.LEVEL.ENV = MAKELEVEL .MAKE.MAKEFILES =
.MAKE.MAKEFILE_PREFERENCE =
.MAKE.OS =
@@ -32,7 +33,6 @@ MACHINE_ARCH =
MAKE =
MFLAGS = -r -k -d g1 #*** Command-line Variables: -.MAKE.LEVEL.ENV = MAKELEVEL #*** Directory Cache: # Stats: 0 hits 2 misses 0 near misses 0 losers (0%) diff --git a/unit-tests/varname-dot-makeoverrides.exp b/unit-tests/varname-dot-makeoverrides.exp index 78c0296f8d7..21942ffdc96 100644 --- a/unit-tests/varname-dot-makeoverrides.exp +++ b/unit-tests/varname-dot-makeoverrides.exp @@ -1,8 +1,8 @@ all: overrides=<> make -f varname-dot-makeoverrides.mk stage_1 VAR=value stage_1: overrides=< VAR> -make -f varname-dot-makeoverrides.mk stage_2 -stage_2: overrides=< VAR> +make -f varname-dot-makeoverrides.mk stage_2 .VAR=too +stage_2: overrides=< VAR .VAR> make -f varname-dot-makeoverrides.mk stage_3 -stage_3: overrides=< VAR> +stage_3: overrides=< .VAR VAR> exit status 0 diff --git a/unit-tests/varname-dot-makeoverrides.mk b/unit-tests/varname-dot-makeoverrides.mk index f3f3897f8aa..966fcb7e0ec 100644 --- a/unit-tests/varname-dot-makeoverrides.mk +++ b/unit-tests/varname-dot-makeoverrides.mk @@ -1,4 +1,4 @@ -# $NetBSD: varname-dot-makeoverrides.mk,v 1.5 2023/02/25 06:54:08 rillig Exp $ +# $NetBSD: varname-dot-makeoverrides.mk,v 1.6 2024/05/07 18:26:22 sjg Exp $ # # Tests for the special .MAKEOVERRIDES variable, which lists the names of the # variables that are passed on to child processes via the MAKEFLAGS @@ -13,7 +13,7 @@ all: stage_1: @echo '$@: overrides=<'${.MAKEOVERRIDES:Q}'>' - ${MAKE} -f ${MAKEFILE} stage_2 + ${MAKE} -f ${MAKEFILE} stage_2 .VAR=too stage_2: @echo '$@: overrides=<'${.MAKEOVERRIDES:Q}'>' diff --git a/var.c b/var.c index f39ce1baa83..ec0a23e05a6 100644 --- a/var.c +++ b/var.c @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.1108 2024/04/28 15:10:19 rillig Exp $ */ +/* $NetBSD: var.c,v 1.1109 2024/05/07 18:26:22 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -143,7 +143,7 @@ #include "metachar.h" /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: var.c,v 1.1108 2024/04/28 15:10:19 rillig Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.1109 2024/05/07 18:26:22 sjg Exp $"); /* * Variables are defined using one of the VAR=value assignments. Their @@ -1048,7 +1048,7 @@ Var_SetWithFlags(GNode *scope, const char *name, const char *val, * exported to the environment (as per POSIX standard), except * for internals. */ - if (!(flags & VAR_SET_NO_EXPORT) && name[0] != '.') { + if (!(flags & VAR_SET_NO_EXPORT)) { /* * If requested, don't export these in the @@ -1057,14 +1057,11 @@ Var_SetWithFlags(GNode *scope, const char *name, const char *val, * command-line settings continue to override * Makefile settings. */ - if (!opts.varNoExportEnv) + if (!opts.varNoExportEnv && name[0] != '.') 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 (!(flags & VAR_SET_INTERNAL)) + Global_Append(".MAKEOVERRIDES", name); } }