Decouple the target build variant from the platform
Bug: 301334589 Test: Presubmits Change-Id: Id8ac0874a2d132d9965e339fd8dc705a7434bffb
This commit is contained in:
@@ -665,7 +665,8 @@ func (context *mixedBuildBazelContext) createBazelCommand(config Config, runName
|
|||||||
command.expression,
|
command.expression,
|
||||||
"--profile=" + shared.BazelMetricsFilename(context.paths, runName),
|
"--profile=" + shared.BazelMetricsFilename(context.paths, runName),
|
||||||
|
|
||||||
"--host_platform=@soong_injection//product_config_platforms:mixed_builds_product-" + context.targetBuildVariant + "_" + runtime.GOOS + "_x86_64",
|
"--host_platform=@soong_injection//product_config_platforms:mixed_builds_product_" + runtime.GOOS + "_x86_64",
|
||||||
|
"--//build/bazel/product_config:target_build_variant=" + context.targetBuildVariant,
|
||||||
// Don't specify --platforms, because on some products/branches (like kernel-build-tools)
|
// Don't specify --platforms, because on some products/branches (like kernel-build-tools)
|
||||||
// the main platform for mixed_builds_product-variant doesn't exist because an arch isn't
|
// the main platform for mixed_builds_product-variant doesn't exist because an arch isn't
|
||||||
// specified in product config. The derivative platforms that config_node transitions into
|
// specified in product config. The derivative platforms that config_node transitions into
|
||||||
@@ -720,9 +721,9 @@ func (context *mixedBuildBazelContext) mainBzlFileContents() []byte {
|
|||||||
#####################################################
|
#####################################################
|
||||||
def _config_node_transition_impl(settings, attr):
|
def _config_node_transition_impl(settings, attr):
|
||||||
if attr.os == "android" and attr.arch == "target":
|
if attr.os == "android" and attr.arch == "target":
|
||||||
target = "mixed_builds_product-{VARIANT}"
|
target = "mixed_builds_product"
|
||||||
else:
|
else:
|
||||||
target = "mixed_builds_product-{VARIANT}_%s_%s" % (attr.os, attr.arch)
|
target = "mixed_builds_product_%s_%s" % (attr.os, attr.arch)
|
||||||
apex_name = ""
|
apex_name = ""
|
||||||
if attr.within_apex:
|
if attr.within_apex:
|
||||||
# //build/bazel/rules/apex:apex_name has to be set to a non_empty value,
|
# //build/bazel/rules/apex:apex_name has to be set to a non_empty value,
|
||||||
@@ -794,11 +795,7 @@ phony_root = rule(
|
|||||||
)
|
)
|
||||||
`
|
`
|
||||||
|
|
||||||
productReplacer := strings.NewReplacer(
|
return []byte(contents)
|
||||||
"{PRODUCT}", context.targetProduct,
|
|
||||||
"{VARIANT}", context.targetBuildVariant)
|
|
||||||
|
|
||||||
return []byte(productReplacer.Replace(contents))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (context *mixedBuildBazelContext) mainBuildFileContents() []byte {
|
func (context *mixedBuildBazelContext) mainBuildFileContents() []byte {
|
||||||
@@ -972,9 +969,9 @@ def get_arch(target):
|
|||||||
platform_name = platforms[0].name
|
platform_name = platforms[0].name
|
||||||
if platform_name == "host":
|
if platform_name == "host":
|
||||||
return "HOST"
|
return "HOST"
|
||||||
if not platform_name.startswith("mixed_builds_product-{TARGET_BUILD_VARIANT}"):
|
if not platform_name.startswith("mixed_builds_product"):
|
||||||
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 'mixed_builds_product_android_<arch>' or 'mixed_builds_product_linux_<arch>', but was " + str(platforms))
|
||||||
platform_name = platform_name.removeprefix("mixed_builds_product-{TARGET_BUILD_VARIANT}").removeprefix("_")
|
platform_name = platform_name.removeprefix("mixed_builds_product").removeprefix("_")
|
||||||
config_key = ""
|
config_key = ""
|
||||||
if not platform_name:
|
if not platform_name:
|
||||||
config_key = "target|android"
|
config_key = "target|android"
|
||||||
@@ -983,7 +980,7 @@ def get_arch(target):
|
|||||||
elif platform_name.startswith("linux_"):
|
elif platform_name.startswith("linux_"):
|
||||||
config_key = platform_name.removeprefix("linux_") + "|linux"
|
config_key = platform_name.removeprefix("linux_") + "|linux"
|
||||||
else:
|
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 'mixed_builds_product_android_<arch>' or 'mixed_builds_product_linux_<arch>', but was " + str(platforms))
|
||||||
|
|
||||||
within_apex = buildoptions.get("//build/bazel/rules/apex:within_apex")
|
within_apex = buildoptions.get("//build/bazel/rules/apex:within_apex")
|
||||||
apex_sdk_version = buildoptions.get("//build/bazel/rules/apex:min_sdk_version")
|
apex_sdk_version = buildoptions.get("//build/bazel/rules/apex:min_sdk_version")
|
||||||
@@ -1012,8 +1009,6 @@ def format(target):
|
|||||||
return id_string + ">>NONE"
|
return id_string + ">>NONE"
|
||||||
`
|
`
|
||||||
replacer := strings.NewReplacer(
|
replacer := strings.NewReplacer(
|
||||||
"{TARGET_PRODUCT}", context.targetProduct,
|
|
||||||
"{TARGET_BUILD_VARIANT}", context.targetBuildVariant,
|
|
||||||
"{LABEL_REGISTRATION_MAP_SECTION}", labelRegistrationMapSection,
|
"{LABEL_REGISTRATION_MAP_SECTION}", labelRegistrationMapSection,
|
||||||
"{FUNCTION_DEF_SECTION}", functionDefSection,
|
"{FUNCTION_DEF_SECTION}", functionDefSection,
|
||||||
"{MAIN_SWITCH_SECTION}", mainSwitchSection)
|
"{MAIN_SWITCH_SECTION}", mainSwitchSection)
|
||||||
|
@@ -53,9 +53,9 @@ func createProductConfigFiles(
|
|||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
|
|
||||||
currentProductFolder := fmt.Sprintf("build/bazel/products/%s-%s", targetProduct, targetBuildVariant)
|
currentProductFolder := fmt.Sprintf("build/bazel/products/%s", targetProduct)
|
||||||
if len(productVariables.PartitionVars.ProductDirectory) > 0 {
|
if len(productVariables.PartitionVars.ProductDirectory) > 0 {
|
||||||
currentProductFolder = fmt.Sprintf("%s%s-%s", productVariables.PartitionVars.ProductDirectory, targetProduct, targetBuildVariant)
|
currentProductFolder = fmt.Sprintf("%s%s", productVariables.PartitionVars.ProductDirectory, targetProduct)
|
||||||
}
|
}
|
||||||
|
|
||||||
productReplacer := strings.NewReplacer(
|
productReplacer := strings.NewReplacer(
|
||||||
@@ -73,7 +73,7 @@ func createProductConfigFiles(
|
|||||||
}
|
}
|
||||||
|
|
||||||
productLabelsToVariables := make(map[string]*android.ProductVariables)
|
productLabelsToVariables := make(map[string]*android.ProductVariables)
|
||||||
productLabelsToVariables[productReplacer.Replace("@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}")] = &productVariables
|
productLabelsToVariables[productReplacer.Replace("@//{PRODUCT_FOLDER}:{PRODUCT}")] = &productVariables
|
||||||
for product, productVariablesStarlark := range productsForTestingMap {
|
for product, productVariablesStarlark := range productsForTestingMap {
|
||||||
productVariables, err := starlarkMapToProductVariables(productVariablesStarlark)
|
productVariables, err := starlarkMapToProductVariables(productVariablesStarlark)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -84,10 +84,10 @@ func createProductConfigFiles(
|
|||||||
|
|
||||||
res.bp2buildTargets = make(map[string]BazelTargets)
|
res.bp2buildTargets = make(map[string]BazelTargets)
|
||||||
res.bp2buildTargets[currentProductFolder] = append(res.bp2buildTargets[currentProductFolder], BazelTarget{
|
res.bp2buildTargets[currentProductFolder] = append(res.bp2buildTargets[currentProductFolder], BazelTarget{
|
||||||
name: productReplacer.Replace("{PRODUCT}-{VARIANT}"),
|
name: productReplacer.Replace("{PRODUCT}"),
|
||||||
packageName: currentProductFolder,
|
packageName: currentProductFolder,
|
||||||
content: productReplacer.Replace(`android_product(
|
content: productReplacer.Replace(`android_product(
|
||||||
name = "{PRODUCT}-{VARIANT}",
|
name = "{PRODUCT}",
|
||||||
soong_variables = _soong_variables,
|
soong_variables = _soong_variables,
|
||||||
)`),
|
)`),
|
||||||
ruleClass: "android_product",
|
ruleClass: "android_product",
|
||||||
@@ -134,7 +134,7 @@ load("@//build/bazel/product_config:android_product.bzl", "android_product")
|
|||||||
# extra rebuilding, make mixed builds always use a single platform so that the bazel artifacts
|
# extra rebuilding, make mixed builds always use a single platform so that the bazel artifacts
|
||||||
# are always under the same path.
|
# are always under the same path.
|
||||||
android_product(
|
android_product(
|
||||||
name = "mixed_builds_product-{VARIANT}",
|
name = "mixed_builds_product",
|
||||||
soong_variables = _soong_variables,
|
soong_variables = _soong_variables,
|
||||||
extra_constraints = ["@//build/bazel/platforms:mixed_builds"],
|
extra_constraints = ["@//build/bazel/platforms:mixed_builds"],
|
||||||
)
|
)
|
||||||
@@ -148,34 +148,35 @@ android_product(
|
|||||||
# TODO: When we start generating the platforms for more than just the
|
# TODO: When we start generating the platforms for more than just the
|
||||||
# currently lunched product, they should all be listed here
|
# currently lunched product, they should all be listed here
|
||||||
product_labels = [
|
product_labels = [
|
||||||
"@soong_injection//product_config_platforms:mixed_builds_product-{VARIANT}",
|
"@soong_injection//product_config_platforms:mixed_builds_product",
|
||||||
"@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}",
|
"@//{PRODUCT_FOLDER}:{PRODUCT}",
|
||||||
`)+strings.Join(productsForTesting, "\n")+"\n]\n"),
|
`)+strings.Join(productsForTesting, "\n")+"\n]\n"),
|
||||||
newFile(
|
newFile(
|
||||||
"product_config_platforms",
|
"product_config_platforms",
|
||||||
"common.bazelrc",
|
"common.bazelrc",
|
||||||
productReplacer.Replace(`
|
productReplacer.Replace(`
|
||||||
build --platform_mappings=platform_mappings
|
build --platform_mappings=platform_mappings
|
||||||
build --platforms @//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_x86_64
|
build --platforms @//{PRODUCT_FOLDER}:{PRODUCT}_linux_x86_64
|
||||||
|
build --//build/bazel/product_config:target_build_variant={VARIANT}
|
||||||
|
|
||||||
build:android --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}
|
build:android --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}
|
||||||
build:linux_x86 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_x86
|
build:linux_x86 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}_linux_x86
|
||||||
build:linux_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_x86_64
|
build:linux_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}_linux_x86_64
|
||||||
build:linux_bionic_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_bionic_x86_64
|
build:linux_bionic_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}_linux_bionic_x86_64
|
||||||
build:linux_musl_x86 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_musl_x86
|
build:linux_musl_x86 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}_linux_musl_x86
|
||||||
build:linux_musl_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_musl_x86_64
|
build:linux_musl_x86_64 --platforms=@//{PRODUCT_FOLDER}:{PRODUCT}_linux_musl_x86_64
|
||||||
`)),
|
`)),
|
||||||
newFile(
|
newFile(
|
||||||
"product_config_platforms",
|
"product_config_platforms",
|
||||||
"linux.bazelrc",
|
"linux.bazelrc",
|
||||||
productReplacer.Replace(`
|
productReplacer.Replace(`
|
||||||
build --host_platform @//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_linux_x86_64
|
build --host_platform @//{PRODUCT_FOLDER}:{PRODUCT}_linux_x86_64
|
||||||
`)),
|
`)),
|
||||||
newFile(
|
newFile(
|
||||||
"product_config_platforms",
|
"product_config_platforms",
|
||||||
"darwin.bazelrc",
|
"darwin.bazelrc",
|
||||||
productReplacer.Replace(`
|
productReplacer.Replace(`
|
||||||
build --host_platform @//{PRODUCT_FOLDER}:{PRODUCT}-{VARIANT}_darwin_x86_64
|
build --host_platform @//{PRODUCT_FOLDER}:{PRODUCT}_darwin_x86_64
|
||||||
`)),
|
`)),
|
||||||
}
|
}
|
||||||
res.bp2buildFiles = []BazelFile{
|
res.bp2buildFiles = []BazelFile{
|
||||||
@@ -237,12 +238,6 @@ func platformMappingSingleProduct(
|
|||||||
soongConfigDefinitions soongconfig.Bp2BuildSoongConfigDefinitions,
|
soongConfigDefinitions soongconfig.Bp2BuildSoongConfigDefinitions,
|
||||||
convertedModulePathMap map[string]string,
|
convertedModulePathMap map[string]string,
|
||||||
result *strings.Builder) {
|
result *strings.Builder) {
|
||||||
targetBuildVariant := "user"
|
|
||||||
if proptools.Bool(productVariables.Eng) {
|
|
||||||
targetBuildVariant = "eng"
|
|
||||||
} else if proptools.Bool(productVariables.Debuggable) {
|
|
||||||
targetBuildVariant = "userdebug"
|
|
||||||
}
|
|
||||||
|
|
||||||
platform_sdk_version := -1
|
platform_sdk_version := -1
|
||||||
if productVariables.Platform_sdk_version != nil {
|
if productVariables.Platform_sdk_version != nil {
|
||||||
@@ -270,7 +265,6 @@ func platformMappingSingleProduct(
|
|||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:cfi_exclude_paths=%s\n", strings.Join(productVariables.CFIExcludePaths, ",")))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:cfi_exclude_paths=%s\n", strings.Join(productVariables.CFIExcludePaths, ",")))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:cfi_include_paths=%s\n", strings.Join(productVariables.CFIIncludePaths, ",")))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:cfi_include_paths=%s\n", strings.Join(productVariables.CFIIncludePaths, ",")))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:compressed_apex=%t\n", proptools.Bool(productVariables.CompressedApex)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:compressed_apex=%t\n", proptools.Bool(productVariables.CompressedApex)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:debuggable=%t\n", proptools.Bool(productVariables.Debuggable)))
|
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:default_app_certificate=%s\n", proptools.String(productVariables.DefaultAppCertificate)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:default_app_certificate=%s\n", proptools.String(productVariables.DefaultAppCertificate)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:default_app_certificate_filegroup=%s\n", defaultAppCertificateFilegroup))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:default_app_certificate_filegroup=%s\n", defaultAppCertificateFilegroup))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_abi=%s\n", strings.Join(productVariables.DeviceAbi, ",")))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_abi=%s\n", strings.Join(productVariables.DeviceAbi, ",")))
|
||||||
@@ -281,7 +275,6 @@ func platformMappingSingleProduct(
|
|||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_platform=%s\n", label))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_platform=%s\n", label))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enable_cfi=%t\n", proptools.BoolDefault(productVariables.EnableCFI, true)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enable_cfi=%t\n", proptools.BoolDefault(productVariables.EnableCFI, true)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enforce_vintf_manifest=%t\n", proptools.Bool(productVariables.Enforce_vintf_manifest)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enforce_vintf_manifest=%t\n", proptools.Bool(productVariables.Enforce_vintf_manifest)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:eng=%t\n", proptools.Bool(productVariables.Eng)))
|
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_not_svelte=%t\n", proptools.Bool(productVariables.Malloc_not_svelte)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_not_svelte=%t\n", proptools.Bool(productVariables.Malloc_not_svelte)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_pattern_fill_contents=%t\n", proptools.Bool(productVariables.Malloc_pattern_fill_contents)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_pattern_fill_contents=%t\n", proptools.Bool(productVariables.Malloc_pattern_fill_contents)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_zero_contents=%t\n", proptools.Bool(productVariables.Malloc_zero_contents)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:malloc_zero_contents=%t\n", proptools.Bool(productVariables.Malloc_zero_contents)))
|
||||||
@@ -301,7 +294,6 @@ func platformMappingSingleProduct(
|
|||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_version=%s\n", productVariables.ReleaseVersion))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_version=%s\n", productVariables.ReleaseVersion))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:platform_sdk_version=%d\n", platform_sdk_version))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:platform_sdk_version=%d\n", platform_sdk_version))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:safestack=%t\n", proptools.Bool(productVariables.Safestack)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:safestack=%t\n", proptools.Bool(productVariables.Safestack)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:target_build_variant=%s\n", targetBuildVariant))
|
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:treble_linker_namespaces=%t\n", proptools.Bool(productVariables.Treble_linker_namespaces)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:treble_linker_namespaces=%t\n", proptools.Bool(productVariables.Treble_linker_namespaces)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:tidy_checks=%s\n", proptools.String(productVariables.TidyChecks)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:tidy_checks=%s\n", proptools.String(productVariables.TidyChecks)))
|
||||||
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:uml=%t\n", proptools.Bool(productVariables.Uml)))
|
result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:uml=%t\n", proptools.Bool(productVariables.Uml)))
|
||||||
|
Reference in New Issue
Block a user