Loading android/allowlists/allowlists.go +18 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,24 @@ var ( // '//bionic/libc:libc_bp2build_cc_library_static' is duplicated in the 'deps' attribute of rule "toybox-static", // Do not convert the following modules because of duplicate labels checking in Bazel. // See b/241283350. They should be removed from this list once the bug is fixed. "libartpalette", "libartbase", "libdexfile", "libartbased", "libdexfile_static", "libartbase-testing", "libartbased-testing", "libdexfile_support", "libunwindstack", "libunwindstack_local", "libfdtrack", "libc_malloc_debug", "libutilscallstack", "libunwindstack_utils", "unwind_for_offline", } Bp2buildCcLibraryStaticOnlyList = []string{} Loading bazel/configurability.go +22 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ const ( archX86_64 = "x86_64" // OsType names in arch.go osAndroid = "android" OsAndroid = "android" osDarwin = "darwin" osLinux = "linux_glibc" osLinuxMusl = "linux_musl" Loading Loading @@ -64,6 +64,9 @@ const ( ConditionsDefaultSelectKey = "//conditions:default" productVariableBazelPackage = "//build/bazel/product_variables" AndroidAndInApex = "android-in_apex" AndroidAndNonApex = "android-non_apex" ) var ( Loading @@ -85,7 +88,7 @@ var ( // A map of target operating systems to the Bazel label of the // constraint_value for the @platforms//os:os constraint_setting platformOsMap = map[string]string{ osAndroid: "//build/bazel/platforms/os:android", OsAndroid: "//build/bazel/platforms/os:android", osDarwin: "//build/bazel/platforms/os:darwin", osLinux: "//build/bazel/platforms/os:linux", osLinuxMusl: "//build/bazel/platforms/os:linux_musl", Loading Loading @@ -120,7 +123,7 @@ var ( // TODO(cparsons): Source from arch.go; this task is nontrivial, as it currently results // in a cyclic dependency. osToArchMap = map[string][]string{ osAndroid: {archArm, archArm64, archX86, archX86_64}, OsAndroid: {archArm, archArm64, archX86, archX86_64}, osLinux: {archX86, archX86_64}, osLinuxMusl: {archX86, archX86_64}, osDarwin: {archArm64, archX86_64}, Loading @@ -128,6 +131,12 @@ var ( // TODO(cparsons): According to arch.go, this should contain archArm, archArm64, as well. osWindows: {archX86, archX86_64}, } osAndInApexMap = map[string]string{ AndroidAndInApex: "//build/bazel/rules/apex:android-in_apex", AndroidAndNonApex: "//build/bazel/rules/apex:android-non_apex", ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, } ) // basic configuration types Loading @@ -139,6 +148,7 @@ const ( os osArch productVariables osAndInApex ) func osArchString(os string, arch string) string { Loading @@ -152,6 +162,7 @@ func (ct configurationType) String() string { os: "os", osArch: "arch_os", productVariables: "product_variables", osAndInApex: "os_in_apex", }[ct] } Loading @@ -175,6 +186,10 @@ func (ct configurationType) validateConfig(config string) { } case productVariables: // do nothing case osAndInApex: if _, ok := osAndInApexMap[config]; !ok { panic(fmt.Errorf("Unknown os+in_apex config: %s", config)) } default: panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct)) } Loading @@ -198,6 +213,8 @@ func (ca ConfigurationAxis) SelectKey(config string) string { return ConditionsDefaultSelectKey } return fmt.Sprintf("%s:%s", productVariableBazelPackage, config) case osAndInApex: return osAndInApexMap[config] default: panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType)) } Loading @@ -212,6 +229,8 @@ var ( OsConfigurationAxis = ConfigurationAxis{configurationType: os} // An axis for arch+os-specific configurations OsArchConfigurationAxis = ConfigurationAxis{configurationType: osArch} // An axis for os+in_apex-specific configurations OsAndInApexAxis = ConfigurationAxis{configurationType: osAndInApex} ) // ProductVariableConfigurationAxis returns an axis for the given product variable Loading bazel/properties.go +9 −9 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ func (la *LabelAttribute) SetSelectValue(axis ConfigurationAxis, config string, switch axis.configurationType { case noConfig: la.Value = &value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if la.ConfigurableValues == nil { la.ConfigurableValues = make(configurableLabels) } Loading @@ -348,7 +348,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) *La switch axis.configurationType { case noConfig: return la.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: return la.ConfigurableValues[axis][config] default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) Loading Loading @@ -424,7 +424,7 @@ func (ba *BoolAttribute) SetSelectValue(axis ConfigurationAxis, config string, v switch axis.configurationType { case noConfig: ba.Value = value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if ba.ConfigurableValues == nil { ba.ConfigurableValues = make(configurableBools) } Loading Loading @@ -540,7 +540,7 @@ func (ba BoolAttribute) SelectValue(axis ConfigurationAxis, config string) *bool switch axis.configurationType { case noConfig: return ba.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if v, ok := ba.ConfigurableValues[axis][config]; ok { return &v } else { Loading Loading @@ -676,7 +676,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str switch axis.configurationType { case noConfig: lla.Value = list case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if lla.ConfigurableValues == nil { lla.ConfigurableValues = make(configurableLabelLists) } Loading @@ -692,8 +692,8 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string switch axis.configurationType { case noConfig: return lla.Value case arch, os, osArch, productVariables: return lla.ConfigurableValues[axis][config] case arch, os, osArch, productVariables, osAndInApex: return (lla.ConfigurableValues[axis][config]) default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) } Loading Loading @@ -1189,7 +1189,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st switch axis.configurationType { case noConfig: sla.Value = list case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if sla.ConfigurableValues == nil { sla.ConfigurableValues = make(configurableStringLists) } Loading @@ -1205,7 +1205,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin switch axis.configurationType { case noConfig: return sla.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: return sla.ConfigurableValues[axis][config] default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) Loading bp2build/cc_library_conversion_test.go +37 −11 Original line number Diff line number Diff line Loading @@ -1301,10 +1301,10 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string { "additional_linker_inputs": true, "linkopts": true, "strip": true, "stubs_symbol_file": true, "stubs_versions": true, "inject_bssl_hash": true, "has_stubs": true, } sharedAttrs := AttrNameToString{} staticAttrs := AttrNameToString{} for key, val := range attrs { Loading @@ -1321,6 +1321,26 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string { return []string{staticTarget, sharedTarget} } func makeCcStubSuiteTargets(name string, attrs AttrNameToString) string { if _, hasStubs := attrs["stubs_symbol_file"]; !hasStubs { return "" } STUB_SUITE_ATTRS := map[string]string{ "stubs_symbol_file": "symbol_file", "stubs_versions": "versions", "soname": "soname", "source_library": "source_library", } stubSuiteAttrs := AttrNameToString{} for key, _ := range attrs { if _, stubSuiteAttr := STUB_SUITE_ATTRS[key]; stubSuiteAttr { stubSuiteAttrs[STUB_SUITE_ATTRS[key]] = attrs[key] } } return makeBazelTarget("cc_stub_suite", name+"_stub_libs", stubSuiteAttrs) } func TestCCLibraryNoLibCrtFalse(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", Loading Loading @@ -2424,6 +2444,19 @@ func TestCcLibraryStaticDisabledForSomeArch(t *testing.T) { } func TestCcLibraryStubs(t *testing.T) { expectedBazelTargets := makeCcLibraryTargets("a", AttrNameToString{ "has_stubs": `True`, }) expectedBazelTargets = append(expectedBazelTargets, makeCcStubSuiteTargets("a", AttrNameToString{ "soname": `"a.so"`, "source_library": `":a"`, "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, })) runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library stubs", ModuleTypeUnderTest: "cc_library", Loading @@ -2440,14 +2473,7 @@ cc_library { `, }, Blueprint: soongCcLibraryPreamble, ExpectedBazelTargets: makeCcLibraryTargets("a", AttrNameToString{ "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, }), ExpectedBazelTargets: expectedBazelTargets, }, ) } Loading bp2build/cc_library_shared_conversion_test.go +1 −6 Original line number Diff line number Diff line Loading @@ -485,12 +485,7 @@ cc_library_shared { }, Blueprint: soongCcLibraryPreamble, ExpectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", AttrNameToString{ "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, "has_stubs": `True`, }), }, }, Loading Loading
android/allowlists/allowlists.go +18 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,24 @@ var ( // '//bionic/libc:libc_bp2build_cc_library_static' is duplicated in the 'deps' attribute of rule "toybox-static", // Do not convert the following modules because of duplicate labels checking in Bazel. // See b/241283350. They should be removed from this list once the bug is fixed. "libartpalette", "libartbase", "libdexfile", "libartbased", "libdexfile_static", "libartbase-testing", "libartbased-testing", "libdexfile_support", "libunwindstack", "libunwindstack_local", "libfdtrack", "libc_malloc_debug", "libutilscallstack", "libunwindstack_utils", "unwind_for_offline", } Bp2buildCcLibraryStaticOnlyList = []string{} Loading
bazel/configurability.go +22 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ const ( archX86_64 = "x86_64" // OsType names in arch.go osAndroid = "android" OsAndroid = "android" osDarwin = "darwin" osLinux = "linux_glibc" osLinuxMusl = "linux_musl" Loading Loading @@ -64,6 +64,9 @@ const ( ConditionsDefaultSelectKey = "//conditions:default" productVariableBazelPackage = "//build/bazel/product_variables" AndroidAndInApex = "android-in_apex" AndroidAndNonApex = "android-non_apex" ) var ( Loading @@ -85,7 +88,7 @@ var ( // A map of target operating systems to the Bazel label of the // constraint_value for the @platforms//os:os constraint_setting platformOsMap = map[string]string{ osAndroid: "//build/bazel/platforms/os:android", OsAndroid: "//build/bazel/platforms/os:android", osDarwin: "//build/bazel/platforms/os:darwin", osLinux: "//build/bazel/platforms/os:linux", osLinuxMusl: "//build/bazel/platforms/os:linux_musl", Loading Loading @@ -120,7 +123,7 @@ var ( // TODO(cparsons): Source from arch.go; this task is nontrivial, as it currently results // in a cyclic dependency. osToArchMap = map[string][]string{ osAndroid: {archArm, archArm64, archX86, archX86_64}, OsAndroid: {archArm, archArm64, archX86, archX86_64}, osLinux: {archX86, archX86_64}, osLinuxMusl: {archX86, archX86_64}, osDarwin: {archArm64, archX86_64}, Loading @@ -128,6 +131,12 @@ var ( // TODO(cparsons): According to arch.go, this should contain archArm, archArm64, as well. osWindows: {archX86, archX86_64}, } osAndInApexMap = map[string]string{ AndroidAndInApex: "//build/bazel/rules/apex:android-in_apex", AndroidAndNonApex: "//build/bazel/rules/apex:android-non_apex", ConditionsDefaultConfigKey: ConditionsDefaultSelectKey, } ) // basic configuration types Loading @@ -139,6 +148,7 @@ const ( os osArch productVariables osAndInApex ) func osArchString(os string, arch string) string { Loading @@ -152,6 +162,7 @@ func (ct configurationType) String() string { os: "os", osArch: "arch_os", productVariables: "product_variables", osAndInApex: "os_in_apex", }[ct] } Loading @@ -175,6 +186,10 @@ func (ct configurationType) validateConfig(config string) { } case productVariables: // do nothing case osAndInApex: if _, ok := osAndInApexMap[config]; !ok { panic(fmt.Errorf("Unknown os+in_apex config: %s", config)) } default: panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct)) } Loading @@ -198,6 +213,8 @@ func (ca ConfigurationAxis) SelectKey(config string) string { return ConditionsDefaultSelectKey } return fmt.Sprintf("%s:%s", productVariableBazelPackage, config) case osAndInApex: return osAndInApexMap[config] default: panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType)) } Loading @@ -212,6 +229,8 @@ var ( OsConfigurationAxis = ConfigurationAxis{configurationType: os} // An axis for arch+os-specific configurations OsArchConfigurationAxis = ConfigurationAxis{configurationType: osArch} // An axis for os+in_apex-specific configurations OsAndInApexAxis = ConfigurationAxis{configurationType: osAndInApex} ) // ProductVariableConfigurationAxis returns an axis for the given product variable Loading
bazel/properties.go +9 −9 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ func (la *LabelAttribute) SetSelectValue(axis ConfigurationAxis, config string, switch axis.configurationType { case noConfig: la.Value = &value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if la.ConfigurableValues == nil { la.ConfigurableValues = make(configurableLabels) } Loading @@ -348,7 +348,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) *La switch axis.configurationType { case noConfig: return la.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: return la.ConfigurableValues[axis][config] default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) Loading Loading @@ -424,7 +424,7 @@ func (ba *BoolAttribute) SetSelectValue(axis ConfigurationAxis, config string, v switch axis.configurationType { case noConfig: ba.Value = value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if ba.ConfigurableValues == nil { ba.ConfigurableValues = make(configurableBools) } Loading Loading @@ -540,7 +540,7 @@ func (ba BoolAttribute) SelectValue(axis ConfigurationAxis, config string) *bool switch axis.configurationType { case noConfig: return ba.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if v, ok := ba.ConfigurableValues[axis][config]; ok { return &v } else { Loading Loading @@ -676,7 +676,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str switch axis.configurationType { case noConfig: lla.Value = list case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if lla.ConfigurableValues == nil { lla.ConfigurableValues = make(configurableLabelLists) } Loading @@ -692,8 +692,8 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string switch axis.configurationType { case noConfig: return lla.Value case arch, os, osArch, productVariables: return lla.ConfigurableValues[axis][config] case arch, os, osArch, productVariables, osAndInApex: return (lla.ConfigurableValues[axis][config]) default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) } Loading Loading @@ -1189,7 +1189,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st switch axis.configurationType { case noConfig: sla.Value = list case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: if sla.ConfigurableValues == nil { sla.ConfigurableValues = make(configurableStringLists) } Loading @@ -1205,7 +1205,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin switch axis.configurationType { case noConfig: return sla.Value case arch, os, osArch, productVariables: case arch, os, osArch, productVariables, osAndInApex: return sla.ConfigurableValues[axis][config] default: panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis)) Loading
bp2build/cc_library_conversion_test.go +37 −11 Original line number Diff line number Diff line Loading @@ -1301,10 +1301,10 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string { "additional_linker_inputs": true, "linkopts": true, "strip": true, "stubs_symbol_file": true, "stubs_versions": true, "inject_bssl_hash": true, "has_stubs": true, } sharedAttrs := AttrNameToString{} staticAttrs := AttrNameToString{} for key, val := range attrs { Loading @@ -1321,6 +1321,26 @@ func makeCcLibraryTargets(name string, attrs AttrNameToString) []string { return []string{staticTarget, sharedTarget} } func makeCcStubSuiteTargets(name string, attrs AttrNameToString) string { if _, hasStubs := attrs["stubs_symbol_file"]; !hasStubs { return "" } STUB_SUITE_ATTRS := map[string]string{ "stubs_symbol_file": "symbol_file", "stubs_versions": "versions", "soname": "soname", "source_library": "source_library", } stubSuiteAttrs := AttrNameToString{} for key, _ := range attrs { if _, stubSuiteAttr := STUB_SUITE_ATTRS[key]; stubSuiteAttr { stubSuiteAttrs[STUB_SUITE_ATTRS[key]] = attrs[key] } } return makeBazelTarget("cc_stub_suite", name+"_stub_libs", stubSuiteAttrs) } func TestCCLibraryNoLibCrtFalse(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", Loading Loading @@ -2424,6 +2444,19 @@ func TestCcLibraryStaticDisabledForSomeArch(t *testing.T) { } func TestCcLibraryStubs(t *testing.T) { expectedBazelTargets := makeCcLibraryTargets("a", AttrNameToString{ "has_stubs": `True`, }) expectedBazelTargets = append(expectedBazelTargets, makeCcStubSuiteTargets("a", AttrNameToString{ "soname": `"a.so"`, "source_library": `":a"`, "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, })) runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library stubs", ModuleTypeUnderTest: "cc_library", Loading @@ -2440,14 +2473,7 @@ cc_library { `, }, Blueprint: soongCcLibraryPreamble, ExpectedBazelTargets: makeCcLibraryTargets("a", AttrNameToString{ "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, }), ExpectedBazelTargets: expectedBazelTargets, }, ) } Loading
bp2build/cc_library_shared_conversion_test.go +1 −6 Original line number Diff line number Diff line Loading @@ -485,12 +485,7 @@ cc_library_shared { }, Blueprint: soongCcLibraryPreamble, ExpectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", AttrNameToString{ "stubs_symbol_file": `"a.map.txt"`, "stubs_versions": `[ "28", "29", "current", ]`, "has_stubs": `True`, }), }, }, Loading