From b6024258c5b9b396b022bad6e7e3d64423048289 Mon Sep 17 00:00:00 2001 From: Niyas Sait Date: Thu, 10 Feb 2022 06:59:31 -0800 Subject: [PATCH] [windows/arm64] Add missing JDK toolchain for java build Extend configurations to add JDK 11 and 17 for windows/arm64 platforms. This should fix the Java builds on windows/arm64 Closes #14700. PiperOrigin-RevId: 427737536 --- WORKSPACE | 34 +++++++++++++++++++ distdir_deps.bzl | 15 ++++++++ src/BUILD | 4 +++ .../devtools/build/lib/bazel/rules/java/BUILD | 2 ++ .../lib/bazel/rules/java/jdk.WORKSPACE.tmpl | 21 ++++++++++++ src/test/py/bazel/test_base.py | 2 ++ src/test/shell/bazel/testdata/BUILD | 2 ++ .../bazel/testdata/jdk_http_archives.tmpl | 15 ++++++++ src/test/shell/testenv.sh.tmpl | 4 +++ tools/jdk/BUILD.tools | 2 ++ tools/jdk/jdk.BUILD | 2 +- 11 files changed, 102 insertions(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index bc5acf4c624717..3fca315f5fd45c 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -476,6 +476,14 @@ dist_http_archive( patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, ) +dist_http_archive( + name = "remotejdk11_win_arm64_for_testing", + build_file = "@local_jdk//:BUILD.bazel", + patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, + patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, + +) + dist_http_archive( name = "remotejdk17_linux_for_testing", build_file = "@local_jdk//:BUILD.bazel", @@ -504,6 +512,14 @@ dist_http_archive( patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, ) +dist_http_archive( + name = "remotejdk17_win_arm64_for_testing", + build_file = "@local_jdk//:BUILD.bazel", + patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE, + patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN, + +) + # Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE. dist_http_archive( name = "remote_java_tools_for_testing", @@ -595,6 +611,15 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) """, ) +# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. +dist_http_archive( + name = "openjdk11_windows_arm64_archive", + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", +) + # This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. dist_http_archive( name = "openjdk17_linux_archive", @@ -631,6 +656,15 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) """, ) +# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. +dist_http_archive( + name = "openjdk17_windows_arm64_archive", + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", +) + load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories") stardoc_repositories() diff --git a/distdir_deps.bzl b/distdir_deps.bzl index 2ce1eb256c97c4..da8dab761f9485 100644 --- a/distdir_deps.bzl +++ b/distdir_deps.bzl @@ -449,6 +449,8 @@ DIST_DEPS = { }, "remotejdk17_win_arm64": { "aliases": [ + "remotejdk17_win_arm64_for_testing", + "openjdk17_windows_arm64_archive", "openjdk_win_arm64_vanilla", ], "archive": "zulu17.30.15-ca-jdk17.0.1-win_aarch64.zip", @@ -460,6 +462,19 @@ DIST_DEPS = { ], "used_in": ["test_WORKSPACE_files"], }, + "remotejdk11_win_arm64": { + "aliases": [ + "remotejdk11_win_arm64_for_testing", + "openjdk11_windows_arm64_archive", + ], + "archive": "microsoft-jdk-11.0.13.8.1-windows-aarch64.zip", + "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2", + "strip_prefix": "jdk-11.0.13+8", + "urls": [ + "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip", + ], + "used_in": ["test_WORKSPACE_files"], + }, "remotejdk17_linux": { "aliases": [ "remotejdk17_linux_for_testing", diff --git a/src/BUILD b/src/BUILD index 45419a632f4ad3..1a007b8b1dc5cd 100644 --- a/src/BUILD +++ b/src/BUILD @@ -653,10 +653,12 @@ filegroup( "@openjdk11_darwin_archive//:WORKSPACE", "@openjdk11_linux_archive//:WORKSPACE", "@openjdk11_windows_archive//:WORKSPACE", + "@openjdk11_windows_arm64_archive//:WORKSPACE", "@openjdk17_darwin_aarch64_archive//:WORKSPACE", "@openjdk17_darwin_archive//:WORKSPACE", "@openjdk17_linux_archive//:WORKSPACE", "@openjdk17_windows_archive//:WORKSPACE", + "@openjdk17_windows_arm64_archive//:WORKSPACE", "@openjdk_linux_aarch64_minimal//file", "@openjdk_linux_minimal//file", "@openjdk_macos_aarch64_minimal//file", @@ -677,10 +679,12 @@ filegroup( "@remotejdk11_linux_s390x_for_testing//:WORKSPACE", "@remotejdk11_macos_aarch64_for_testing//:WORKSPACE", "@remotejdk11_macos_for_testing//:WORKSPACE", + "@remotejdk11_win_arm64_for_testing//:WORKSPACE", "@remotejdk11_win_for_testing//:WORKSPACE", "@remotejdk17_linux_for_testing//:WORKSPACE", "@remotejdk17_macos_aarch64_for_testing//:WORKSPACE", "@remotejdk17_macos_for_testing//:WORKSPACE", + "@remotejdk17_win_arm64_for_testing//:WORKSPACE", "@remotejdk17_win_for_testing//:WORKSPACE", "@rules_cc//:WORKSPACE", "@rules_java//:WORKSPACE", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD index cee45d76f19dfd..80401dd29b8320 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BUILD @@ -101,10 +101,12 @@ gen_workspace_stanza( "remotejdk11_macos", "remotejdk11_macos_aarch64", "remotejdk11_win", + "remotejdk11_win_arm64", "remotejdk17_linux", "remotejdk17_macos", "remotejdk17_macos_aarch64", "remotejdk17_win", + "remotejdk17_win_arm64", ], template = "jdk.WORKSPACE.tmpl", visibility = ["//:__pkg__"], diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl index c7dc6c3c0fbf1e..e84d87c7164b7b 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl @@ -94,6 +94,17 @@ maybe( version = "11", ) +# This must be kept in sync with the top-level WORKSPACE file. +maybe( + remote_java_repository, + {remotejdk11_win_arm64} + target_compatible_with = [ + "@platforms//os:windows", + "@platforms//cpu:arm64", + ], + version = "11", +) + # This must be kept in sync with the top-level WORKSPACE file. maybe( remote_java_repository, @@ -138,6 +149,16 @@ maybe( version = "17", ) +maybe( + remote_java_repository, + {remotejdk17_win_arm64} + target_compatible_with = [ + "@platforms//os:windows", + "@platforms//cpu:arm64", + ], + version = "17", +) + maybe( http_archive, {remote_java_tools} diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py index 9c4cf3c391bca2..1df8a3aa96fc0a 100644 --- a/src/test/py/bazel/test_base.py +++ b/src/test/py/bazel/test_base.py @@ -64,10 +64,12 @@ class TestBase(unittest.TestCase): 'remotejdk11_macos_for_testing', 'remotejdk11_macos_aarch64_for_testing', 'remotejdk11_win_for_testing', + 'remotejdk11_win_arm64_for_testing', 'remotejdk17_linux_for_testing', 'remotejdk17_macos_for_testing', 'remotejdk17_macos_aarch64_for_testing', 'remotejdk17_win_for_testing', + 'remotejdk17_win_arm64_for_testing', 'remote_java_tools_for_testing', 'remote_java_tools_darwin_for_testing', 'remote_java_tools_linux_for_testing', diff --git a/src/test/shell/bazel/testdata/BUILD b/src/test/shell/bazel/testdata/BUILD index 033f6733df084d..be725e3a98b81f 100644 --- a/src/test/shell/bazel/testdata/BUILD +++ b/src/test/shell/bazel/testdata/BUILD @@ -54,10 +54,12 @@ gen_workspace_stanza( "openjdk11_darwin_archive", "openjdk11_darwin_aarch64_archive", "openjdk11_windows_archive", + "openjdk11_windows_arm64_archive", "openjdk17_linux_archive", "openjdk17_darwin_archive", "openjdk17_darwin_aarch64_archive", "openjdk17_windows_archive", + "openjdk17_windows_arm64_archive", ], template = "jdk_http_archives.tmpl", visibility = ["//:__pkg__"], diff --git a/src/test/shell/bazel/testdata/jdk_http_archives.tmpl b/src/test/shell/bazel/testdata/jdk_http_archives.tmpl index eb3bca6ac41b74..ff5e7138970c49 100644 --- a/src/test/shell/bazel/testdata/jdk_http_archives.tmpl +++ b/src/test/shell/bazel/testdata/jdk_http_archives.tmpl @@ -40,6 +40,12 @@ http_archive( build_file_content = "java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])", ) +# This must be kept in sync with the top-level WORKSPACE file. +http_archive( + {openjdk11_windows_arm64_archive} + build_file_content = "java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])", +) + #################################### JDK 17 #################################### # This must be kept in sync with the top-level WORKSPACE file. http_archive( @@ -76,3 +82,12 @@ java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) """, ) + +# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives. +http_archive( + {openjdk17_windows_arm64_archive} + build_file_content = """ +java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public']) +exports_files(["WORKSPACE"], visibility = ["//visibility:public"]) +""", +) diff --git a/src/test/shell/testenv.sh.tmpl b/src/test/shell/testenv.sh.tmpl index c0216a708abffd..9c665c00163eb0 100755 --- a/src/test/shell/testenv.sh.tmpl +++ b/src/test/shell/testenv.sh.tmpl @@ -289,10 +289,12 @@ EOF "openjdk11_darwin_aarch64_archive" "openjdk11_linux_archive" "openjdk11_windows_archive" + "openjdk11_windows_arm64_archive" "openjdk17_darwin_archive" "openjdk17_darwin_aarch64_archive" "openjdk17_linux_archive" "openjdk17_windows_archive" + "openjdk17_windows_arm64_archive" "openjdk_linux_aarch64_minimal" "openjdk_linux_minimal" "openjdk_macos_x86_64_minimal" @@ -314,10 +316,12 @@ EOF "remotejdk11_macos_for_testing" "remotejdk11_macos_aarch64_for_testing" "remotejdk11_win_for_testing" + "remotejdk11_win_arm64_for_testing" "remotejdk17_linux_for_testing" "remotejdk17_macos_for_testing" "remotejdk17_macos_aarch64_for_testing" "remotejdk17_win_for_testing" + "remotejdk17_win_arm64_for_testing" "rules_cc" "rules_java" "rules_proto" diff --git a/tools/jdk/BUILD.tools b/tools/jdk/BUILD.tools index 600b0b23cfd70b..d102ef0d46d73a 100644 --- a/tools/jdk/BUILD.tools +++ b/tools/jdk/BUILD.tools @@ -443,6 +443,7 @@ _JDKS = [ "remotejdk11_macos", "remotejdk11_macos_aarch64", "remotejdk11_win", + "remotejdk11_win_arm64", "remotejdk11_linux_aarch64", "remotejdk11_linux", "remotejdk11_linux_ppc64le", @@ -450,6 +451,7 @@ _JDKS = [ "remotejdk17_macos", "remotejdk17_macos_aarch64", "remotejdk17_win", + "remotejdk17_win_arm64", "remotejdk17_linux", ] diff --git a/tools/jdk/jdk.BUILD b/tools/jdk/jdk.BUILD index 057bfbfab3a768..6a95e85b09dca1 100644 --- a/tools/jdk/jdk.BUILD +++ b/tools/jdk/jdk.BUILD @@ -210,6 +210,6 @@ java_import( config_setting( name = "windows", - values = {"cpu": "x64_windows"}, + constraint_values = ["@platforms//os:windows"], visibility = ["//visibility:private"], )