Support blueprint_go_binary in PathForModuleSrc
Allow blueprint_go_binary to be used as test data by supporting it in
PathForModuleSrc.
Also make python use GetDirectDepsWithTag instead of VisitDirectDeps
so it doesn't fail on the dependency to a Blueprint (non-Android)
module.
Fixes: 186528269
Test: manual
Change-Id: Ibc1d7caf7bf1fa5db805c3b885a95df4baee0ecf
diff --git a/android/paths.go b/android/paths.go
index 93c5684..c88be89 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -24,6 +24,7 @@
"strings"
"github.com/google/blueprint"
+ "github.com/google/blueprint/bootstrap"
"github.com/google/blueprint/pathtools"
)
@@ -448,6 +449,12 @@
return outputFiles, nil
} else if tag != "" {
return nil, fmt.Errorf("path dependency %q is not an output file producing module", path)
+ } else if goBinary, ok := module.(bootstrap.GoBinaryTool); ok {
+ if rel, err := filepath.Rel(PathForOutput(ctx).String(), goBinary.InstallPath()); err == nil {
+ return Paths{PathForOutput(ctx, rel).WithoutRel()}, nil
+ } else {
+ return nil, fmt.Errorf("cannot find output path for %q: %w", goBinary.InstallPath(), err)
+ }
} else if srcProducer, ok := module.(SourceFileProducer); ok {
return srcProducer.Srcs(), nil
} else {
diff --git a/python/python.go b/python/python.go
index 4444a70..0f5b788 100644
--- a/python/python.go
+++ b/python/python.go
@@ -444,11 +444,10 @@
var sharedLibs []string
// if embedded launcher is enabled, we need to collect the shared library depenendencies of the
// launcher
- ctx.VisitDirectDeps(func(dep android.Module) {
- if ctx.OtherModuleDependencyTag(dep) == launcherSharedLibTag {
- sharedLibs = append(sharedLibs, ctx.OtherModuleName(dep))
- }
- })
+ for _, dep := range ctx.GetDirectDepsWithTag(launcherSharedLibTag) {
+ sharedLibs = append(sharedLibs, ctx.OtherModuleName(dep))
+ }
+
p.installer.setAndroidMkSharedLibs(sharedLibs)
// Install the par file from installSource