Allow paths containing glob characters in glob results
Some paths contain glob characters. For now allow paths with glob
characters as long as they are in glob results. In the future we
may need to allow escaping glob characters.
Test: m checkbuild
Test: paths_test.go
Change-Id: I1cbeea658e8fc4975ca0b6a50a8c24ac2de026c5
diff --git a/android/paths.go b/android/paths.go
index e69fbe7..57ebae2 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -245,7 +245,17 @@
reportPathErrorf(ctx, "Path '%s' is not in module source directory '%s'", p, prefix)
continue
}
- ret = append(ret, PathForModuleSrc(ctx, path[len(prefix):]))
+
+ srcPath, err := pathForSource(ctx, ctx.ModuleDir(), path[len(prefix):])
+ if err != nil {
+ reportPathError(ctx, err)
+ continue
+ }
+
+ moduleSrcPath := ModuleSrcPath{srcPath}
+ moduleSrcPath.basePath.rel = srcPath.path
+
+ ret = append(ret, moduleSrcPath)
}
return ret
}
@@ -529,10 +539,6 @@
return ret, fmt.Errorf("source path %s is in output", abs)
}
- if pathtools.IsGlob(ret.String()) {
- return ret, fmt.Errorf("path may not contain a glob: %s", ret.String())
- }
-
return ret, nil
}
@@ -569,6 +575,10 @@
reportPathError(ctx, err)
}
+ if pathtools.IsGlob(path.String()) {
+ reportPathErrorf(ctx, "path may not contain a glob: %s", path.String())
+ }
+
if modCtx, ok := ctx.(ModuleContext); ok && ctx.Config().AllowMissingDependencies() {
exists, err := existsWithDependencies(ctx, path)
if err != nil {
@@ -595,6 +605,11 @@
return OptionalPath{}
}
+ if pathtools.IsGlob(path.String()) {
+ reportPathErrorf(ctx, "path may not contain a glob: %s", path.String())
+ return OptionalPath{}
+ }
+
exists, err := existsWithDependencies(ctx, path)
if err != nil {
reportPathError(ctx, err)
@@ -774,6 +789,10 @@
reportPathError(ctx, err)
}
+ if pathtools.IsGlob(srcPath.String()) {
+ reportPathErrorf(ctx, "path may not contain a glob: %s", srcPath.String())
+ }
+
path := ModuleSrcPath{srcPath}
path.basePath.rel = p