diff --git a/java/java_test.go b/java/java_test.go index a4a3f52bf..c2c7ee265 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -408,16 +408,16 @@ func TestResources(t *testing.T) { args string }{ { - // Test that a module with java_resource_dirs includes a file list file + // Test that a module with java_resource_dirs includes the files name: "resource dirs", prop: `java_resource_dirs: ["res"]`, - args: "-C res -l ", + args: "-C res -f res/a -f res/b", }, { // Test that a module with java_resources includes the files name: "resource files", prop: `java_resources: ["res/a", "res/b"]`, - args: "-C . -f res/a -C . -f res/b", + args: "-C . -f res/a -f res/b", }, { // Test that a module with a filegroup in java_resources includes the files with the @@ -430,13 +430,13 @@ func TestResources(t *testing.T) { path: "res", srcs: ["res/a", "res/b"], }`, - args: "-C res -f res/a -C res -f res/b", + args: "-C res -f res/a -f res/b", }, { // Test that a module with "include_srcs: true" includes its source files in the resources jar name: "include sources", prop: `include_srcs: true`, - args: "-C . -f a.java -C . -f b.java -C . -f c.java", + args: "-C . -f a.java -f b.java -f c.java", }, } @@ -462,8 +462,8 @@ func TestResources(t *testing.T) { foo.Inputs.Strings(), fooRes.Output.String()) } - if !strings.Contains(fooRes.Args["jarArgs"], test.args) { - t.Errorf("foo resource jar args %q does not contain %q", + if fooRes.Args["jarArgs"] != test.args { + t.Errorf("foo resource jar args %q is not %q", fooRes.Args["jarArgs"], test.args) } }) @@ -489,7 +489,7 @@ func TestExcludeResources(t *testing.T) { fooRes := ctx.ModuleForTests("foo", "android_common").Output("res.jar") - expected := "-C res -l " + fooRes.Implicits[0].String() + expected := "-C res -f res/a -f res/b" if fooRes.Args["jarArgs"] != expected { t.Errorf("foo resource jar args %q is not %q", fooRes.Args["jarArgs"], expected) diff --git a/java/resources.go b/java/resources.go index d552428a1..a596fd7e6 100644 --- a/java/resources.go +++ b/java/resources.go @@ -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