Merge changes I5823fdb5,I3e44c137 am: 26999937e2

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

Change-Id: I835125d7cbdbbce78e67ce9929a3b392e7be45f4
This commit is contained in:
Treehugger Robot
2021-06-28 19:53:34 +00:00
committed by Automerger Merge Worker
3 changed files with 73 additions and 2 deletions

View File

@@ -211,6 +211,22 @@ func (g *Module) GeneratedDeps() android.Paths {
return g.outputDeps
}
func (g *Module) OutputFiles(tag string) (android.Paths, error) {
if tag == "" {
return append(android.Paths{}, g.outputFiles...), nil
}
// otherwise, tag should match one of outputs
for _, outputFile := range g.outputFiles {
if outputFile.Rel() == tag {
return android.Paths{outputFile}, nil
}
}
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
var _ android.SourceFileProducer = (*Module)(nil)
var _ android.OutputFileProducer = (*Module)(nil)
func toolDepsMutator(ctx android.BottomUpMutatorContext) {
if g, ok := ctx.Module().(*Module); ok {
for _, tool := range g.properties.Tools {

View File

@@ -31,12 +31,12 @@ func TestMain(m *testing.M) {
var prepareForGenRuleTest = android.GroupFixturePreparers(
android.PrepareForTestWithArchMutator,
android.PrepareForTestWithDefaults,
android.PrepareForTestWithFilegroup,
PrepareForTestWithGenRuleBuildComponents,
android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("tool", toolFactory)
ctx.RegisterModuleType("output", outputProducerFactory)
ctx.RegisterModuleType("use_source", useSourceFactory)
}),
android.FixtureMergeMockFs(android.MockFS{
"tool": nil,
@@ -684,6 +684,42 @@ func TestGenruleAllowMissingDependencies(t *testing.T) {
}
}
func TestGenruleOutputFiles(t *testing.T) {
bp := `
genrule {
name: "gen",
out: ["foo", "sub/bar"],
cmd: "echo foo > $(location foo) && echo bar > $(location sub/bar)",
}
use_source {
name: "gen_foo",
srcs: [":gen{foo}"],
}
use_source {
name: "gen_bar",
srcs: [":gen{sub/bar}"],
}
use_source {
name: "gen_all",
srcs: [":gen"],
}
`
result := prepareForGenRuleTest.RunTestWithBp(t, testGenruleBp()+bp)
android.AssertPathsRelativeToTopEquals(t,
"genrule.tag with output",
[]string{"out/soong/.intermediates/gen/gen/foo"},
result.ModuleForTests("gen_foo", "").Module().(*useSource).srcs)
android.AssertPathsRelativeToTopEquals(t,
"genrule.tag with output in subdir",
[]string{"out/soong/.intermediates/gen/gen/sub/bar"},
result.ModuleForTests("gen_bar", "").Module().(*useSource).srcs)
android.AssertPathsRelativeToTopEquals(t,
"genrule.tag with all",
[]string{"out/soong/.intermediates/gen/gen/foo", "out/soong/.intermediates/gen/gen/sub/bar"},
result.ModuleForTests("gen_all", "").Module().(*useSource).srcs)
}
func TestGenruleWithBazel(t *testing.T) {
bp := `
genrule {
@@ -750,3 +786,22 @@ func (t *testOutputProducer) OutputFiles(tag string) (android.Paths, error) {
}
var _ android.OutputFileProducer = (*testOutputProducer)(nil)
type useSource struct {
android.ModuleBase
props struct {
Srcs []string `android:"path"`
}
srcs android.Paths
}
func (s *useSource) GenerateAndroidBuildActions(ctx android.ModuleContext) {
s.srcs = android.PathsForModuleSrc(ctx, s.props.Srcs)
}
func useSourceFactory() android.Module {
module := &useSource{}
module.AddProperties(&module.props)
android.InitAndroidModule(module)
return module
}

View File

@@ -61,7 +61,7 @@ type AndroidAppImport struct {
type AndroidAppImportProperties struct {
// A prebuilt apk to import
Apk *string
Apk *string `android:"path"`
// The name of a certificate in the default certificate directory or an android_app_certificate
// module name in the form ":module". Should be empty if presigned or default_dev_cert is set.