diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-09-04 16:58:12 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-09-04 16:58:12 +0000 |
commit | 98420011fb9ed561ce9a548d2860271f783615ef (patch) | |
tree | ec0d42c77c1f949b1e828c133280e57e3341186d | |
parent | 9a9455c95ae8e451c20f7df894ec7c7620f994ac (diff) | |
parent | 7968c52625bd8aece3a55229b5d3da845767eaf6 (diff) | |
download | blueprint-android13-mainline-os-statsd-release.tar.gz |
Snap for 9027491 from 7968c52625bd8aece3a55229b5d3da845767eaf6 to mainline-os-statsd-releaseaml_sta_331910000aml_sta_331811000aml_sta_331711010aml_sta_331610000aml_sta_331511000aml_sta_331410000aml_sta_331311000android13-mainline-os-statsd-release
Change-Id: Iecbff39ab661088eb84d19b3db3a8a8cab3d2b23
-rw-r--r-- | proptools/escape.go | 4 | ||||
-rw-r--r-- | singleton_ctx.go | 27 |
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 +} |