From 44de6d8f7a37d701e95213c648547568ffccc2a0 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Tue, 13 Dec 2022 13:02:10 -0800 Subject: [PATCH] Make clear_var_list set nonexistant variables to empty strings Make's clear-var-list causes the variables to exist as empty strings. Mimic that functionality in starlark for the variable diff and ?=. Bug: 262303006 Test: ./out/rbcrun ./build/make/tests/run.rbc Change-Id: I5f9c8cf342d875b1022c5c74906e59fa68fcd6c9 --- core/product_config.rbc | 4 ++++ tests/run.rbc | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/product_config.rbc b/core/product_config.rbc index b3156c6f39..b0d69770d0 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -860,6 +860,10 @@ def _clear_var_list(g, h, var_list): if v in cfg: cfg[v] = __zero_value(cfg[v]) + if v not in cfg and v not in g: + # Cause the variable to appear set like the make version does + g[v] = "" + def __get_options(): """Returns struct containing runtime global settings.""" diff --git a/tests/run.rbc b/tests/run.rbc index 06f56d324d..e8c4caae36 100644 --- a/tests/run.rbc +++ b/tests/run.rbc @@ -164,13 +164,14 @@ assert_eq({"A_LIST_VARIABLE": ["foo"]}, board_globals_base) g = {"FOO": "a", "BAR": "c", "BAZ": "e"} cfg = {"FOO": "b", "BAR": "d", "BAZ": "f"} -rblf.clear_var_list(g, struct(cfg=cfg), "FOO BAR") +rblf.clear_var_list(g, struct(cfg=cfg), "FOO BAR NEWVAR") assert_eq("", g["FOO"]) assert_eq("", cfg["FOO"]) assert_eq("", g["BAR"]) assert_eq("", cfg["BAR"]) assert_eq("e", g["BAZ"]) assert_eq("f", cfg["BAZ"]) +assert_eq("", g.get("NEWVAR")) test_single_value_inheritance() test_artifact_path_requirements()