Ensure that PathsForModuleSrc works with prebuilts
prebuilt_test is amended to ensure
f2976304f70fe61b705300f309687317c90a84fb is not broken.
PathsForModuleSrc is called to check if the file is from correct module
(either from source or prebuilt module)
Bug: 130627486
Test: m
Change-Id: Ic5f467fbc2837727df92102530687e967cd5529f
diff --git a/android/prebuilt_test.go b/android/prebuilt_test.go
index 319c15d..e182641 100644
--- a/android/prebuilt_test.go
+++ b/android/prebuilt_test.go
@@ -41,7 +41,7 @@
prebuilt {
name: "bar",
prefer: false,
- srcs: ["prebuilt"],
+ srcs: ["prebuilt_file"],
}`,
prebuilt: true,
},
@@ -51,7 +51,7 @@
prebuilt {
name: "bar",
prefer: true,
- srcs: ["prebuilt"],
+ srcs: ["prebuilt_file"],
}`,
prebuilt: true,
},
@@ -65,7 +65,7 @@
prebuilt {
name: "bar",
prefer: false,
- srcs: ["prebuilt"],
+ srcs: ["prebuilt_file"],
}`,
prebuilt: false,
},
@@ -79,7 +79,7 @@
prebuilt {
name: "bar",
prefer: true,
- srcs: ["prebuilt"],
+ srcs: ["prebuilt_file"],
}`,
prebuilt: true,
},
@@ -114,6 +114,7 @@
modules: `
filegroup {
name: "fg",
+ srcs: ["prebuilt_file"],
}
prebuilt {
name: "bar",
@@ -143,10 +144,12 @@
ctx.RegisterModuleType("source", ModuleFactoryAdaptor(newSourceModule))
ctx.Register()
ctx.MockFileSystem(map[string][]byte{
+ "prebuilt_file": nil,
+ "source_file": nil,
"Blueprints": []byte(`
source {
name: "foo",
- deps: ["bar"],
+ deps: [":bar"],
}
` + test.modules),
})
@@ -171,21 +174,45 @@
}
})
+ deps := foo.Module().(*sourceModule).deps
+ if deps == nil || len(deps) != 1 {
+ t.Errorf("deps does not have single path, but is %v", deps)
+ }
+ var usingSourceFile, usingPrebuiltFile bool
+ if deps[0].String() == "source_file" {
+ usingSourceFile = true
+ }
+ if deps[0].String() == "prebuilt_file" {
+ usingPrebuiltFile = true
+ }
+
if test.prebuilt {
if !dependsOnPrebuiltModule {
t.Errorf("doesn't depend on prebuilt module")
}
+ if !usingPrebuiltFile {
+ t.Errorf("doesn't use prebuilt_file")
+ }
if dependsOnSourceModule {
t.Errorf("depends on source module")
}
+ if usingSourceFile {
+ t.Errorf("using source_file")
+ }
} else {
if dependsOnPrebuiltModule {
t.Errorf("depends on prebuilt module")
}
+ if usingPrebuiltFile {
+ t.Errorf("using prebuilt_file")
+ }
if !dependsOnSourceModule {
- t.Errorf("doens't depend on source module")
+ t.Errorf("doesn't depend on source module")
+ }
+ if !usingSourceFile {
+ t.Errorf("doesn't use source_file")
}
}
})
@@ -198,6 +225,7 @@
properties struct {
Srcs []string `android:"path"`
}
+ src Path
}
func newPrebuiltModule() Module {
@@ -212,19 +240,28 @@
return p.prebuilt.Name(p.ModuleBase.Name())
}
-func (p *prebuiltModule) GenerateAndroidBuildActions(ModuleContext) {
+func (p *prebuiltModule) GenerateAndroidBuildActions(ctx ModuleContext) {
+ if len(p.properties.Srcs) >= 1 {
+ p.src = p.prebuilt.SingleSourcePath(ctx)
+ }
}
func (p *prebuiltModule) Prebuilt() *Prebuilt {
return &p.prebuilt
}
+func (p *prebuiltModule) Srcs() Paths {
+ return Paths{p.src}
+}
+
type sourceModule struct {
ModuleBase
properties struct {
- Deps []string
+ Deps []string `android:"path"`
}
dependsOnSourceModule, dependsOnPrebuiltModule bool
+ deps Paths
+ src Path
}
func newSourceModule() Module {
@@ -235,10 +272,15 @@
}
func (s *sourceModule) DepsMutator(ctx BottomUpMutatorContext) {
- for _, d := range s.properties.Deps {
- ctx.AddDependency(ctx.Module(), nil, d)
- }
+ // s.properties.Deps are annotated with android:path, so they are
+ // automatically added to the dependency by pathDeps mutator
}
func (s *sourceModule) GenerateAndroidBuildActions(ctx ModuleContext) {
+ s.deps = PathsForModuleSrc(ctx, s.properties.Deps)
+ s.src = PathForModuleSrc(ctx, "source_file")
+}
+
+func (s *sourceModule) Srcs() Paths {
+ return Paths{s.src}
}