Merge "Support per-partition settings for os_version AVB props"
diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk
index 777aec5..6c32da4 100644
--- a/core/android_soong_config_vars.mk
+++ b/core/android_soong_config_vars.mk
@@ -52,9 +52,9 @@
# However, sdk/win_sdk/sdk_addon builds might not include com.google.android.xxx
# packages, so for those we respect the default behavior.
MODULE_BUILD_FROM_SOURCE := true
-else ifeq (,$(filter-out modules_% mainline_modules_%,$(TARGET_PRODUCT)))
- # Always build from source in unbundled builds using the module targets.
- MODULE_BUILD_FROM_SOURCE := true
+else ifneq (,$(PRODUCT_MODULE_BUILD_FROM_SOURCE))
+ # Let products override the branch default.
+ MODULE_BUILD_FROM_SOURCE := $(PRODUCT_MODULE_BUILD_FROM_SOURCE)
else
MODULE_BUILD_FROM_SOURCE := $(BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE)
endif
@@ -64,10 +64,6 @@
else ifneq (,$(findstring .android.art,$(TARGET_BUILD_APPS)))
# Build ART modules from source if they are listed in TARGET_BUILD_APPS.
ART_MODULE_BUILD_FROM_SOURCE := true
-else ifeq (,$(filter-out modules_% mainline_modules_%,$(TARGET_PRODUCT)))
- # Always build from source for the module targets. This ought to be covered by
- # the TARGET_BUILD_APPS check above, but there are test builds that don't set it.
- ART_MODULE_BUILD_FROM_SOURCE := true
else
# Do the same as other modules by default.
ART_MODULE_BUILD_FROM_SOURCE := $(MODULE_BUILD_FROM_SOURCE)
diff --git a/core/board_config.mk b/core/board_config.mk
index 5ca2a4c..72a8044 100644
--- a/core/board_config.mk
+++ b/core/board_config.mk
@@ -243,7 +243,7 @@
$(shell mkdir -p $(OUT_DIR)/rbc)
$(call dump-variables-rbc, $(OUT_DIR)/rbc/make_vars_pre_board_config.mk)
- $(shell $(OUT_DIR)/soong/mk2rbc \
+ $(shell $(OUT_DIR)/mk2rbc \
--mode=write -r --outdir $(OUT_DIR)/rbc \
--boardlauncher=$(OUT_DIR)/rbc/boardlauncher.rbc \
--input_variables=$(OUT_DIR)/rbc/make_vars_pre_board_config.mk \
@@ -254,7 +254,7 @@
endif
$(shell build/soong/scripts/update_out $(OUT_DIR)/rbc/rbc_board_config_results.mk \
- $(OUT_DIR)/soong/rbcrun RBC_OUT="make,global" $(OUT_DIR)/rbc/boardlauncher.rbc)
+ $(OUT_DIR)/rbcrun RBC_OUT="make,global" $(OUT_DIR)/rbc/boardlauncher.rbc)
ifneq ($(.SHELLSTATUS),0)
$(error board configuration runner failed: $(.SHELLSTATUS))
endif
diff --git a/core/build-system.html b/core/build-system.html
index b872909c..181e939 100644
--- a/core/build-system.html
+++ b/core/build-system.html
@@ -444,8 +444,12 @@
<p>Unbundled build has several meanings by the context.
Let me explain the meaning by the flags related to "unbundled build"</p>
<h4>TARGET_BUILD_UNBUNDLED</h4>
-<p>The source tree might not have the full platform sources. It is always set if
-<code>TARGET_BUILD_APPS</code> or <code>TARGET_BUILD_UNBUNDLED_IMAGE</code> is set.</p>
+<p>
+ The source tree might not have the full platform sources. It turns on
+ <code>TARGET_BUILD_USE_PREBUILT_SDKS</code>, unless
+ <code>UNBUNDLED_BUILD_SDKS_FROM_SOURCE</code> is set. It is always set if
+ <code>TARGET_BUILD_APPS</code> or <code>TARGET_BUILD_UNBUNDLED_IMAGE</code> is set.
+</p>
<h4>TARGET_BUILD_USE_PREBUILT_SDKS</h4>
<p>It is an internal flag. If it is set, prebuilt SDKs are used, even if a module's
<code>LOCAL_SDK_VERSION</code> is <code>current</code> (including <code>system_current</code>,
diff --git a/core/config.mk b/core/config.mk
index 48aa724..e2bdcbd 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -496,7 +496,9 @@
DISABLE_PREOPT :=
ifneq (,$(TARGET_BUILD_APPS)$(TARGET_BUILD_UNBUNDLED_IMAGE))
DISABLE_PREOPT := true
- ifndef UNBUNDLED_BUILD_SDKS_FROM_SOURCE
+endif
+ifeq (true,$(TARGET_BUILD_UNBUNDLED))
+ ifneq (true,$(UNBUNDLED_BUILD_SDKS_FROM_SOURCE))
TARGET_BUILD_USE_PREBUILT_SDKS := true
endif
endif
diff --git a/core/product.mk b/core/product.mk
index 4ddc4fe..1f304cd 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -370,6 +370,10 @@
# "/system/framework/foo.jar" will be "system/framework/foo.jar.fsv_meta".
_product_single_value_vars += PRODUCT_SYSTEM_FSVERITY_GENERATE_METADATA
+# If true, sets the default for MODULE_BUILD_FROM_SOURCE. This overrides
+# BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE but not an explicitly set value.
+_product_single_value_vars += PRODUCT_MODULE_BUILD_FROM_SOURCE
+
.KATI_READONLY := _product_single_value_vars _product_list_vars
_product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars)
diff --git a/envsetup.sh b/envsetup.sh
index 87e6e0a..7331d5e 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -1727,15 +1727,17 @@
# Convenience entry point (like m) to use Bazel in AOSP.
function b()
(
+ local skip_tests=$(echo "$@" | grep -ow -- "--skip-soong-tests")
+ local bazel_args=(${@/--skip-soong-tests/})
# Generate BUILD, bzl files into the synthetic Bazel workspace (out/soong/workspace).
- _trigger_build "all-modules" bp2build USE_BAZEL_ANALYSIS= || return 1
+ _trigger_build "all-modules" bp2build USE_BAZEL_ANALYSIS= "$skip_tests" || return 1
# Then, run Bazel using the synthetic workspace as the --package_path.
- if [[ -z "$@" ]]; then
+ if [[ -z "$bazel_args" ]]; then
# If there are no args, show help.
bazel help
else
# Else, always run with the bp2build configuration, which sets Bazel's package path to the synthetic workspace.
- bazel "$@" --config=bp2build
+ bazel $bazel_args --config=bp2build
fi
)
diff --git a/target/product/module_common.mk b/target/product/module_common.mk
index 03340db..54f3949 100644
--- a/target/product/module_common.mk
+++ b/target/product/module_common.mk
@@ -21,3 +21,7 @@
# Enables treble, which enabled certain -D compilation flags. In particular, libhidlbase
# uses -DENFORCE_VINTF_MANIFEST. See b/185759877
PRODUCT_SHIPPING_API_LEVEL := 29
+
+# Builds using a module product should build modules from source, even if
+# BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE says otherwise.
+PRODUCT_MODULE_BUILD_FROM_SOURCE := true