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 @@
 	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 @@
 	// 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) 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
+}
