Revert "Remove --noexperimental_platform_in_output_dir"
This reverts commit 24af24e0f28796ed1ca4f519cde9340773ee8156.
Reason for revert: Breaks kernel build tools build https://ci.android.com/builds/branches/aosp_kernel-build-tools/grid?head=10282004&tail=10282004
Change-Id: I486d7f305d44cfecc51a0e039cc41c0afa6495f3
diff --git a/android/bazel_handler.go b/android/bazel_handler.go
index 333012e..d71eca2 100644
--- a/android/bazel_handler.go
+++ b/android/bazel_handler.go
@@ -665,20 +665,26 @@
func (context *mixedBuildBazelContext) createBazelCommand(config Config, runName bazel.RunName, command bazelCommand,
extraFlags ...string) bazel.CmdRequest {
- if runtime.GOOS != "linux" && runtime.GOOS != "darwin" {
- panic("Unknown GOOS: " + runtime.GOOS)
- }
cmdFlags := []string{
"--output_base=" + absolutePath(context.paths.outputBase),
command.command,
command.expression,
"--profile=" + shared.BazelMetricsFilename(context.paths, runName),
- "--host_platform=@soong_injection//product_config_platforms:mixed_builds_product-" + context.targetBuildVariant + "_" + runtime.GOOS + "_x86_64",
- // This --platforms flag largely doesn't matter, because the config_nodes will
- // transition into the right configuration. This is just to make sure we use the
- // mixed_builds_product everywhere.
- "--platforms=@soong_injection//product_config_platforms:mixed_builds_product-" + context.targetBuildVariant,
+ // We don't need to set --host_platforms because it's set in bazelrc files
+ // that the bazel shell script wrapper passes
+
+ // Optimize Ninja rebuilds by ensuring Bazel write into product-agnostic
+ // output paths for the configured targets that shouldn't be affected by
+ // TARGET_PRODUCT. Otherwise product agnostic modules will be rebuilt by
+ // Ninja when the product changes, unconditionally.
+ //
+ // For example, Mainline APEXes should be identical regardless of the
+ // product (modulo arch/cpu).
+ //
+ // This flag forcibly disables the platform prefix in the intermediate
+ // outputs during a mixed build.
+ "--noexperimental_platform_in_output_dir",
// Suppress noise
"--ui_event_filters=-INFO",
@@ -725,9 +731,9 @@
#####################################################
def _config_node_transition_impl(settings, attr):
if attr.os == "android" and attr.arch == "target":
- target = "mixed_builds_product-{VARIANT}"
+ target = "current_product-{VARIANT}"
else:
- target = "mixed_builds_product-{VARIANT}_%s_%s" % (attr.os, attr.arch)
+ target = "current_product-{VARIANT}_%s_%s" % (attr.os, attr.arch)
apex_name = ""
if attr.within_apex:
# //build/bazel/rules/apex:apex_name has to be set to a non_empty value,
@@ -964,9 +970,9 @@
platform_name = platforms[0].name
if platform_name == "host":
return "HOST"
- if not platform_name.startswith("mixed_builds_product-{TARGET_BUILD_VARIANT}"):
- fail("expected platform name of the form 'mixed_builds_product-{TARGET_BUILD_VARIANT}_android_<arch>' or 'mixed_builds_product-{TARGET_BUILD_VARIANT}_linux_<arch>', but was " + str(platforms))
- platform_name = platform_name.removeprefix("mixed_builds_product-{TARGET_BUILD_VARIANT}").removeprefix("_")
+ if not platform_name.startswith("current_product-{TARGET_BUILD_VARIANT}"):
+ fail("expected platform name of the form 'current_product-{TARGET_BUILD_VARIANT}_android_<arch>' or 'current_product-{TARGET_BUILD_VARIANT}_linux_<arch>', but was " + str(platforms))
+ platform_name = platform_name.removeprefix("current_product-{TARGET_BUILD_VARIANT}").removeprefix("_")
config_key = ""
if not platform_name:
config_key = "target|android"
@@ -975,7 +981,7 @@
elif platform_name.startswith("linux_"):
config_key = platform_name.removeprefix("linux_") + "|linux"
else:
- fail("expected platform name of the form 'mixed_builds_product-{TARGET_BUILD_VARIANT}_android_<arch>' or 'mixed_builds_product-{TARGET_BUILD_VARIANT}_linux_<arch>', but was " + str(platforms))
+ fail("expected platform name of the form 'current_product-{TARGET_BUILD_VARIANT}_android_<arch>' or 'current_product-{TARGET_BUILD_VARIANT}_linux_<arch>', but was " + str(platforms))
within_apex = buildoptions.get("//build/bazel/rules/apex:within_apex")
apex_sdk_version = buildoptions.get("//build/bazel/rules/apex:min_sdk_version")