Handle nil enabled values
If enabled does not appear inside `soong_config_vars`, we can ignore it.
Bug: 210546943
Test: go test ./bp2build
Change-Id: I9e4d51c3b683f262921449634f827915ce87dc8d
diff --git a/android/module.go b/android/module.go
index 0120a54..a662130 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1434,7 +1434,10 @@
ctx.ModuleErrorf("Could not convert product variable enabled property")
}
- if *flag {
+ if flag == nil {
+ // soong config var is not used to set `enabled`. nothing to do.
+ continue
+ } else if *flag {
axis := productConfigProp.ConfigurationAxis()
result.SetSelectValue(axis, bazel.ConditionsDefaultConfigKey, bazel.MakeLabelList([]bazel.Label{{Label: "@platforms//:incompatible"}}))
result.SetSelectValue(axis, productConfigProp.SelectKey(), bazel.LabelList{Includes: []bazel.Label{}})
diff --git a/bp2build/soong_config_module_type_conversion_test.go b/bp2build/soong_config_module_type_conversion_test.go
index 1ff47f2..b91cf6d 100644
--- a/bp2build/soong_config_module_type_conversion_test.go
+++ b/bp2build/soong_config_module_type_conversion_test.go
@@ -1520,3 +1520,58 @@
runSoongConfigModuleTypeTest(t, bp2buildTestCase)
}
}
+
+func TestNoPanicIfEnabledIsNotUsed(t *testing.T) {
+ bp := `
+soong_config_string_variable {
+ name: "my_string_variable",
+ values: ["val1", "val2"],
+}
+soong_config_module_type {
+ name: "special_cc_defaults",
+ module_type: "cc_defaults",
+ config_namespace: "my_namespace",
+ variables: ["my_string_variable"],
+ properties: [
+ "cflags",
+ "enabled",
+ ],
+}
+special_cc_defaults {
+ name: "my_special_cc_defaults",
+ soong_config_variables: {
+ my_string_variable: {
+ val1: {
+ cflags: ["-DFOO"],
+ },
+ val2: {
+ cflags: ["-DBAR"],
+ },
+ },
+ },
+}
+cc_binary {
+ name: "my_binary",
+ enabled: false,
+ defaults: ["my_special_cc_defaults"],
+}
+`
+ tc := Bp2buildTestCase{
+ Description: "Soong config vars is not used to set `enabled` property",
+ ModuleTypeUnderTest: "cc_binary",
+ ModuleTypeUnderTestFactory: cc.BinaryFactory,
+ Blueprint: bp,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("cc_binary", "my_binary", AttrNameToString{
+ "copts": `select({
+ "//build/bazel/product_config/config_settings:my_namespace__my_string_variable__val1": ["-DFOO"],
+ "//build/bazel/product_config/config_settings:my_namespace__my_string_variable__val2": ["-DBAR"],
+ "//conditions:default": [],
+ })`,
+ "local_includes": `["."]`,
+ "target_compatible_with": `["@platforms//:incompatible"]`,
+ }),
+ },
+ }
+ runSoongConfigModuleTypeTest(t, tc)
+}