From ec8316de2e95d63eb1c42adf88d3c033c2522f49 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Mon, 4 Apr 2022 11:52:52 -0700 Subject: [PATCH] Optionally dump RBC variables at the end of config.mk config.mk represents essentially the entire product/board configuration. In order to develop a "quick" rbc regression test, dump all the make variables at the end of config.mk. We can then compare these variable dumps instead of ninja files, because the ninja files take much longer to generate. Bug: 229132189 Test: Manually Change-Id: I4e8371be446b7e511aba22dff58530a6d9ff072f --- core/dumpvar.mk | 4 ++++ core/envsetup.mk | 22 ++++++++++++++-------- core/product_config.rbc | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/core/dumpvar.mk b/core/dumpvar.mk index 6b5c030e4d..6f3d14f20d 100644 --- a/core/dumpvar.mk +++ b/core/dumpvar.mk @@ -35,3 +35,7 @@ dump-many-vars : printf "'\n";) endif # CALLED_FROM_SETUP + +ifneq (,$(RBC_DUMP_CONFIG_FILE)) +$(call dump-variables-rbc,$(RBC_DUMP_CONFIG_FILE)) +endif diff --git a/core/envsetup.mk b/core/envsetup.mk index 049a4d6c8b..c32d380b0b 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -326,20 +326,26 @@ endif # raw ones. define dump-variables-rbc $(eval _dump_variables_rbc_excluded := \ + BOARD_PLAT_PRIVATE_SEPOLICY_DIR \ + BOARD_PLAT_PUBLIC_SEPOLICY_DIR \ + BUILD_NUMBER \ + DATE \ LOCAL_PATH \ + MAKEFILE_LIST \ + PRODUCTS \ + PRODUCT_COPY_OUT_% \ + RBC_PRODUCT_CONFIG \ + RBC_BOARD_CONFIG \ + SOONG_% \ TOPDIR \ TRACE_BEGIN_SOONG \ - BOARD_PLAT_PUBLIC_SEPOLICY_DIR \ - BOARD_PLAT_PRIVATE_SEPOLICY_DIR \ - USER \ - SOONG_% \ - PRODUCT_COPY_OUT_%)\ -$(file >$(OUT_DIR)/dump-variables-rbc-temp.txt,$(subst $(space),$(newline),$(filter-out $(_dump_variables_rbc_excluded),$(.VARIABLES)))) + USER) +$(file >$(OUT_DIR)/dump-variables-rbc-temp.txt,$(subst $(space),$(newline),$(sort $(filter-out $(_dump_variables_rbc_excluded),$(.VARIABLES))))) $(file >$(1),\ $(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\ $(v) := $(strip $($(v)))$(newline))\ -$(foreach ns,$(SOONG_CONFIG_NAMESPACES),\ -$(foreach v,$(SOONG_CONFIG_$(ns)),\ +$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\ +$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\ $$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline)))) endef diff --git a/core/product_config.rbc b/core/product_config.rbc index 11064f33b9..8a83a93af5 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -162,7 +162,7 @@ def _product_configuration(top_pcm_name, top_pcm, input_variables_init): globals["PRODUCTS."+name+".mk.ARTIFACT_PATH_ALLOWED_LIST"] = handle.artifact_path_allowed_list globals["PRODUCTS."+name+".mk.ARTIFACT_PATH_REQUIREMENT_IS_RELAXED"] = "true" if handle.artifact_path_requirement_is_relaxed[0] else "" globals.setdefault("ARTIFACT_PATH_REQUIREMENT_PRODUCTS", []) - globals["ARTIFACT_PATH_REQUIREMENT_PRODUCTS"] += [name+".mk"] + globals["ARTIFACT_PATH_REQUIREMENT_PRODUCTS"] = sorted(globals["ARTIFACT_PATH_REQUIREMENT_PRODUCTS"] + [name+".mk"]) # Now we know everything about this PCM, record it in 'configs'. children = handle.inherited_modules