Skip to content

@bazel_skylib_gazelle_plugin//bzl: produced changes fail to build with no such target '@@rules_jvm_external~//:defs': target 'defs' not declared in package '' #559

@KushalP

Description

@KushalP

Using bazel_skylib_gazelle_plugin//bzl as a gazelle language fails to produce a buildable configuration.

Steps to reproduce

  1. Checkout https://github.com/apple/rules_pkl/tree/19b9d7236e50ce710aa49e1f11e4a76c99112eea
  2. Apply the provided diff below
  3. bazel run //:gazelle
  4. bazel test //... will fail

git diff for reproduction

diff --git a/BUILD.bazel b/BUILD.bazel
index 5ebee0b..7c52a97 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -20,7 +20,7 @@ exports_files([
 
 gazelle_binary(
     name = "gazelle_bin",
-    languages = DEFAULT_LANGUAGES,
+    languages = DEFAULT_LANGUAGES + ["@bazel_skylib_gazelle_plugin//bzl"],
 )
 
 gazelle(
diff --git a/MODULE.bazel b/MODULE.bazel
index 17f3a20..783ecc5 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -26,6 +26,7 @@ bazel_dep(name = "platforms", version = "0.0.10")
 bazel_dep(name = "rules_java", version = "8.6.1")
 bazel_dep(name = "rules_jvm_external", version = "6.6")
 
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.7.1", dev_dependency = True)
 bazel_dep(name = "buildifier_prebuilt", version = "7.3.1", dev_dependency = True)
 bazel_dep(name = "gazelle", version = "0.36.0", dev_dependency = True, repo_name = "bazel_gazelle")
 bazel_dep(name = "rules_bazel_integration_test", version = "0.29.0", dev_dependency = True)

The error

# Apply the diff provided above, before running this.
❯ bazel run //:gazelle
...
gazelle: /rules_pkl/pkl/private/BUILD.bazel:27.12-27.27: could not merge expression
gazelle: /rules_pkl/pkl/private/BUILD.bazel:27.12-27.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression
gazelle: /rules_pkl/pkl/BUILD.bazel:158.12-158.27: could not merge expression

❯ echo $?
0

# Run all tests
❯ bazel test --verbose_failures //...
INFO: Invocation ID: 6471fa9b-3f53-4f7a-b151-98f6e3a5ab55
ERROR: /private/var/tmp/_bazel_kushal/cb69cc106c9cff5a6ac34d1390aa8454/external/rules_jvm_external~/BUILD: no such target '@@rules_jvm_external~//:defs': target 'defs' not declared in package '' defined by /private/var/tmp/_bazel_kushal/cb69cc106c9cff5a6ac34d1390aa8454/external/rules_jvm_external~/BUILD
ERROR: /Users/kushal/Projects/pkl/rules_pkl/pkl/private/BUILD.bazel:66:12: no such target '@@rules_jvm_external~//:defs': target 'defs' not declared in package '' defined by /private/var/tmp/_bazel_kushal/cb69cc106c9cff5a6ac34d1390aa8454/external/rules_jvm_external~/BUILD and referenced by '//pkl/private:pkl_codegen_java'
ERROR: Analysis of target '//pkl/private:pkl_codegen_java' failed; build aborted: Analysis failed
INFO: Elapsed time: 0.141s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully
ERROR: No test targets were found, yet testing was requested

The diff produced by //:gazelle

diff --git a/pkl/BUILD.bazel b/pkl/BUILD.bazel
index ec20925..5ac5cd9 100644
--- a/pkl/BUILD.bazel
+++ b/pkl/BUILD.bazel
@@ -196,3 +196,34 @@ java_binary(
         ),
     ],
 )
+
+bzl_library(
+    name = "extensions",
+    srcs = ["extensions.bzl"],
+    visibility = ["//visibility:public"],
+    deps = ["//pkl/extensions:pkl"],
+)
+
+bzl_library(
+    name = "repositories",
+    srcs = ["repositories.bzl"],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//pkl/private:constants",
+        "//pkl/private:repositories",
+        "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "@bazel_tools//tools/build_defs/repo:utils.bzl",
+        "@rules_jvm_external//:defs",
+    ],
+)
+
+bzl_library(
+    name = "workspace",
+    srcs = ["workspace.bzl"],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//pkl/private:constants",
+        "//pkl/private:pkl_project",
+        "//pkl/private:remote_pkl_package",
+    ],
+)
diff --git a/pkl/extensions/BUILD.bazel b/pkl/extensions/BUILD.bazel
index 07b9298..505b15a 100644
--- a/pkl/extensions/BUILD.bazel
+++ b/pkl/extensions/BUILD.bazel
@@ -1,3 +1,5 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+
 filegroup(
     name = "all_files",
     srcs = glob(["*"]),
@@ -6,3 +8,14 @@ filegroup(
         "//tests/integration_tests:__subpackages__",
     ],
 )
