Merge "Handle filename variations for prebuilt_etc in bp2build" am: 8c7efde76c am: 68bad6db31 am: 18c141bc96

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2165863

Change-Id: Ifdb5f3cecb96a6f5b19df1bf2ca8b0abae3e230a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Alix Espino
2022-09-02 21:22:43 +00:00
committed by Automerger Merge Worker
2 changed files with 107 additions and 7 deletions

View File

@@ -181,3 +181,87 @@ prebuilt_etc {
"dir": `"etc"`,
})}})
}
func TestFilenameAsProperty(t *testing.T) {
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - filename is specified as a property ",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "foo",
src: "fooSrc",
filename: "fooFileName",
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("prebuilt_file", "foo", AttrNameToString{
"filename": `"fooFileName"`,
"src": `"fooSrc"`,
"dir": `"etc"`,
})}})
}
func TestFileNameFromSrc(t *testing.T) {
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - filename_from_src is true ",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "foo",
filename_from_src: true,
src: "fooSrc",
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("prebuilt_file", "foo", AttrNameToString{
"filename": `"fooSrc"`,
"src": `"fooSrc"`,
"dir": `"etc"`,
})}})
}
func TestFileNameFromSrcMultipleSrcs(t *testing.T) {
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - filename_from_src is true but there are multiple srcs",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "foo",
filename_from_src: true,
arch: {
arm: {
src: "barSrc",
},
arm64: {
src: "bazSrc",
},
}
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("prebuilt_file", "foo", AttrNameToString{
"filename_from_src": `True`,
"dir": `"etc"`,
"src": `select({
"//build/bazel/platforms/arch:arm": "barSrc",
"//build/bazel/platforms/arch:arm64": "bazSrc",
"//conditions:default": None,
})`,
})}})
}
func TestFilenameFromModuleName(t *testing.T) {
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - neither filename nor filename_from_src are specified ",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "foo",
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("prebuilt_file", "foo", AttrNameToString{
"filename": `"foo"`,
"dir": `"etc"`,
})}})
}

View File

@@ -670,10 +670,11 @@ func generatePrebuiltSnapshot(s snapshot.SnapshotSingleton, ctx android.Singleto
// For Bazel / bp2build
type bazelPrebuiltFileAttributes struct {
Src bazel.LabelAttribute
Filename string
Dir string
Installable bazel.BoolAttribute
Src bazel.LabelAttribute
Filename bazel.LabelAttribute
Dir string
Installable bazel.BoolAttribute
Filename_from_src bazel.BoolAttribute
}
// ConvertWithBp2build performs bp2build conversion of PrebuiltEtc
@@ -694,8 +695,18 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext
}
var filename string
if module.properties.Filename != nil {
filename = *module.properties.Filename
var filenameFromSrc bool
moduleProps := module.properties
if moduleProps.Filename != nil && *moduleProps.Filename != "" {
filename = *moduleProps.Filename
} else if moduleProps.Filename_from_src != nil && *moduleProps.Filename_from_src {
if moduleProps.Src != nil {
filename = *moduleProps.Src
}
filenameFromSrc = true
} else {
filename = ctx.ModuleName()
}
var dir = module.installDirBase
@@ -714,11 +725,16 @@ func (module *PrebuiltEtc) ConvertWithBp2build(ctx android.TopDownMutatorContext
attrs := &bazelPrebuiltFileAttributes{
Src: src,
Filename: filename,
Dir: dir,
Installable: installable,
}
if filename != "" {
attrs.Filename = bazel.LabelAttribute{Value: &bazel.Label{Label: filename}}
} else if filenameFromSrc {
attrs.Filename_from_src = bazel.BoolAttribute{Value: moduleProps.Filename_from_src}
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "prebuilt_file",
Bzl_load_location: "//build/bazel/rules:prebuilt_file.bzl",