Correctly add dependencies to java_resource_dirs files
java_resource_dirs was using a file list file that was generated at ninja time to get the list of files to include, which meant there were no dependencies on the files to cause res.jar to get rebuilt. Switch to using a glob at soong time instead. This is substantially similar to a glob in java_resources, except that java_resource_dirs strips the listed directories off the paths that end up in the jar. Test: TestResources in java_test.go Change-Id: I4b9b38f7b6b38a013cbb4e211187e7282a6795c0
This commit is contained in:
@@ -19,8 +19,6 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint/bootstrap"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
@@ -33,15 +31,6 @@ var resourceExcludes = []string{
|
||||
"**/*~",
|
||||
}
|
||||
|
||||
func isStringInSlice(str string, slice []string) bool {
|
||||
for _, s := range slice {
|
||||
if s == str {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func ResourceDirsToJarArgs(ctx android.ModuleContext,
|
||||
resourceDirs, excludeDirs []string) (args []string, deps android.Paths) {
|
||||
var excludes []string
|
||||
@@ -53,22 +42,22 @@ func ResourceDirsToJarArgs(ctx android.ModuleContext,
|
||||
|
||||
excludes = append(excludes, resourceExcludes...)
|
||||
|
||||
for _, resourceDir := range resourceDirs {
|
||||
if isStringInSlice(resourceDir, excludeDirs) {
|
||||
continue
|
||||
}
|
||||
resourceDir := android.PathForModuleSrc(ctx, resourceDir)
|
||||
dirs := ctx.Glob(resourceDir.String(), nil)
|
||||
for _, dir := range dirs {
|
||||
fileListFile := android.ResPathWithName(ctx, dir, "resources.list")
|
||||
depFile := fileListFile.String() + ".d"
|
||||
for _, dir := range resourceDirs {
|
||||
dir := android.PathForModuleSrc(ctx, dir).String()
|
||||
files := ctx.Glob(filepath.Join(dir, "**/*"), excludes)
|
||||
|
||||
pattern := filepath.Join(dir.String(), "**/*")
|
||||
bootstrap.GlobFile(ctx, pattern, excludes, fileListFile.String(), depFile)
|
||||
args = append(args,
|
||||
"-C", dir.String(),
|
||||
"-l", fileListFile.String())
|
||||
deps = append(deps, fileListFile)
|
||||
deps = append(deps, files...)
|
||||
|
||||
if len(files) > 0 {
|
||||
args = append(args, "-C", dir)
|
||||
|
||||
for _, f := range files {
|
||||
path := f.String()
|
||||
if !strings.HasPrefix(path, dir) {
|
||||
panic(fmt.Errorf("path %q does not start with %q", path, dir))
|
||||
}
|
||||
args = append(args, "-f", path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,14 +87,19 @@ func resourceFilesToJarArgs(ctx android.ModuleContext,
|
||||
|
||||
files := ctx.ExpandSources(res, exclude)
|
||||
|
||||
for _, f := range files {
|
||||
lastDir := ""
|
||||
for i, f := range files {
|
||||
rel := f.Rel()
|
||||
path := f.String()
|
||||
if !strings.HasSuffix(path, rel) {
|
||||
panic(fmt.Errorf("path %q does not end with %q", path, rel))
|
||||
}
|
||||
path = filepath.Clean(strings.TrimSuffix(path, rel))
|
||||
args = append(args, "-C", filepath.Clean(path), "-f", f.String())
|
||||
dir := filepath.Clean(strings.TrimSuffix(path, rel))
|
||||
if i == 0 || dir != lastDir {
|
||||
args = append(args, "-C", dir)
|
||||
}
|
||||
args = append(args, "-f", path)
|
||||
lastDir = dir
|
||||
}
|
||||
|
||||
return args, files
|
||||
|
Reference in New Issue
Block a user