From b790c96226cc68a7e5b23cd26514e002efc7b697 Mon Sep 17 00:00:00 2001 From: Bruno Palermo Date: Sun, 9 Aug 2026 10:01:51 -0300 Subject: [PATCH] Bazel 9 compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rules_clojure does not load at all on Bazel 9. Three separate failures, each only visible once the previous one is fixed: 1. name 'JavaInfo' is not defined 2. no such attribute 'main_class' in 'java_binary' rule 3. no such attribute 'runtime_deps' in 'java_test' rule Bazel 9 removed JavaInfo and java_common from the Starlark globals, and reduced the native java_* rules to stubs with a much smaller attribute set. Fixing (1) alone is not enough: the BUILD files in this repo use the native java_binary/java_library (2), and clojure_binary and clojure_test are macros over native.java_binary/native.java_test (3), so consumers loading java_* correctly still fail inside the macros. This change is mechanical — load() additions only, no logic changes: - rules.bzl, rules/{jar,namespace,repl}.bzl: load JavaInfo (15 uses) and java_common (1) from rules_java. - rules.bzl: clojure_binary/clojure_test call the rules_java java_binary/java_test instead of the natives. - BUILD, src/rules_clojure/BUILD, test/rules_clojure/BUILD and the three example BUILD files: load java_* from rules_java. - MODULE.bazel: rules_java 8.16.1 -> 9.7.1, which is what exposes the java/common:* load paths used above. - examples/simple/MODULE.bazel: declares rules_java too. It is a separate module, so the root repo's bazel_dep is not visible to it and its BUILD files cannot resolve @rules_java without this. Not a breaking change. `bazel test //...` in this repo passes 5/5 on BOTH Bazel 9.2.0 and Bazel 8.x, so existing users are unaffected. Tested with a real consumer as well as the examples here — a four-module Clojure/gRPC project using clojure_library, clojure_test and clojure_binary across 12 Bazel targets, green on Bazel 9.2.0 on both a developer machine and Linux CI. --- BUILD | 3 +++ MODULE.bazel | 2 +- MODULE.bazel.lock | 42 +++++++++++++++++++---------- examples/gen_srcs_bench/BUILD.bazel | 3 +++ examples/simple/MODULE.bazel | 5 ++++ examples/simple/src/example/BUILD | 3 +++ examples/simple/test/example/BUILD | 3 +++ rules.bzl | 11 +++++--- rules/jar.bzl | 5 ++++ rules/namespace.bzl | 4 +++ rules/repl.bzl | 4 +++ src/rules_clojure/BUILD | 3 +++ test/rules_clojure/BUILD | 3 +++ 13 files changed, 73 insertions(+), 18 deletions(-) diff --git a/BUILD b/BUILD index 4f515044..696fa57d 100644 --- a/BUILD +++ b/BUILD @@ -1,4 +1,7 @@ load(":rules.bzl", "clojure_repl") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_binary") package(default_visibility = ["//visibility:public"]) diff --git a/MODULE.bazel b/MODULE.bazel index 42e8289f..746c951b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -3,7 +3,7 @@ module( version = "0.5", ) -bazel_dep(name = "rules_java", version = "8.16.1") +bazel_dep(name = "rules_java", version = "9.7.1") bazel_dep(name = "rules_jvm_external", version = "6.8") bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.2", dev_dependency = True) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c2623f20..b49574a2 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -12,12 +12,13 @@ "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/MODULE.bazel": "c43c16ca2c432566cdb78913964497259903ebe8fb7d9b57b38e9f1425b427b8", - "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/source.json": "b88bff599ceaf0f56c264c749b1606f8485cec3b8c38ba30f88a4df9af142861", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", - "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", @@ -30,7 +31,8 @@ "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", - "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/MODULE.bazel": "596cb62090b039caf1cad1d52a8bc35cf188ca9a4e279a828005e7ee49a1bec3", + "https://bcr.bazel.build/modules/bazel_features/1.36.0/source.json": "279625cafa5b63cc0a8ee8448d93bc5ac1431f6000c50414051173fd22a6df3c", "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", @@ -45,7 +47,8 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", - "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", "https://bcr.bazel.build/modules/buildifier_prebuilt/8.5.1.2/MODULE.bazel": "9a6e0a2e87d1e3da679e157da5192ea351d5739ca1ff51831c2b736d5b6034de", "https://bcr.bazel.build/modules/buildifier_prebuilt/8.5.1.2/source.json": "33e11b3bf11e39cb762480a7e6ea1d24d044636135cdd8b8e74b07ebcd3b8d8b", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", @@ -85,11 +88,13 @@ "https://bcr.bazel.build/modules/protobuf/32.1/source.json": "bd2664e90875c0cd755d1d9b7a103a4b027893ac8eafa3bba087557ffc244ad4", "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", - "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/MODULE.bazel": "a2bfa6020ed603a00d944161c63173c7f109774e99bee0c2cd8dbf24159f8134", + "https://bcr.bazel.build/modules/pybind11_bazel/3.0.0/source.json": "d8f5104d4c21d272bf327ebe44366fb0b4c036cdaa1f5cceb21a408ca4ef2ef8", "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", - "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4", "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/MODULE.bazel": "3d9d4995833fc0334fc5c88b56a05288dd25d651544cd7b2233bbd6357bbeba0", + "https://bcr.bazel.build/modules/re2/2025-11-05.bcr.1/source.json": "7df1394aabda1c9bc188a302f5d54b1c657924edd04ebc57d2be29dbd7efd141", "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", @@ -107,8 +112,11 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", + "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07", "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", - "https://bcr.bazel.build/modules/rules_cc/0.2.8/source.json": "85087982aca15f31307bd52698316b28faa31bd2c3095a41f456afec0131344c", + "https://bcr.bazel.build/modules/rules_cc/0.2.9/MODULE.bazel": "34263f1dca62ea664265438cef714d7db124c03e1ed55ebb4f1dc860164308d1", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", @@ -122,11 +130,11 @@ "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", - "https://bcr.bazel.build/modules/rules_java/8.16.1/MODULE.bazel": "0f20b1cecaa8e52f60a8f071e59a20b4e3b9a67f6c56c802ea256f6face692d3", - "https://bcr.bazel.build/modules/rules_java/8.16.1/source.json": "072f8d11264edc499621be2dc9ea01d6395db5aa6f8799c034ae01a3e857f2e4", "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.7.1/MODULE.bazel": "aced1dc2cf4282cf56f1ab13b697b88dc676898b2630713d3e82a94371f7eceb", + "https://bcr.bazel.build/modules/rules_java/9.7.1/source.json": "59be399068e8a9a8bd90236112fb9a9d9acc08de745c49e33b4b7b861de6fa99", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", @@ -162,7 +170,8 @@ "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", - "https://bcr.bazel.build/modules/rules_python/1.4.1/source.json": "8ec8c90c70ccacc4de8ca1b97f599e756fb59173e898ee08b733006650057c07", + "https://bcr.bazel.build/modules/rules_python/1.6.3/MODULE.bazel": "a7b80c42cb3de5ee2a5fa1abc119684593704fcd2fec83165ebe615dec76574f", + "https://bcr.bazel.build/modules/rules_python/1.6.3/source.json": "f0be74977e5604a6526c8a416cda22985093ff7d5d380d41722d7e44015cc419", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", @@ -189,7 +198,7 @@ "moduleExtensions": { "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=", + "bzlTransitiveDigest": "03Qju4tW0vE+0RBuZGuV2A4Hx6AiSkdNahYvworx2aM=", "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -253,8 +262,8 @@ }, "@@rules_python+//python/uv:uv.bzl%uv": { "general": { - "bzlTransitiveDigest": "Xpqjnjzy6zZ90Es9Wa888ZLHhn7IsNGbph/e6qoxzw8=", - "usagesDigest": "4JapxcpS0mL3524k0TZJffAtVyuRjDHZvN9kBRxxF1U=", + "bzlTransitiveDigest": "xfNZ/WmfkC9N/pNH0cmucTOrqBa966d9iMmmX54m1UM=", + "usagesDigest": "icnInV8HDGrRQf9x8RMfxWfBHgT3OgRlYovS/9POEJw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -279,6 +288,11 @@ } }, "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], [ "rules_python+", "platforms", diff --git a/examples/gen_srcs_bench/BUILD.bazel b/examples/gen_srcs_bench/BUILD.bazel index efb89ca6..67730bb2 100644 --- a/examples/gen_srcs_bench/BUILD.bazel +++ b/examples/gen_srcs_bench/BUILD.bazel @@ -1,4 +1,7 @@ load("@rules_clojure//rules:tools_deps.bzl", "clojure_gen_srcs") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_binary", "java_library") package(default_visibility = ["//visibility:public"]) diff --git a/examples/simple/MODULE.bazel b/examples/simple/MODULE.bazel index 2539eac1..c605a718 100644 --- a/examples/simple/MODULE.bazel +++ b/examples/simple/MODULE.bazel @@ -2,6 +2,11 @@ module(name = "example-simple") bazel_dep(name = "rules_clojure", version = "0.5") +# Bazel 9 stubs the native java_* rules, so the BUILD files here load them from +# rules_java. This module must declare that dependency itself — it is a +# separate module, so the root repo's bazel_dep is not visible to it. +bazel_dep(name = "rules_java", version = "9.7.1") + local_path_override(module_name = "rules_clojure", path = "../..") diff --git a/examples/simple/src/example/BUILD b/examples/simple/src/example/BUILD index 0c78d04e..3a8fc4a7 100644 --- a/examples/simple/src/example/BUILD +++ b/examples/simple/src/example/BUILD @@ -1,4 +1,7 @@ load("@rules_clojure//:rules.bzl", "clojure_library", "clojure_binary") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_binary", "java_library") package(default_visibility = ["//visibility:public"]) diff --git a/examples/simple/test/example/BUILD b/examples/simple/test/example/BUILD index 3568ee89..1cba6bb9 100644 --- a/examples/simple/test/example/BUILD +++ b/examples/simple/test/example/BUILD @@ -1,4 +1,7 @@ load("@rules_clojure//:rules.bzl", "clojure_library", "clojure_test") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_library") java_library(name="libcore_test", resources=["core_test.clj"], diff --git a/rules.bzl b/rules.bzl index 4fd56012..ca3abc66 100644 --- a/rules.bzl +++ b/rules.bzl @@ -1,5 +1,10 @@ load("//rules:jar.bzl", _clojure_jar_impl = "clojure_jar_impl") load("//rules:repl.bzl", _clojure_repl_impl = "clojure_repl_impl") +# Bazel 9 removed JavaInfo/java_common from the Starlark globals; they must +# now be loaded from rules_java. Without this the rules fail to load with +# "name 'JavaInfo' is not defined". +load("@rules_java//java/common:java_info.bzl", "JavaInfo") +load("@rules_java//java:defs.bzl", "java_binary", "java_test") clojure_library = rule( doc = "Define a clojure library", @@ -27,7 +32,7 @@ def clojure_binary(name, **kwargs): deps = kwargs.pop("deps", []) runtime_deps = kwargs.pop("runtime_deps", []) - native.java_binary(name=name, + java_binary(name=name, runtime_deps = deps + runtime_deps, **kwargs) @@ -49,7 +54,7 @@ def clojure_test(name, *, test_ns, deps=[], runtime_deps=[], main_class="rules_c # ideally the library name and the bin name would be the same. They can't be. # clojure src files would like to depend on `foo_test`, so mangle the test binary, not the src jar name - native.java_test(name=name, + java_test(name=name, runtime_deps = deps + runtime_deps + ["@rules_clojure//src/rules_clojure:testrunner"], use_testrunner = False, main_class=main_class, @@ -100,7 +105,7 @@ _cljs_library = rule( def cljs_library(name, deps=[],**kwargs): clj_binary="%s_clj_binary" % name - native.java_binary(name=clj_binary, + java_binary(name=clj_binary, main_class = "clojure.main", jvm_flags=["-Dclojure.main.report=stderr"], runtime_deps=deps, diff --git a/rules/jar.bzl b/rules/jar.bzl index e3472d49..e84cdd44 100644 --- a/rules/jar.bzl +++ b/rules/jar.bzl @@ -1,3 +1,8 @@ +# Bazel 9 removed JavaInfo/java_common from the Starlark globals; they must +# now be loaded from rules_java. Without this the rules fail to load with +# "name 'JavaInfo' is not defined". +load("@rules_java//java/common:java_info.bzl", "JavaInfo") +load("@rules_java//java/common:java_common.bzl", "java_common") def contains(lst, item): for x in lst: if x == item: diff --git a/rules/namespace.bzl b/rules/namespace.bzl index 7d43a08a..928b0112 100644 --- a/rules/namespace.bzl +++ b/rules/namespace.bzl @@ -1,4 +1,8 @@ load("//rules:common.bzl", "CljInfo") +# Bazel 9 removed JavaInfo/java_common from the Starlark globals; they must +# now be loaded from rules_java. Without this the rules fail to load with +# "name 'JavaInfo' is not defined". +load("@rules_java//java/common:java_info.bzl", "JavaInfo") def clojure_ns_impl(ctx): runfiles = ctx.runfiles() diff --git a/rules/repl.bzl b/rules/repl.bzl index 30141177..ec6f4bae 100644 --- a/rules/repl.bzl +++ b/rules/repl.bzl @@ -1,3 +1,7 @@ +# Bazel 9 removed JavaInfo/java_common from the Starlark globals; they must +# now be loaded from rules_java. Without this the rules fail to load with +# "name 'JavaInfo' is not defined". +load("@rules_java//java/common:java_info.bzl", "JavaInfo") ### rule to start a clojure repl. We don't use `java_binary` because ### we want to support adding directories to the classpath (and in the ### future, possibly running from the source tree rather than `bazel-bin`), both in support of diff --git a/src/rules_clojure/BUILD b/src/rules_clojure/BUILD index 10194030..c4622488 100644 --- a/src/rules_clojure/BUILD +++ b/src/rules_clojure/BUILD @@ -1,4 +1,7 @@ load("//:rules.bzl", "clojure_library", "clojure_binary") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_binary", "java_import", "java_library") package(default_visibility = ["//visibility:public"]) exports_files(glob(["**/*.clj"])) diff --git a/test/rules_clojure/BUILD b/test/rules_clojure/BUILD index d01044a5..4f01e535 100644 --- a/test/rules_clojure/BUILD +++ b/test/rules_clojure/BUILD @@ -1,4 +1,7 @@ load("//:rules.bzl", "clojure_library", "clojure_test") +# Bazel 9 stubs the native java_* rules with a reduced attribute set +# (no main_class/runtime_deps/jvm_flags/resources); they must come from rules_java. +load("@rules_java//java:defs.bzl", "java_library") package(default_visibility = ["//visibility:public"])