Allow setting some build_broken out of boardconfig

Some build broken flags are for cross-cutting features rather than
board-specific. In order to support these without requiring broad
changes across many board configs, these can be set in a buildspec.mk
files.

Test: set build_broken flags in environment, get expected fail
Test: set build_broken flags in buildspec, get expected success
Change-Id: I8a74c30575f6bf40e46281ca5f37f3cfed526ec5
This commit is contained in:
Liz Kammer
2023-06-23 11:22:42 -04:00
parent 0ee11559f9
commit b607281fae
3 changed files with 27 additions and 4 deletions

View File

@@ -10,8 +10,9 @@ If you need to extend the build system via a plugin, please reach out to the
build team via email android-building@googlegroups.com (external) for any
questions, or see [go/soong](http://go/soong) (internal).
To omit the validation, `BUILD_BROKEN_PLUGIN_VALIDATION` expects a list of
plugins to omit from the validation.
To omit the validation, `BUILD_BROKEN_PLUGIN_VALIDATION` expects a
space-separated list of plugins to omit from the validation. This must be set
within a product configuration .mk file, board config .mk file, or buildspec.mk.
## Python 2 to 3 migration

View File

@@ -171,7 +171,6 @@ _board_strip_list += ODM_MANIFEST_SKUS
_build_broken_var_list := \
BUILD_BROKEN_PLUGIN_VALIDATION \
BUILD_BROKEN_CLANG_PROPERTY \
BUILD_BROKEN_CLANG_ASFLAGS \
BUILD_BROKEN_CLANG_CFLAGS \
@@ -186,7 +185,6 @@ _build_broken_var_list := \
BUILD_BROKEN_PREBUILT_ELF_FILES \
BUILD_BROKEN_TREBLE_SYSPROP_NEVERALLOW \
BUILD_BROKEN_USES_NETWORK \
BUILD_BROKEN_USES_SOONG_PYTHON2_MODULES \
BUILD_BROKEN_VENDOR_PROPERTY_NAMESPACE \
BUILD_BROKEN_VINTF_PRODUCT_COPY_FILES \

View File

@@ -342,6 +342,23 @@ else
JAVA_TMPDIR_ARG :=
endif
# These build broken variables are intended to be set in a buildspec file,
# while other build broken flags are expected to be set in a board config.
# These are build broken variables that are expected to apply across board
# configs, generally for cross-cutting features.
# Build broken variables that should be treated as booleans
_build_broken_bool_vars := \
BUILD_BROKEN_USES_SOONG_PYTHON2_MODULES \
# Build broken variables that should be treated as lists
_build_broken_list_vars := \
BUILD_BROKEN_PLUGIN_VALIDATION \
_build_broken_var_names := $(_build_broken_bool_vars)
_build_broken_var_names += $(_build_broken_list_vars)
$(foreach v,$(_build_broken_var_names),$(eval $(v) :=))
# ###############################################################
# Include sub-configuration files
# ###############################################################
@@ -371,6 +388,13 @@ endif
# are specific to the user's build configuration.
include $(BUILD_SYSTEM)/envsetup.mk
$(foreach var,$(_build_broken_bool_vars), \
$(if $(filter-out true false,$($(var))), \
$(error Valid values of $(var) are "true", "false", and "". Not "$($(var))")))
.KATI_READONLY := $(_build_broken_var_names)
# Returns true if it is a low memory device, otherwise it returns false.
define is-low-mem-device
$(if $(findstring ro.config.low_ram=true,$(PRODUCT_PROPERTY_OVERRIDES)),true,\