Use product variables from the overridden apex
override_apex's bp2build converter had a bug where it was looking at the product variables for the override_apex module itself instead of for the base module it is overriding. Fixes: 271424349 Test: go test Change-Id: If1e2653d3751fa908faf0ab97dfa2e943ebe98ec
This commit is contained in:
@@ -61,7 +61,10 @@ func registerOverrideApexModuleTypes(ctx android.RegistrationContext) {
|
||||
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
||||
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
||||
ctx.RegisterModuleType("apex", apex.BundleFactory)
|
||||
ctx.RegisterModuleType("apex_defaults", apex.DefaultsFactory)
|
||||
ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory)
|
||||
ctx.RegisterModuleType("soong_config_module_type", android.SoongConfigModuleTypeFactory)
|
||||
ctx.RegisterModuleType("soong_config_string_variable", android.SoongConfigStringVariableDummyFactory)
|
||||
}
|
||||
|
||||
func TestApexBundleSimple(t *testing.T) {
|
||||
@@ -1359,3 +1362,87 @@ apex_test {
|
||||
}),
|
||||
}})
|
||||
}
|
||||
|
||||
func TestApexBundle_overridePlusProductVars(t *testing.T) {
|
||||
// Reproduction of b/271424349
|
||||
// Tests that overriding an apex that uses product variables correctly copies the product var
|
||||
// selects over to the override.
|
||||
runOverrideApexTestCase(t, Bp2buildTestCase{
|
||||
Description: "apex - overriding a module that uses product vars",
|
||||
ModuleTypeUnderTest: "override_apex",
|
||||
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
|
||||
Blueprint: `
|
||||
soong_config_string_variable {
|
||||
name: "library_linking_strategy",
|
||||
values: [
|
||||
"prefer_static",
|
||||
],
|
||||
}
|
||||
|
||||
soong_config_module_type {
|
||||
name: "library_linking_strategy_apex_defaults",
|
||||
module_type: "apex_defaults",
|
||||
config_namespace: "ANDROID",
|
||||
variables: ["library_linking_strategy"],
|
||||
properties: [
|
||||
"manifest",
|
||||
"min_sdk_version",
|
||||
],
|
||||
}
|
||||
|
||||
library_linking_strategy_apex_defaults {
|
||||
name: "higher_min_sdk_when_prefer_static",
|
||||
soong_config_variables: {
|
||||
library_linking_strategy: {
|
||||
// Use the R min_sdk_version
|
||||
prefer_static: {},
|
||||
// Override the R min_sdk_version to min_sdk_version that supports dcla
|
||||
conditions_default: {
|
||||
min_sdk_version: "31",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "foo-file_contexts",
|
||||
srcs: [
|
||||
"com.android.apogee-file_contexts",
|
||||
],
|
||||
bazel_module: { bp2build_available: false },
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "foo",
|
||||
defaults: ["higher_min_sdk_when_prefer_static"],
|
||||
min_sdk_version: "30",
|
||||
package_name: "pkg_name",
|
||||
file_contexts: ":foo-file_contexts",
|
||||
}
|
||||
override_apex {
|
||||
name: "override_foo",
|
||||
base: ":foo",
|
||||
package_name: "override_pkg_name",
|
||||
}
|
||||
`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("apex", "foo", AttrNameToString{
|
||||
"file_contexts": `":foo-file_contexts"`,
|
||||
"manifest": `"apex_manifest.json"`,
|
||||
"min_sdk_version": `select({
|
||||
"//build/bazel/product_variables:android__library_linking_strategy__prefer_static": "30",
|
||||
"//conditions:default": "31",
|
||||
})`,
|
||||
"package_name": `"pkg_name"`,
|
||||
}), MakeBazelTarget("apex", "override_foo", AttrNameToString{
|
||||
"base_apex_name": `"foo"`,
|
||||
"file_contexts": `":foo-file_contexts"`,
|
||||
"manifest": `"apex_manifest.json"`,
|
||||
"min_sdk_version": `select({
|
||||
"//build/bazel/product_variables:android__library_linking_strategy__prefer_static": "30",
|
||||
"//conditions:default": "31",
|
||||
})`,
|
||||
"package_name": `"override_pkg_name"`,
|
||||
}),
|
||||
}})
|
||||
}
|
||||
|
Reference in New Issue
Block a user