diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 179245e5..27611c63 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -18,20 +18,19 @@ build_targets_bzlmod: &build_targets_bzlmod test_targets: &test_targets - "//test/..." -buildifier: latest +buildifier: 7.3.1 tasks: # TODO: add config for 8.0.0 once released # Bazel 7.x -# TODO: fix versions after 7.4.0 ubuntu2004: name: "Bazel 7.x" - bazel: "9e3fa2a2e98db4aa10918a981325cfa9473e4ed8" + bazel: "7.3.2" build_targets: *build_targets test_targets: *test_targets ubuntu2004_integration: name: "Bazel 7.x Integration" - bazel: "9e3fa2a2e98db4aa10918a981325cfa9473e4ed8" + bazel: "7.3.2" platform: ubuntu2004 working_directory: "test/repo" shell_commands: @@ -42,21 +41,21 @@ tasks: - "@rules_java//java/..." macos: name: "Bazel 7.x" - bazel: "9e3fa2a2e98db4aa10918a981325cfa9473e4ed8" + bazel: "7.3.2" build_targets: *build_targets windows: name: "Bazel 7.x" - bazel: "9e3fa2a2e98db4aa10918a981325cfa9473e4ed8" + bazel: "7.3.2" build_targets: *build_targets # Bazel@HEAD ubuntu2004_head: name: "Bazel@HEAD" - bazel: last_green + bazel: "544e23503e4c109335b12bfe9168a6a39c81c5b9" platform: ubuntu2004 build_targets: *build_targets ubuntu2004_integration_head: name: "Bazel@HEAD Integration" - bazel: last_green + bazel: "544e23503e4c109335b12bfe9168a6a39c81c5b9" platform: ubuntu2004 working_directory: "test/repo" shell_commands: @@ -67,12 +66,12 @@ tasks: - "@rules_java//java/..." macos_head: name: "Bazel@HEAD" - bazel: last_green + bazel: "544e23503e4c109335b12bfe9168a6a39c81c5b9" platform: macos build_targets: *build_targets windows_head: name: "Bazel@HEAD" - bazel: last_green + bazel: "544e23503e4c109335b12bfe9168a6a39c81c5b9" platform: windows build_targets: *build_targets # Bazel 6.x diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 00000000..6b0e58e7 --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +7.4.1 \ No newline at end of file diff --git a/MODULE.bazel b/MODULE.bazel index fa5b11d8..17b59a15 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -1,7 +1,7 @@ module( name = "rules_java", - version = "7.12.1", - bazel_compatibility = [">=6.2.0"], + version = "7.12.5", + bazel_compatibility = [">=6.4.0"], compatibility_level = 1, ) @@ -72,6 +72,7 @@ JDKS = { "linux", "linux_aarch64", "linux_ppc64le", + "linux_riscv64", "linux_s390x", "macos", "macos_aarch64", diff --git a/java/bazel/repositories_util.bzl b/java/bazel/repositories_util.bzl index 7e9efbd2..fce641dc 100644 --- a/java/bazel/repositories_util.bzl +++ b/java/bazel/repositories_util.bzl @@ -82,7 +82,7 @@ _RELEASE_CONFIGS = { "adoptium": { "release": "21.0.4+7", "platforms": { - "linux": ["ppc", "s390x"], + "linux": ["ppc", "riscv64", "s390x"], }, }, }, diff --git a/java/common/proguard_spec_info.bzl b/java/common/proguard_spec_info.bzl index a57a0ed7..b2a591a2 100644 --- a/java/common/proguard_spec_info.bzl +++ b/java/common/proguard_spec_info.bzl @@ -13,4 +13,14 @@ # limitations under the License. """ProguardSpecInfo provider""" -ProguardSpecInfo = ProguardSpecProvider +def _proguard_spec_info_init(specs): + # The constructor supports positional parameter, i.e ProguardSpecInfo([file]) + return {"specs": specs} + +ProguardSpecInfo, _ = provider( + doc = "Information about proguard specs for Android binaries.", + fields = { + "specs": "A list of proguard specs files", + }, + init = _proguard_spec_info_init, +) diff --git a/java/common/rules/impl/java_binary_impl.bzl b/java/common/rules/impl/java_binary_impl.bzl index 8d7e2ef9..078d9d37 100644 --- a/java/common/rules/impl/java_binary_impl.bzl +++ b/java/common/rules/impl/java_binary_impl.bzl @@ -447,7 +447,7 @@ def _auto_create_deploy_jar(ctx, info, launcher_info, main_class, coverage_main_ resources = java_attrs.resources, classpath_resources = java_attrs.classpath_resources, runtime_classpath = runtime_classpath, - manifest_lines = info.manifest_lines, + manifest_lines = [], build_info_files = [], build_target = str(ctx.label), output = output, diff --git a/java/repositories.bzl b/java/repositories.bzl index 27f4f85d..195bfd3c 100644 --- a/java/repositories.bzl +++ b/java/repositories.bzl @@ -308,6 +308,14 @@ _REMOTE_JDK_CONFIGS_LIST = [ urls = ["https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4+7/OpenJDK21U-jdk_ppc64le_linux_hotspot_21.0.4_7.tar.gz", "https://mirror.bazel.build/github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4+7/OpenJDK21U-jdk_ppc64le_linux_hotspot_21.0.4_7.tar.gz"], version = "21", ), + struct( + name = "remotejdk21_linux_riscv64", + target_compatible_with = ["@platforms//os:linux", "@platforms//cpu:riscv64"], + sha256 = "b04fd7f52d18268a935f1a7144dae802b25db600ec97156ddd46b3100cbd13da", + strip_prefix = "jdk-21.0.4+7", + urls = ["https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4+7/OpenJDK21U-jdk_riscv64_linux_hotspot_21.0.4_7.tar.gz", "https://mirror.bazel.build/github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4+7/OpenJDK21U-jdk_riscv64_linux_hotspot_21.0.4_7.tar.gz"], + version = "21", + ), struct( name = "remotejdk21_linux_s390x", target_compatible_with = ["@platforms//os:linux", "@platforms//cpu:s390x"], diff --git a/test/repo/BUILD.bazel b/test/repo/BUILD.bazel index 6b7da400..c3370b03 100644 --- a/test/repo/BUILD.bazel +++ b/test/repo/BUILD.bazel @@ -14,4 +14,5 @@ java_binary( default_java_toolchain( name = "my_funky_toolchain", + bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"], ) diff --git a/test/repo/MODULE.bazel b/test/repo/MODULE.bazel index c9729b4d..96d0768a 100644 --- a/test/repo/MODULE.bazel +++ b/test/repo/MODULE.bazel @@ -30,6 +30,7 @@ use_repo( "remotejdk17_win", "remotejdk17_win_arm64", "remotejdk21_linux", + "remotejdk21_linux_riscv64", "remotejdk21_macos", "remotejdk21_macos_aarch64", "remotejdk21_win", diff --git a/toolchains/BUILD b/toolchains/BUILD index f78c3b9e..b47360ea 100644 --- a/toolchains/BUILD +++ b/toolchains/BUILD @@ -66,8 +66,8 @@ filegroup( # # Toolchains of this type are only consumed internally by the bootclasspath rule and should not be # accessed from Starlark. - -toolchain_type(name = "bootstrap_runtime_toolchain_type") +# TODO: migrate away from using @bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type ? +# toolchain_type(name = "bootstrap_runtime_toolchain_type") # Points to toolchain[":runtime_toolchain_type"] (was :legacy_current_java_runtime) java_runtime_alias(name = "current_java_runtime") diff --git a/toolchains/default_java_toolchain.bzl b/toolchains/default_java_toolchain.bzl index a92a1f93..e2e94388 100644 --- a/toolchains/default_java_toolchain.bzl +++ b/toolchains/default_java_toolchain.bzl @@ -14,8 +14,8 @@ """Rules for defining default_java_toolchain""" -load("//java:defs.bzl", "java_toolchain") load("//java/common:java_common.bzl", "java_common") +load("//java/toolchains:java_toolchain.bzl", "java_toolchain") # JVM options, without patching java.compiler and jdk.compiler modules. BASE_JDK9_JVM_OPTS = [ @@ -211,7 +211,7 @@ def java_runtime_files(name, srcs): tags = ["manual"], ) -_JAVA_BOOTSTRAP_RUNTIME_TOOLCHAIN_TYPE = Label("//toolchains:bootstrap_runtime_toolchain_type") +_JAVA_BOOTSTRAP_RUNTIME_TOOLCHAIN_TYPE = Label("@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type") # Opt the Java bootstrap actions into path mapping: # https://github.com/bazelbuild/bazel/commit/a239ea84832f18ee8706682145e9595e71b39680 diff --git a/toolchains/jdk_build_file.bzl b/toolchains/jdk_build_file.bzl index 1e08f376..c0ed1608 100644 --- a/toolchains/jdk_build_file.bzl +++ b/toolchains/jdk_build_file.bzl @@ -14,7 +14,7 @@ """A templated BUILD file for Java repositories.""" -JDK_BUILD_TEMPLATE = """load("@rules_java//java:defs.bzl", "java_runtime") +JDK_BUILD_TEMPLATE = """load("@rules_java//java/toolchains:java_runtime.bzl", "java_runtime") package(default_visibility = ["//visibility:public"]) diff --git a/toolchains/local_java_repository.bzl b/toolchains/local_java_repository.bzl index e0123673..627f8ab8 100644 --- a/toolchains/local_java_repository.bzl +++ b/toolchains/local_java_repository.bzl @@ -14,7 +14,7 @@ """Rules for importing a local JDK.""" -load("//java:defs.bzl", "java_runtime") +load("//java/toolchains:java_runtime.bzl", "java_runtime") load(":default_java_toolchain.bzl", "default_java_toolchain") def _detect_java_version(repository_ctx, java_bin): @@ -110,7 +110,7 @@ def local_java_runtime(name, java_home, version, runtime_name = None, visibility native.toolchain( name = "bootstrap_runtime_toolchain_definition", target_settings = [":%s_settings_alias" % name], - toolchain_type = Label("//toolchains:bootstrap_runtime_toolchain_type"), + toolchain_type = Label("@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type"), toolchain = runtime_name, ) @@ -268,7 +268,7 @@ toolchain( toolchain( name = "bootstrap_runtime_toolchain_definition", target_settings = [":localjdk_setting"], - toolchain_type = "@rules_java//toolchains:bootstrap_runtime_toolchain_type", + toolchain_type = "@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type", toolchain = ":jdk", ) ''' diff --git a/toolchains/remote_java_repository.bzl b/toolchains/remote_java_repository.bzl index a2535d3c..65bbe482 100644 --- a/toolchains/remote_java_repository.bzl +++ b/toolchains/remote_java_repository.bzl @@ -89,7 +89,7 @@ toolchain( # the same configuration, this constraint will not result in toolchain resolution failures. exec_compatible_with = {target_compatible_with}, target_settings = [":version_or_prefix_version_setting"], - toolchain_type = "@rules_java//toolchains:bootstrap_runtime_toolchain_type", + toolchain_type = "@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type", toolchain = "{toolchain}", ) """.format(