From 7d37ec7f157e8aa64efd04b155fcd8ad42591347 Mon Sep 17 00:00:00 2001 From: Ignas Mikalajunas Date: Wed, 30 Aug 2023 02:58:44 +0300 Subject: [PATCH 1/2] Handle java_library being remapped with map_kind when preserving runtime dependencies --- java/gazelle/generate.go | 14 ++++++++++---- .../expectedStderr.txt | 1 + .../src/main/java/com/example/hello/BUILD.in | 10 ++++++++++ .../src/main/java/com/example/hello/BUILD.out | 10 ++++++++++ .../src/main/java/com/example/hello/Hello.java | 7 +++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt create mode 100644 java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.in create mode 100644 java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.out create mode 100644 java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/Hello.java diff --git a/java/gazelle/generate.go b/java/gazelle/generate.go index cea42db0..e5ed1527 100644 --- a/java/gazelle/generate.go +++ b/java/gazelle/generate.go @@ -181,8 +181,13 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes return true }) + javaLibraryKind := "java_library" + if kindMap, ok := args.Config.KindMap["java_library"]; ok { + javaLibraryKind = kindMap.KindName + } + if productionJavaFiles.Len() > 0 { - l.generateJavaLibrary(args.File, args.Rel, filepath.Base(args.Rel), productionJavaFiles.SortedSlice(), allPackageNames, nonLocalProductionJavaImports, nonLocalJavaExports, false, &res) + l.generateJavaLibrary(args.File, args.Rel, filepath.Base(args.Rel), productionJavaFiles.SortedSlice(), allPackageNames, nonLocalProductionJavaImports, nonLocalJavaExports, false, javaLibraryKind, &res) } for _, m := range allMains.SortedSlice() { @@ -204,7 +209,7 @@ func (l javaLang) GenerateRules(args language.GenerateArgs) language.GenerateRes testJavaImportsWithHelpers.Add(tf.pkg) srcs = append(srcs, tf.pathRelativeToBazelWorkspaceRoot) } - l.generateJavaLibrary(args.File, args.Rel, filepath.Base(args.Rel), srcs, packages, testJavaImports, nonLocalJavaExports, true, &res) + l.generateJavaLibrary(args.File, args.Rel, filepath.Base(args.Rel), srcs, packages, testJavaImports, nonLocalJavaExports, true, javaLibraryKind, &res) } } @@ -406,7 +411,7 @@ func accumulateJavaFile(cfg *javaconfig.Config, testJavaFiles, testHelperJavaFil } } -func (l javaLang) generateJavaLibrary(file *rule.File, pathToPackageRelativeToBazelWorkspace string, name string, srcsRelativeToBazelWorkspace []string, packages, imports *sorted_set.SortedSet[types.PackageName], exports *sorted_set.SortedSet[types.PackageName], testonly bool, res *language.GenerateResult) { +func (l javaLang) generateJavaLibrary(file *rule.File, pathToPackageRelativeToBazelWorkspace string, name string, srcsRelativeToBazelWorkspace []string, packages, imports *sorted_set.SortedSet[types.PackageName], exports *sorted_set.SortedSet[types.PackageName], testonly bool, javaLibraryRuleKind string, res *language.GenerateResult) { const ruleKind = "java_library" r := rule.NewRule(ruleKind, name) @@ -416,7 +421,8 @@ func (l javaLang) generateJavaLibrary(file *rule.File, pathToPackageRelativeToBa } sort.Strings(srcs) - runtimeDeps := l.collectRuntimeDeps(ruleKind, name, file) + // This is so we would default ALL runtime_deps to "keep" mode + runtimeDeps := l.collectRuntimeDeps(javaLibraryRuleKind, name, file) if runtimeDeps.Len() > 0 { r.SetAttr("runtime_deps", labelsToStrings(runtimeDeps.SortedSlice())) } diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt new file mode 100644 index 00000000..7e6adad0 --- /dev/null +++ b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt @@ -0,0 +1 @@ +12:00AM WRN java/gazelle/private/maven/resolver.go:XXX > not loading maven dependencies error="open %WORKSPACEPATH%/maven_install.json: no such file or directory" _c=maven-resolver-data diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.in b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.in new file mode 100644 index 00000000..fb5b11b9 --- /dev/null +++ b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.in @@ -0,0 +1,10 @@ +load("//libs/bazel/java:rules_java.bzl", "generic_java_library") + +# gazelle:map_kind java_library generic_java_library //libs/bazel/java:rules_java.bzl + +generic_java_library( + name = "hello", + srcs = ["Hello.java"], + visibility = ["//:__subpackages__"], + runtime_deps = ["//foo/bar"], +) diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.out b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.out new file mode 100644 index 00000000..fb5b11b9 --- /dev/null +++ b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/BUILD.out @@ -0,0 +1,10 @@ +load("//libs/bazel/java:rules_java.bzl", "generic_java_library") + +# gazelle:map_kind java_library generic_java_library //libs/bazel/java:rules_java.bzl + +generic_java_library( + name = "hello", + srcs = ["Hello.java"], + visibility = ["//:__subpackages__"], + runtime_deps = ["//foo/bar"], +) diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/Hello.java b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/Hello.java new file mode 100644 index 00000000..726023d5 --- /dev/null +++ b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/src/main/java/com/example/hello/Hello.java @@ -0,0 +1,7 @@ +package com.example.hello; + +public class Hello { + public static void sayHi() { + System.out.println("Hi!"); + } +} From 69a75270a47d1d90bdbfbc59c1970a4551da3359 Mon Sep 17 00:00:00 2001 From: Ignas Mikalajunas Date: Wed, 30 Aug 2023 21:02:05 +0300 Subject: [PATCH 2/2] Added missing workspace and fixed the test --- .../testdata/lib_with_runtime_deps_and_map_kind/WORKSPACE | 0 .../lib_with_runtime_deps_and_map_kind/expectedStderr.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/WORKSPACE diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/WORKSPACE b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/WORKSPACE new file mode 100644 index 00000000..e69de29b diff --git a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt index 7e6adad0..ca3e793a 100644 --- a/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt +++ b/java/gazelle/testdata/lib_with_runtime_deps_and_map_kind/expectedStderr.txt @@ -1 +1 @@ -12:00AM WRN java/gazelle/private/maven/resolver.go:XXX > not loading maven dependencies error="open %WORKSPACEPATH%/maven_install.json: no such file or directory" _c=maven-resolver-data +12:00AM WRN java/gazelle/private/maven/resolver.go:XXX > not loading maven dependencies error="open %WORKSPACEPATH%/maven_install.json: no such file or directory" _c=maven-resolver