Loading android/allowlists/allowlists.go +4 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,10 @@ var ( "libavb", "avb_headers", //external/libxml2 "xmllint", "libxml2", //external/fec "libfec_rs", Loading etc/prebuilt_etc.go +20 −7 Original line number Diff line number Diff line Loading @@ -678,9 +678,10 @@ type bazelPrebuiltFileAttributes struct { Filename_from_src bazel.BoolAttribute } // ConvertWithBp2build performs bp2build conversion of PrebuiltEtc // All prebuilt_* modules are PrebuiltEtc, which we treat uniformily as *PrebuiltFile* func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext) { // Bp2buildHelper returns a bazelPrebuiltFileAttributes used for the conversion // of prebuilt_* modules. bazelPrebuiltFileAttributes has the common attributes // used by both prebuilt_etc_xml and other prebuilt_* moodules func (module *PrebuiltEtc) Bp2buildHelper(ctx android.TopDownMutatorContext) *bazelPrebuiltFileAttributes { var src bazel.LabelAttribute for axis, configToProps := range module.GetArchVariantProperties(ctx, &prebuiltEtcProperties{}) { for config, p := range configToProps { Loading Loading @@ -727,10 +728,6 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext } var dir = module.installDirBase // prebuilt_file supports only `etc` or `usr/share` if !(dir == "etc" || dir == "usr/share") { return } if subDir := module.subdirProperties.Sub_dir; subDir != nil { dir = dir + "/" + *subDir } Loading @@ -752,6 +749,22 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext attrs.Filename_from_src = bazel.BoolAttribute{Value: moduleProps.Filename_from_src} } return attrs } // ConvertWithBp2build performs bp2build conversion of PrebuiltEtc // prebuilt_* modules (except prebuilt_etc_xml) are PrebuiltEtc, // which we treat as *PrebuiltFile* func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext) { var dir = module.installDirBase // prebuilt_file supports only `etc` or `usr/share` if !(dir == "etc" || dir == "usr/share") { return } attrs := module.Bp2buildHelper(ctx) props := bazel.BazelTargetModuleProperties{ Rule_class: "prebuilt_file", Bzl_load_location: "//build/bazel/rules:prebuilt_file.bzl", Loading xml/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ bootstrap_go_package { "blueprint", "blueprint-pathtools", "soong", "soong-bp2build", "soong-android", "soong-etc", ], Loading @@ -18,6 +19,7 @@ bootstrap_go_package { ], testSrcs: [ "xml_test.go", "xml_conversion_test.go", ], pluginFor: ["soong_build"], } xml/xml.go +38 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package xml import ( "android/soong/android" "android/soong/bazel" "android/soong/etc" "github.com/google/blueprint" Loading Loading @@ -67,6 +68,8 @@ type prebuiltEtcXmlProperties struct { } type prebuiltEtcXml struct { android.BazelModuleBase etc.PrebuiltEtc properties prebuiltEtcXmlProperties Loading Loading @@ -129,5 +132,40 @@ func PrebuiltEtcXmlFactory() android.Module { etc.InitPrebuiltEtcModule(&module.PrebuiltEtc, "etc") // This module is device-only android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst) android.InitBazelModule(module) return module } type bazelPrebuiltEtcXmlAttributes struct { Src bazel.LabelAttribute Filename bazel.LabelAttribute Dir string Installable bazel.BoolAttribute Filename_from_src bazel.BoolAttribute Schema *string } func (p *prebuiltEtcXml) ConvertWithBp2build(ctx android.TopDownMutatorContext) { baseAttrs := p.PrebuiltEtc.Bp2buildHelper(ctx) var schema *string if p.properties.Schema != nil { schema = p.properties.Schema } attrs := &bazelPrebuiltEtcXmlAttributes{ Src: baseAttrs.Src, Filename: baseAttrs.Filename, Dir: baseAttrs.Dir, Installable: baseAttrs.Installable, Filename_from_src: baseAttrs.Filename_from_src, Schema: schema, } props := bazel.BazelTargetModuleProperties{ Rule_class: "prebuilt_xml", Bzl_load_location: "//build/bazel/rules/prebuilt_xml.bzl", } ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: p.Name()}, attrs) } xml/xml_conversion_test.go 0 → 100644 +129 −0 Original line number Diff line number Diff line // Copyright 2022 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package xml import ( "android/soong/android" "android/soong/bp2build" "testing" ) func runXmlPrebuiltEtcTestCase(t *testing.T, tc bp2build.Bp2buildTestCase) { t.Helper() (&tc).ModuleTypeUnderTest = "prebuilt_etc_xml" (&tc).ModuleTypeUnderTestFactory = PrebuiltEtcXmlFactory bp2build.RunBp2BuildTestCase(t, registerXmlModuleTypes, tc) } func registerXmlModuleTypes(ctx android.RegistrationContext) { } func TestXmlPrebuiltEtcSimple(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - simple example", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename: "fooFileName", sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooFileName"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFilenameFromSrc(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - filenameFromSrc True ", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename_from_src: true, sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooSrc"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFilenameAndFilenameFromSrc(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - filename provided and filenameFromSrc True ", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename: "fooFileName", filename_from_src: true, sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooFileName"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFileNameFromSrcMultipleSrcs(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc - filename_from_src is true but there are multiple srcs", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", filename_from_src: true, arch: { arm: { src: "barSrc", }, arm64: { src: "bazSrc", }, } } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "filename_from_src": `True`, "dir": `"etc"`, "src": `select({ "//build/bazel/platforms/arch:arm": "barSrc", "//build/bazel/platforms/arch:arm64": "bazSrc", "//conditions:default": None, })`, })}}) } Loading
android/allowlists/allowlists.go +4 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,10 @@ var ( "libavb", "avb_headers", //external/libxml2 "xmllint", "libxml2", //external/fec "libfec_rs", Loading
etc/prebuilt_etc.go +20 −7 Original line number Diff line number Diff line Loading @@ -678,9 +678,10 @@ type bazelPrebuiltFileAttributes struct { Filename_from_src bazel.BoolAttribute } // ConvertWithBp2build performs bp2build conversion of PrebuiltEtc // All prebuilt_* modules are PrebuiltEtc, which we treat uniformily as *PrebuiltFile* func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext) { // Bp2buildHelper returns a bazelPrebuiltFileAttributes used for the conversion // of prebuilt_* modules. bazelPrebuiltFileAttributes has the common attributes // used by both prebuilt_etc_xml and other prebuilt_* moodules func (module *PrebuiltEtc) Bp2buildHelper(ctx android.TopDownMutatorContext) *bazelPrebuiltFileAttributes { var src bazel.LabelAttribute for axis, configToProps := range module.GetArchVariantProperties(ctx, &prebuiltEtcProperties{}) { for config, p := range configToProps { Loading Loading @@ -727,10 +728,6 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext } var dir = module.installDirBase // prebuilt_file supports only `etc` or `usr/share` if !(dir == "etc" || dir == "usr/share") { return } if subDir := module.subdirProperties.Sub_dir; subDir != nil { dir = dir + "/" + *subDir } Loading @@ -752,6 +749,22 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext attrs.Filename_from_src = bazel.BoolAttribute{Value: moduleProps.Filename_from_src} } return attrs } // ConvertWithBp2build performs bp2build conversion of PrebuiltEtc // prebuilt_* modules (except prebuilt_etc_xml) are PrebuiltEtc, // which we treat as *PrebuiltFile* func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext) { var dir = module.installDirBase // prebuilt_file supports only `etc` or `usr/share` if !(dir == "etc" || dir == "usr/share") { return } attrs := module.Bp2buildHelper(ctx) props := bazel.BazelTargetModuleProperties{ Rule_class: "prebuilt_file", Bzl_load_location: "//build/bazel/rules:prebuilt_file.bzl", Loading
xml/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ bootstrap_go_package { "blueprint", "blueprint-pathtools", "soong", "soong-bp2build", "soong-android", "soong-etc", ], Loading @@ -18,6 +19,7 @@ bootstrap_go_package { ], testSrcs: [ "xml_test.go", "xml_conversion_test.go", ], pluginFor: ["soong_build"], }
xml/xml.go +38 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package xml import ( "android/soong/android" "android/soong/bazel" "android/soong/etc" "github.com/google/blueprint" Loading Loading @@ -67,6 +68,8 @@ type prebuiltEtcXmlProperties struct { } type prebuiltEtcXml struct { android.BazelModuleBase etc.PrebuiltEtc properties prebuiltEtcXmlProperties Loading Loading @@ -129,5 +132,40 @@ func PrebuiltEtcXmlFactory() android.Module { etc.InitPrebuiltEtcModule(&module.PrebuiltEtc, "etc") // This module is device-only android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst) android.InitBazelModule(module) return module } type bazelPrebuiltEtcXmlAttributes struct { Src bazel.LabelAttribute Filename bazel.LabelAttribute Dir string Installable bazel.BoolAttribute Filename_from_src bazel.BoolAttribute Schema *string } func (p *prebuiltEtcXml) ConvertWithBp2build(ctx android.TopDownMutatorContext) { baseAttrs := p.PrebuiltEtc.Bp2buildHelper(ctx) var schema *string if p.properties.Schema != nil { schema = p.properties.Schema } attrs := &bazelPrebuiltEtcXmlAttributes{ Src: baseAttrs.Src, Filename: baseAttrs.Filename, Dir: baseAttrs.Dir, Installable: baseAttrs.Installable, Filename_from_src: baseAttrs.Filename_from_src, Schema: schema, } props := bazel.BazelTargetModuleProperties{ Rule_class: "prebuilt_xml", Bzl_load_location: "//build/bazel/rules/prebuilt_xml.bzl", } ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: p.Name()}, attrs) }
xml/xml_conversion_test.go 0 → 100644 +129 −0 Original line number Diff line number Diff line // Copyright 2022 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package xml import ( "android/soong/android" "android/soong/bp2build" "testing" ) func runXmlPrebuiltEtcTestCase(t *testing.T, tc bp2build.Bp2buildTestCase) { t.Helper() (&tc).ModuleTypeUnderTest = "prebuilt_etc_xml" (&tc).ModuleTypeUnderTestFactory = PrebuiltEtcXmlFactory bp2build.RunBp2BuildTestCase(t, registerXmlModuleTypes, tc) } func registerXmlModuleTypes(ctx android.RegistrationContext) { } func TestXmlPrebuiltEtcSimple(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - simple example", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename: "fooFileName", sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooFileName"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFilenameFromSrc(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - filenameFromSrc True ", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename_from_src: true, sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooSrc"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFilenameAndFilenameFromSrc(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc_xml - filename provided and filenameFromSrc True ", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", src: "fooSrc", filename: "fooFileName", filename_from_src: true, sub_dir: "fooDir", schema: "foo.dtd", } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "src": `"fooSrc"`, "filename": `"fooFileName"`, "dir": `"etc/fooDir"`, "schema": `"foo.dtd"`, })}}) } func TestXmlPrebuiltEtcFileNameFromSrcMultipleSrcs(t *testing.T) { runXmlPrebuiltEtcTestCase(t, bp2build.Bp2buildTestCase{ Description: "prebuilt_etc - filename_from_src is true but there are multiple srcs", Filesystem: map[string]string{}, Blueprint: ` prebuilt_etc_xml { name: "foo", filename_from_src: true, arch: { arm: { src: "barSrc", }, arm64: { src: "bazSrc", }, } } `, ExpectedBazelTargets: []string{ bp2build.MakeBazelTarget("prebuilt_xml", "foo", bp2build.AttrNameToString{ "filename_from_src": `True`, "dir": `"etc"`, "src": `select({ "//build/bazel/platforms/arch:arm": "barSrc", "//build/bazel/platforms/arch:arm64": "bazSrc", "//conditions:default": None, })`, })}}) }