Remove ExpandSourcesSubDir and ModuleSrcPath.WithSubDir
am: 2fafa3ec49
Change-Id: Ic23229e9c3269ecb15c21a43517dee29f88dd274
This commit is contained in:
@@ -60,7 +60,11 @@ func FileGroupFactory() Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) {
|
func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) {
|
||||||
fg.srcs = ctx.ExpandSourcesSubDir(fg.properties.Srcs, fg.properties.Exclude_srcs, String(fg.properties.Path))
|
fg.srcs = ctx.ExpandSources(fg.properties.Srcs, fg.properties.Exclude_srcs)
|
||||||
|
|
||||||
|
if fg.properties.Path != nil {
|
||||||
|
fg.srcs = PathsWithModuleSrcSubDir(ctx, fg.srcs, String(fg.properties.Path))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fg *fileGroup) Srcs() Paths {
|
func (fg *fileGroup) Srcs() Paths {
|
||||||
|
@@ -117,7 +117,6 @@ type ModuleContext interface {
|
|||||||
ExpandSources(srcFiles, excludes []string) Paths
|
ExpandSources(srcFiles, excludes []string) Paths
|
||||||
ExpandSource(srcFile, prop string) Path
|
ExpandSource(srcFile, prop string) Path
|
||||||
ExpandOptionalSource(srcFile *string, prop string) OptionalPath
|
ExpandOptionalSource(srcFile *string, prop string) OptionalPath
|
||||||
ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths
|
|
||||||
Glob(globPattern string, excludes []string) Paths
|
Glob(globPattern string, excludes []string) Paths
|
||||||
GlobFiles(globPattern string, excludes []string) Paths
|
GlobFiles(globPattern string, excludes []string) Paths
|
||||||
|
|
||||||
@@ -1421,39 +1420,6 @@ type SourceFileProducer interface {
|
|||||||
// Returns a list of paths expanded from globs and modules referenced using ":module" syntax. The property must
|
// Returns a list of paths expanded from globs and modules referenced using ":module" syntax. The property must
|
||||||
// be tagged with `android:"path" to support automatic source module dependency resolution.
|
// be tagged with `android:"path" to support automatic source module dependency resolution.
|
||||||
func (ctx *androidModuleContext) ExpandSources(srcFiles, excludes []string) Paths {
|
func (ctx *androidModuleContext) ExpandSources(srcFiles, excludes []string) Paths {
|
||||||
return ctx.ExpandSourcesSubDir(srcFiles, excludes, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns a single path expanded from globs and modules referenced using ":module" syntax. The property must
|
|
||||||
// be tagged with `android:"path" to support automatic source module dependency resolution.
|
|
||||||
func (ctx *androidModuleContext) ExpandSource(srcFile, prop string) Path {
|
|
||||||
srcFiles := ctx.ExpandSourcesSubDir([]string{srcFile}, nil, "")
|
|
||||||
if len(srcFiles) == 1 {
|
|
||||||
return srcFiles[0]
|
|
||||||
} else if len(srcFiles) == 0 {
|
|
||||||
if ctx.Config().AllowMissingDependencies() {
|
|
||||||
ctx.AddMissingDependencies([]string{srcFile})
|
|
||||||
} else {
|
|
||||||
ctx.PropertyErrorf(prop, "%s path %s does not exist", prop, srcFile)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
ctx.PropertyErrorf(prop, "module providing %s must produce exactly one file", prop)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns an optional single path expanded from globs and modules referenced using ":module" syntax if
|
|
||||||
// the srcFile is non-nil. The property must be tagged with `android:"path" to support automatic source module
|
|
||||||
// dependency resolution.
|
|
||||||
func (ctx *androidModuleContext) ExpandOptionalSource(srcFile *string, prop string) OptionalPath {
|
|
||||||
if srcFile != nil {
|
|
||||||
return OptionalPathForPath(ctx.ExpandSource(*srcFile, prop))
|
|
||||||
}
|
|
||||||
return OptionalPath{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths {
|
|
||||||
prefix := PathForModuleSrc(ctx).String()
|
prefix := PathForModuleSrc(ctx).String()
|
||||||
|
|
||||||
var expandedExcludes []string
|
var expandedExcludes []string
|
||||||
@@ -1508,22 +1474,48 @@ func (ctx *androidModuleContext) ExpandSourcesSubDir(srcFiles, excludes []string
|
|||||||
}
|
}
|
||||||
} else if pathtools.IsGlob(s) {
|
} else if pathtools.IsGlob(s) {
|
||||||
globbedSrcFiles := ctx.GlobFiles(filepath.Join(prefix, s), expandedExcludes)
|
globbedSrcFiles := ctx.GlobFiles(filepath.Join(prefix, s), expandedExcludes)
|
||||||
for i, s := range globbedSrcFiles {
|
globbedSrcFiles = PathsWithModuleSrcSubDir(ctx, globbedSrcFiles, "")
|
||||||
globbedSrcFiles[i] = s.(ModuleSrcPath).WithSubDir(ctx, subDir)
|
|
||||||
}
|
|
||||||
expandedSrcFiles = append(expandedSrcFiles, globbedSrcFiles...)
|
expandedSrcFiles = append(expandedSrcFiles, globbedSrcFiles...)
|
||||||
} else {
|
} else {
|
||||||
p := PathForModuleSrc(ctx, s).WithSubDir(ctx, subDir)
|
p := PathForModuleSrc(ctx, s)
|
||||||
j := findStringInSlice(p.String(), expandedExcludes)
|
j := findStringInSlice(p.String(), expandedExcludes)
|
||||||
if j == -1 {
|
if j == -1 {
|
||||||
expandedSrcFiles = append(expandedSrcFiles, p)
|
expandedSrcFiles = append(expandedSrcFiles, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return expandedSrcFiles
|
return expandedSrcFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns a single path expanded from globs and modules referenced using ":module" syntax. The property must
|
||||||
|
// be tagged with `android:"path" to support automatic source module dependency resolution.
|
||||||
|
func (ctx *androidModuleContext) ExpandSource(srcFile, prop string) Path {
|
||||||
|
srcFiles := ctx.ExpandSources([]string{srcFile}, nil)
|
||||||
|
if len(srcFiles) == 1 {
|
||||||
|
return srcFiles[0]
|
||||||
|
} else if len(srcFiles) == 0 {
|
||||||
|
if ctx.Config().AllowMissingDependencies() {
|
||||||
|
ctx.AddMissingDependencies([]string{srcFile})
|
||||||
|
} else {
|
||||||
|
ctx.PropertyErrorf(prop, "%s path %s does not exist", prop, srcFile)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
ctx.PropertyErrorf(prop, "module providing %s must produce exactly one file", prop)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an optional single path expanded from globs and modules referenced using ":module" syntax if
|
||||||
|
// the srcFile is non-nil. The property must be tagged with `android:"path" to support automatic source module
|
||||||
|
// dependency resolution.
|
||||||
|
func (ctx *androidModuleContext) ExpandOptionalSource(srcFile *string, prop string) OptionalPath {
|
||||||
|
if srcFile != nil {
|
||||||
|
return OptionalPathForPath(ctx.ExpandSource(*srcFile, prop))
|
||||||
|
}
|
||||||
|
return OptionalPath{}
|
||||||
|
}
|
||||||
|
|
||||||
func (ctx *androidModuleContext) RequiredModuleNames() []string {
|
func (ctx *androidModuleContext) RequiredModuleNames() []string {
|
||||||
return ctx.module.base().commonProperties.Required
|
return ctx.module.base().commonProperties.Required
|
||||||
}
|
}
|
||||||
|
@@ -620,6 +620,15 @@ func (p SourcePath) Join(ctx PathContext, paths ...string) SourcePath {
|
|||||||
return p.withRel(path)
|
return p.withRel(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// join is like Join but does less path validation.
|
||||||
|
func (p SourcePath) join(ctx PathContext, paths ...string) SourcePath {
|
||||||
|
path, err := validateSafePath(paths...)
|
||||||
|
if err != nil {
|
||||||
|
reportPathError(ctx, err)
|
||||||
|
}
|
||||||
|
return p.withRel(path)
|
||||||
|
}
|
||||||
|
|
||||||
// OverlayPath returns the overlay for `path' if it exists. This assumes that the
|
// OverlayPath returns the overlay for `path' if it exists. This assumes that the
|
||||||
// SourcePath is the path to a resource overlay directory.
|
// SourcePath is the path to a resource overlay directory.
|
||||||
func (p SourcePath) OverlayPath(ctx ModuleContext, path Path) OptionalPath {
|
func (p SourcePath) OverlayPath(ctx ModuleContext, path Path) OptionalPath {
|
||||||
@@ -773,10 +782,30 @@ func PathForModuleSrc(ctx ModuleContext, paths ...string) ModuleSrcPath {
|
|||||||
} else if !exists {
|
} else if !exists {
|
||||||
reportPathErrorf(ctx, "module source path %q does not exist", path)
|
reportPathErrorf(ctx, "module source path %q does not exist", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PathsWithModuleSrcSubDir takes a list of Paths and returns a new list of Paths where Rel() on each path
|
||||||
|
// will return the path relative to subDir in the module's source directory. If any input paths are not located
|
||||||
|
// inside subDir then a path error will be reported.
|
||||||
|
func PathsWithModuleSrcSubDir(ctx ModuleContext, paths Paths, subDir string) Paths {
|
||||||
|
paths = append(Paths(nil), paths...)
|
||||||
|
subDirFullPath := PathForModuleSrc(ctx, subDir)
|
||||||
|
for i, path := range paths {
|
||||||
|
rel := Rel(ctx, subDirFullPath.String(), path.String())
|
||||||
|
paths[i] = subDirFullPath.join(ctx, rel)
|
||||||
|
}
|
||||||
|
return paths
|
||||||
|
}
|
||||||
|
|
||||||
|
// PathWithModuleSrcSubDir takes a Path and returns a Path where Rel() will return the path relative to subDir in the
|
||||||
|
// module's source directory. If the input path is not located inside subDir then a path error will be reported.
|
||||||
|
func PathWithModuleSrcSubDir(ctx ModuleContext, path Path, subDir string) Path {
|
||||||
|
subDirFullPath := PathForModuleSrc(ctx, subDir)
|
||||||
|
rel := Rel(ctx, subDirFullPath.String(), path.String())
|
||||||
|
return subDirFullPath.Join(ctx, rel)
|
||||||
|
}
|
||||||
|
|
||||||
// OptionalPathForModuleSrc returns an OptionalPath. The OptionalPath contains a
|
// OptionalPathForModuleSrc returns an OptionalPath. The OptionalPath contains a
|
||||||
// valid path if p is non-nil.
|
// valid path if p is non-nil.
|
||||||
func OptionalPathForModuleSrc(ctx ModuleContext, p *string) OptionalPath {
|
func OptionalPathForModuleSrc(ctx ModuleContext, p *string) OptionalPath {
|
||||||
@@ -799,12 +828,6 @@ func (p ModuleSrcPath) resPathWithName(ctx ModuleContext, name string) ModuleRes
|
|||||||
return PathForModuleRes(ctx, p.path, name)
|
return PathForModuleRes(ctx, p.path, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p ModuleSrcPath) WithSubDir(ctx ModuleContext, subdir string) ModuleSrcPath {
|
|
||||||
subdir = PathForModuleSrc(ctx, subdir).String()
|
|
||||||
p.rel = Rel(ctx, subdir, p.path)
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
// ModuleOutPath is a Path representing a module's output directory.
|
// ModuleOutPath is a Path representing a module's output directory.
|
||||||
type ModuleOutPath struct {
|
type ModuleOutPath struct {
|
||||||
OutputPath
|
OutputPath
|
||||||
|
Reference in New Issue
Block a user