aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-05 11:46:48 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-05 11:46:48 +0000
commit57dc0dd01ab503d61fdef36f3baaae110439472f (patch)
treeec0d42c77c1f949b1e828c133280e57e3341186d
parentc79316f06209e292043f1056259f50c9cccd12e9 (diff)
parent7968c52625bd8aece3a55229b5d3da845767eaf6 (diff)
downloadblueprint-android13-mainline-tethering-release.tar.gz
Change-Id: I0d14842d49b3c2e551a65298742d434202b2b724
-rw-r--r--proptools/escape.go4
-rw-r--r--singleton_ctx.go27
2 files changed, 31 insertions, 0 deletions
diff --git a/proptools/escape.go b/proptools/escape.go
index 4ef10f0..9443a95 100644
--- a/proptools/escape.go
+++ b/proptools/escape.go
@@ -122,4 +122,8 @@ func NinjaAndShellEscape(s string) string {
return ShellEscape(NinjaEscape(s))
}
+func NinjaAndShellEscapeIncludingSpaces(s string) string {
+ return ShellEscapeIncludingSpaces(NinjaEscape(s))
+}
+
var singleQuoteReplacer = strings.NewReplacer(`'`, `'\''`)
diff --git a/singleton_ctx.go b/singleton_ctx.go
index 455f6fc..d579b8e 100644
--- a/singleton_ctx.go
+++ b/singleton_ctx.go
@@ -157,6 +157,10 @@ type SingletonContext interface {
// Fs returns a pathtools.Filesystem that can be used to interact with files. Using the Filesystem interface allows
// the singleton to be used in build system tests that run against a mock filesystem.
Fs() pathtools.FileSystem
+
+ // ModuleVariantsFromName returns the list of module variants named `name` in the same namespace as `referer`.
+ // Allows generating build actions for `referer` based on the metadata for `name` deferred until the singleton context.
+ ModuleVariantsFromName(referer Module, name string) []Module
}
var _ SingletonContext = (*singletonContext)(nil)
@@ -369,3 +373,26 @@ func (s *singletonContext) GlobWithDeps(pattern string,
func (s *singletonContext) Fs() pathtools.FileSystem {
return s.context.fs
}
+
+func (s *singletonContext) ModuleVariantsFromName(referer Module, name string) []Module {
+ c := s.context
+
+ refererInfo := c.moduleInfo[referer]
+ if refererInfo == nil {
+ s.ModuleErrorf(referer, "could not find module %q", referer.Name())
+ return nil
+ }
+
+ moduleGroup, exists := c.nameInterface.ModuleFromName(name, refererInfo.namespace())
+ if !exists {
+ return nil
+ }
+ result := make([]Module, 0, len(moduleGroup.modules))
+ for _, module := range moduleGroup.modules {
+ moduleInfo := module.module()
+ if moduleInfo != nil {
+ result = append(result, moduleInfo.logicModule)
+ }
+ }
+ return result
+}