Merge "bp2build data property -> data attr in gensrcs" am: 86c7300bf3 am: ce8670a392 am: 26b1878d8d am: 7df84dbe4e

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

Change-Id: I6888f320ca089b57cb873c3f5457ff0d2ac66c3b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Yu Liu
2023-06-10 06:38:25 +00:00
committed by Automerger Merge Worker
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(),