Merge "bp2build data property -> data attr in gensrcs"

This commit is contained in:
Yu Liu 2023-06-10 03:54:11 +00:00 committed by Gerrit Code Review
commit 86c7300bf3
2 changed files with 26 additions and 12 deletions

View file

@ -33,7 +33,8 @@ func TestGensrcs(t *testing.T) {
name: "foo",
srcs: ["test/input.txt", ":external_files"],
tool_files: ["program.py"],
cmd: "$(location program.py) $(in) $(out)",
cmd: "$(location program.py) $(in) $(out) $(location foo/file.txt) $(location :external_files)",
data: ["foo/file.txt", ":external_files"],
output_extension: "out",
bazel_module: { bp2build_available: true },
}`,
@ -44,7 +45,11 @@ func TestGensrcs(t *testing.T) {
]`,
"tools": `["program.py"]`,
"output_extension": `"out"`,
"cmd": `"$(location program.py) $(SRC) $(OUT)"`,
"cmd": `"$(location program.py) $(SRC) $(OUT) $(location foo/file.txt) $(location :external_files__BP2BUILD__MISSING__DEP)"`,
"data": `[
"foo/file.txt",
":external_files__BP2BUILD__MISSING__DEP",
]`,
},
},
{

View file

@ -873,6 +873,7 @@ type bazelGensrcsAttributes struct {
Output_extension *string
Tools bazel.LabelListAttribute
Cmd string
Data bazel.LabelListAttribute
}
const defaultShardSize = 50
@ -952,6 +953,23 @@ func (m *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
allReplacements.Append(tools.Value)
allReplacements.Append(bazel.FirstUniqueBazelLabelList(srcs_labels))
// The Output_extension prop is not in an immediately accessible field
// in the Module struct, so use GetProperties and cast it
// to the known struct prop.
var outputExtension *string
var data bazel.LabelListAttribute
if ctx.ModuleType() == "gensrcs" {
for _, propIntf := range m.GetProperties() {
if props, ok := propIntf.(*genSrcsProperties); ok {
outputExtension = props.Output_extension
dataFiles := android.BazelLabelForModuleSrc(ctx, props.Data)
allReplacements.Append(bazel.FirstUniqueBazelLabelList(dataFiles))
data = bazel.MakeLabelListAttribute(dataFiles)
break
}
}
}
// Replace in and out variables with $< and $@
var cmd string
if m.properties.Cmd != nil {
@ -980,16 +998,6 @@ func (m *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
tags := android.ApexAvailableTagsWithoutTestApexes(ctx, m)
if ctx.ModuleType() == "gensrcs" {
// The Output_extension prop is not in an immediately accessible field
// in the Module struct, so use GetProperties and cast it
// to the known struct prop.
var outputExtension *string
for _, propIntf := range m.GetProperties() {
if props, ok := propIntf.(*genSrcsProperties); ok {
outputExtension = props.Output_extension
break
}
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "gensrcs",
Bzl_load_location: "//build/bazel/rules:gensrcs.bzl",
@ -999,6 +1007,7 @@ func (m *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
Output_extension: outputExtension,
Cmd: cmd,
Tools: tools,
Data: data,
}
ctx.CreateBazelTargetModule(props, android.CommonAttributes{
Name: m.Name(),