+
+bzl_library(
+    name = "pkl",
+    srcs = ["pkl.bzl"],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//pkl:repositories",
+        "//pkl/private:pkl_project",
+        "//pkl/private:remote_pkl_package",
+    ],
+)
diff --git a/pkl/private/BUILD.bazel b/pkl/private/BUILD.bazel
index 87ec7b5..1df6049 100644
--- a/pkl/private/BUILD.bazel
+++ b/pkl/private/BUILD.bazel
@@ -36,3 +36,115 @@ sh_binary(
     srcs = ["run_pkl_script.sh"],
     visibility = ["//visibility:public"],
 )
+
+bzl_library(
+    name = "constants",
+    srcs = ["constants.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+)
+
+bzl_library(
+    name = "pkl",
+    srcs = ["pkl.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [
+        ":providers",
+        ":repositories",
+    ],
+)
+
+bzl_library(
+    name = "pkl_cache",
+    srcs = ["pkl_cache.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [
+        ":pkl_package_names",
+        ":providers",
+    ],
+)
+
+bzl_library(
+    name = "pkl_codegen_java",
+    srcs = ["pkl_codegen_java.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [
+        "@rules_jvm_external//:defs",
+        "@rules_pkl//pkl/private:providers",
+    ],
+)
+
+bzl_library(
+    name = "pkl_doc",
+    srcs = ["pkl_doc.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+)
+
+bzl_library(
+    name = "pkl_library",
+    srcs = ["pkl_library.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [":providers"],
+)
+
+bzl_library(
+    name = "pkl_package",
+    srcs = ["pkl_package.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = ["@rules_pkl//pkl/private:providers"],
+)
+
+bzl_library(
+    name = "pkl_package_names",
+    srcs = ["pkl_package_names.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+)
+
+bzl_library(
+    name = "pkl_project",
+    srcs = ["pkl_project.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [":pkl_package_names"],
+)
+
+bzl_library(
+    name = "pkl_project_rule",
+    srcs = ["pkl_project_rule.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = ["@rules_pkl//pkl/private:providers"],
+)
+
+bzl_library(
+    name = "pkl_test_suite",
+    srcs = ["pkl_test_suite.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [
+        ":pkl",
+        "@rules_pkl//pkl/private:pkl_library",
+    ],
+)
+
+bzl_library(
+    name = "providers",
+    srcs = ["providers.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+)
+
+bzl_library(
+    name = "remote_pkl_package",
+    srcs = ["remote_pkl_package.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [":pkl_package_names"],
+)
+
+bzl_library(
+    name = "repositories",
+    srcs = ["repositories.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+    deps = [":providers"],
+)
+
+bzl_library(
+    name = "toolchain",
+    srcs = ["toolchain.bzl"],
+    visibility = ["//pkl:__subpackages__"],
+)
diff --git a/tests/integration_tests/example_workspaces/pkl_cache/BUILD.bazel b/tests/integration_tests/example_workspaces/pkl_cache/BUILD.bazel
index 838e715..74acd77 100644
--- a/tests/integration_tests/example_workspaces/pkl_cache/BUILD.bazel
+++ b/tests/integration_tests/example_workspaces/pkl_cache/BUILD.bazel
@@ -12,6 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 load("@aspect_bazel_lib//lib:diff_test.bzl", "diff_test")
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
 load("@rules_pkl//pkl:defs.bzl", "pkl_eval")
 load("//:poison_cache.bzl", "poisoned_pkl_cache")
 
@@ -37,3 +38,10 @@ diff_test(
     file1 = "expected_output.yaml",
     file2 = ":pkl_eval_with_poisoned_cache",
 )
+
+bzl_library(
+    name = "poison_cache",
+    srcs = ["poison_cache.bzl"],
+    visibility = ["//visibility:public"],
+    deps = ["@rules_pkl//pkl/private:providers"],
+)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions