From 90e767ac842ca4aac65505faa25401156329a584 Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Tue, 14 Nov 2023 21:07:28 -0800 Subject: [PATCH 1/5] Add a native image of turbine to the prebuilt Java tools A simple local experiment shows that the time for all Java header compilation actions required for `//src:bazel-dev` decreases by a factor of 4.5 when using a native image of turbine instead of jar. The time taken for an incremental build of `//src/main/java/com/google/devtools/build/lib/bazel:BazelServer` after adding a public method to `Label` decreases by a factor of 2 with `--experimental_java_classpath=bazel`. As a first step towards using the native image in Java toolchains, ship it as part of the prebuilt Java tools by using rules_graalvm. Closes #19361. PiperOrigin-RevId: 582531539 Change-Id: If71d8ec86fecbc1363a748d197f88962bd489fb4 --- MODULE.bazel | 15 +- MODULE.bazel.lock | 289 ++++++++++++------ repositories.bzl | 1 + src/BUILD | 8 + .../google/devtools/build/java/turbine/BUILD | 43 ++- tools/jdk/BUILD.java_tools_prebuilt | 8 + workspace_deps.bzl | 6 +- 7 files changed, 275 insertions(+), 95 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 7c5bc096548bc9..a8fc45c6ad0207 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -13,7 +13,7 @@ module( # ========================================= bazel_dep(name = "rules_license", version = "0.0.7") -bazel_dep(name = "bazel_skylib", version = "1.4.1") +bazel_dep(name = "bazel_skylib", version = "1.5.0") bazel_dep(name = "protobuf", version = "21.7", repo_name = "com_google_protobuf") bazel_dep(name = "grpc", version = "1.48.1.bcr.1", repo_name = "com_github_grpc_grpc") bazel_dep(name = "platforms", version = "0.0.8") @@ -24,6 +24,7 @@ bazel_dep(name = "blake3", version = "1.3.3.bcr.1") bazel_dep(name = "zlib", version = "1.3") bazel_dep(name = "rules_cc", version = "0.0.9") bazel_dep(name = "rules_java", version = "7.1.0") +bazel_dep(name = "rules_graalvm", version = "0.10.3") bazel_dep(name = "rules_proto", version = "5.3.0-21.7") bazel_dep(name = "rules_jvm_external", version = "5.2") bazel_dep(name = "rules_python", version = "0.26.0") @@ -52,7 +53,7 @@ local_path_override( # The following Bazel modules are not direct dependencies for building Bazel, # but are required for visibility from DIST_ARCHIVE_REPOS in repositories.bzl -bazel_dep(name = "apple_support", version = "1.5.0") +bazel_dep(name = "apple_support", version = "1.8.1") bazel_dep(name = "abseil-cpp", version = "20230125.1") bazel_dep(name = "c-ares", version = "1.15.0") bazel_dep(name = "rules_go", version = "0.39.1") @@ -298,6 +299,16 @@ use_repo(bazel_rbe_deps, "rbe_ubuntu2004_java11") remote_coverage_tools_extension = use_extension("//tools/test:extensions.bzl", "remote_coverage_tools_extension") use_repo(remote_coverage_tools_extension, "remote_coverage_tools") +gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") +gvm.graalvm( + name = "graalvm", + distribution = "ce", + java_version = "20", + version = "20.0.2", +) +use_repo(gvm, "graalvm_toolchains") +register_toolchains("@graalvm_toolchains//:gvm") + # ========================================= # Register platforms & toolchains # ========================================= diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 389445a275f790..90d76be753d934 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -27,6 +27,7 @@ "//:default_host_platform" ], "toolchainsToRegister": [ + "@graalvm_toolchains//:gvm", "@bazel_tools//tools/python:autodetecting_toolchain", "@local_config_winsdk//:all", "//src/main/res:empty_rc_toolchain", @@ -39,7 +40,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 65, + "line": 66, "column": 22 }, "imports": { @@ -168,7 +169,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 66, + "line": 67, "column": 14 } }, @@ -183,7 +184,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -198,7 +199,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -213,7 +214,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -228,7 +229,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -243,7 +244,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -258,7 +259,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -273,7 +274,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -288,7 +289,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -303,7 +304,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 189, + "line": 190, "column": 19 } }, @@ -331,7 +332,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 322, + "line": 333, "column": 22 } } @@ -345,7 +346,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 210, + "line": 211, "column": 32 }, "imports": { @@ -385,7 +386,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 244, + "line": 245, "column": 23 }, "imports": {}, @@ -399,7 +400,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 245, + "line": 246, "column": 17 } } @@ -413,7 +414,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 247, + "line": 248, "column": 20 }, "imports": { @@ -431,7 +432,7 @@ "devDependency": false, "location": { "file": "@@//:MODULE.bazel", - "line": 248, + "line": 249, "column": 10 } } @@ -445,7 +446,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 259, + "line": 260, "column": 33 }, "imports": { @@ -476,7 +477,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 280, + "line": 281, "column": 29 }, "imports": { @@ -493,7 +494,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 287, + "line": 288, "column": 32 }, "imports": { @@ -512,7 +513,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 295, + "line": 296, "column": 31 }, "imports": { @@ -529,7 +530,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 298, + "line": 299, "column": 48 }, "imports": { @@ -540,13 +541,46 @@ "hasDevUseExtension": false, "hasNonDevUseExtension": true }, + { + "extensionBzlFile": "@rules_graalvm//:extensions.bzl", + "extensionName": "graalvm", + "usingModule": "", + "location": { + "file": "@@//:MODULE.bazel", + "line": 302, + "column": 20 + }, + "imports": { + "graalvm_toolchains": "graalvm_toolchains" + }, + "devImports": [], + "tags": [ + { + "tagName": "graalvm", + "attributeValues": { + "name": "graalvm", + "distribution": "ce", + "java_version": "20", + "version": "20.0.2" + }, + "devDependency": false, + "location": { + "file": "@@//:MODULE.bazel", + "line": 303, + "column": 12 + } + } + ], + "hasDevUseExtension": false, + "hasNonDevUseExtension": true + }, { "extensionBzlFile": "@io_bazel//:extensions.bzl", "extensionName": "bazel_android_deps", "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 344, + "line": 355, "column": 35 }, "imports": { @@ -563,7 +597,7 @@ "usingModule": "", "location": { "file": "@@//:MODULE.bazel", - "line": 347, + "line": 358, "column": 42 }, "imports": { @@ -578,7 +612,7 @@ ], "deps": { "rules_license": "rules_license@0.0.7", - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "com_google_protobuf": "protobuf@21.7", "com_github_grpc_grpc": "grpc@1.48.1.bcr.1", "platforms": "platforms@0.0.8", @@ -589,6 +623,7 @@ "zlib": "zlib@1.3", "rules_cc": "rules_cc@0.0.9", "rules_java": "rules_java@7.1.0", + "rules_graalvm": "rules_graalvm@0.10.3", "rules_proto": "rules_proto@5.3.0-21.7", "rules_jvm_external": "rules_jvm_external@5.2", "rules_python": "rules_python@0.26.0", @@ -596,7 +631,7 @@ "com_google_googletest": "googletest@1.14.0", "remoteapis": "remoteapis@_", "googleapis": "googleapis@_", - "apple_support": "apple_support@1.5.0", + "apple_support": "apple_support@1.8.1", "abseil-cpp": "abseil-cpp@20230125.1", "c-ares": "c-ares@1.15.0", "rules_go": "rules_go@0.39.1", @@ -632,10 +667,10 @@ } } }, - "bazel_skylib@1.4.1": { + "bazel_skylib@1.5.0": { "name": "bazel_skylib", - "version": "1.4.1", - "key": "bazel_skylib@1.4.1", + "version": "1.5.0", + "key": "bazel_skylib@1.5.0", "repoName": "bazel_skylib", "executionPlatformsToRegister": [], "toolchainsToRegister": [ @@ -652,11 +687,11 @@ "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl", "ruleClassName": "http_archive", "attributes": { - "name": "bazel_skylib~1.4.1", + "name": "bazel_skylib~1.5.0", "urls": [ - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz" + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" ], - "integrity": "sha256-uKFSeQF3QYCvx5iusoxGNL3M8ZxNmOe90c550f6aqtc=", + "integrity": "sha256-zVWgYudjuTSZIfD124w5MyiNyLpPdt2UFqrGis7jy5Q=", "strip_prefix": "", "remote_patches": {}, "remote_patch_strip": 0 @@ -714,7 +749,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "rules_python": "rules_python@0.26.0", "rules_cc": "rules_cc@0.0.9", "rules_proto": "rules_proto@5.3.0-21.7", @@ -795,7 +830,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "boringssl": "boringssl@0.0.0-20211025-d4f1ab9", "com_github_cares_cares": "c-ares@1.15.0", "com_google_absl": "abseil-cpp@20230125.1", @@ -864,7 +899,7 @@ "extensionUsages": [], "deps": { "rules_license": "rules_license@0.0.7", - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "rules_python": "rules_python@0.26.0", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" @@ -893,7 +928,7 @@ "toolchainsToRegister": [], "extensionUsages": [], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "rules_java": "rules_java@7.1.0", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" @@ -1139,7 +1174,7 @@ "deps": { "platforms": "platforms@0.0.8", "rules_cc": "rules_cc@0.0.9", - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "rules_proto": "rules_proto@5.3.0-21.7", "rules_license": "rules_license@0.0.7", "bazel_tools": "bazel_tools@_", @@ -1160,6 +1195,38 @@ } } }, + "rules_graalvm@0.10.3": { + "name": "rules_graalvm", + "version": "0.10.3", + "key": "rules_graalvm@0.10.3", + "repoName": "rules_graalvm", + "executionPlatformsToRegister": [], + "toolchainsToRegister": [], + "extensionUsages": [], + "deps": { + "platforms": "platforms@0.0.8", + "bazel_features": "bazel_features@1.1.0", + "rules_java": "rules_java@7.1.0", + "bazel_skylib": "bazel_skylib@1.5.0", + "build_bazel_apple_support": "apple_support@1.8.1", + "bazel_tools": "bazel_tools@_", + "local_config_platform": "local_config_platform@_" + }, + "repoSpec": { + "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "name": "rules_graalvm~0.10.3", + "urls": [ + "https://github.com/sgammon/rules_graalvm/releases/download/v0.10.3/rules_graalvm-0.10.3.zip" + ], + "integrity": "sha256-H0uZeedQMwQt9OlAWgqUmqXdlCfnLIqv2Ikdj2dOdeQ=", + "strip_prefix": "rules_graalvm-0.10.3", + "remote_patches": {}, + "remote_patch_strip": 0 + } + } + }, "rules_proto@5.3.0-21.7": { "name": "rules_proto", "version": "5.3.0-21.7", @@ -1169,7 +1236,7 @@ "toolchainsToRegister": [], "extensionUsages": [], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "com_google_protobuf": "protobuf@21.7", "rules_cc": "rules_cc@0.0.9", "bazel_tools": "bazel_tools@_", @@ -1259,7 +1326,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "io_bazel_stardoc": "stardoc@0.5.3", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" @@ -1373,7 +1440,7 @@ ], "deps": { "bazel_features": "bazel_features@1.1.0", - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "platforms": "platforms@0.0.8", "rules_proto": "rules_proto@5.3.0-21.7", "com_google_protobuf": "protobuf@21.7", @@ -1406,7 +1473,7 @@ "toolchainsToRegister": [], "extensionUsages": [], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" }, @@ -1495,10 +1562,10 @@ "local_config_platform": "local_config_platform@_" } }, - "apple_support@1.5.0": { + "apple_support@1.8.1": { "name": "apple_support", - "version": "1.5.0", - "key": "apple_support@1.5.0", + "version": "1.8.1", + "key": "apple_support@1.8.1", "repoName": "build_bazel_apple_support", "executionPlatformsToRegister": [], "toolchainsToRegister": [ @@ -1508,10 +1575,10 @@ { "extensionBzlFile": "@build_bazel_apple_support//crosstool:setup.bzl", "extensionName": "apple_cc_configure_extension", - "usingModule": "apple_support@1.5.0", + "usingModule": "apple_support@1.8.1", "location": { - "file": "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel", - "line": 17, + "file": "https://bcr.bazel.build/modules/apple_support/1.8.1/MODULE.bazel", + "line": 14, "column": 35 }, "imports": { @@ -1525,7 +1592,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "platforms": "platforms@0.0.8", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" @@ -1534,13 +1601,15 @@ "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl", "ruleClassName": "http_archive", "attributes": { - "name": "apple_support~1.5.0", + "name": "apple_support~1.8.1", "urls": [ - "https://github.com/bazelbuild/apple_support/releases/download/1.5.0/apple_support.1.5.0.tar.gz" + "https://github.com/bazelbuild/apple_support/releases/download/1.8.1/apple_support.1.8.1.tar.gz" ], - "integrity": "sha256-miM41vja0yRPgj8txghKA+TQ+7J8qJLclw5okNW0gYQ=", + "integrity": "sha256-Rda7rVMWycMAh4v3//xP/eE9YgSEyRhHCMkX4guLY/8=", "strip_prefix": "", - "remote_patches": {}, + "remote_patches": { + "https://bcr.bazel.build/modules/apple_support/1.8.1/patches/module_dot_bazel_version.patch": "sha256-KiC39AC9hYWZhC2sZwZcY46HVerfh2p9pzF9WXqcxAI=" + }, "remote_patch_strip": 0 } } @@ -1556,7 +1625,7 @@ "deps": { "rules_cc": "rules_cc@0.0.9", "platforms": "platforms@0.0.8", - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "bazel_tools": "bazel_tools@_", "local_config_platform": "local_config_platform@_" }, @@ -1586,7 +1655,7 @@ "toolchainsToRegister": [], "extensionUsages": [], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "com_github_grpc_grpc": "grpc@1.48.1.bcr.1", "platforms": "platforms@0.0.8", "bazel_tools": "bazel_tools@_", @@ -1721,7 +1790,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "platforms": "platforms@0.0.8", "rules_proto": "rules_proto@5.3.0-21.7", "com_google_protobuf": "protobuf@21.7", @@ -1753,7 +1822,7 @@ "toolchainsToRegister": [], "extensionUsages": [], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "rules_proto": "rules_proto@5.3.0-21.7", "com_google_protobuf": "protobuf@21.7", "com_google_absl": "abseil-cpp@20230125.1", @@ -1908,7 +1977,7 @@ "platforms": "platforms@0.0.8", "com_google_protobuf": "protobuf@21.7", "zlib": "zlib@1.3", - "build_bazel_apple_support": "apple_support@1.5.0", + "build_bazel_apple_support": "apple_support@1.8.1", "local_config_platform": "local_config_platform@_" } }, @@ -2134,7 +2203,7 @@ } ], "deps": { - "bazel_skylib": "bazel_skylib@1.4.1", + "bazel_skylib": "bazel_skylib@1.5.0", "com_google_protobuf": "protobuf@21.7", "io_bazel_rules_go": "rules_go@0.39.1", "rules_proto": "rules_proto@5.3.0-21.7", @@ -2160,7 +2229,7 @@ "moduleExtensions": { "//:extensions.bzl%bazel_android_deps": { "general": { - "bzlTransitiveDigest": "ViQGEDr/pPfdaylbQ9kIMC61dAyi2clQRXxliJle+HM=", + "bzlTransitiveDigest": "UXZtr8nHbEem6fD0J7z9WRC+UZoj0oBDELpiGC8Ldqg=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { @@ -2184,12 +2253,12 @@ [ "", "apple_support", - "apple_support~1.5.0" + "apple_support~1.8.1" ], [ "", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "", @@ -2236,6 +2305,11 @@ "rules_go", "rules_go~0.39.1" ], + [ + "", + "rules_graalvm", + "rules_graalvm~0.10.3" + ], [ "", "rules_java", @@ -2291,7 +2365,7 @@ }, "//:extensions.bzl%bazel_build_deps": { "general": { - "bzlTransitiveDigest": "ViQGEDr/pPfdaylbQ9kIMC61dAyi2clQRXxliJle+HM=", + "bzlTransitiveDigest": "UXZtr8nHbEem6fD0J7z9WRC+UZoj0oBDELpiGC8Ldqg=", "accumulatedFileDigests": { "@@//src/test/tools/bzlmod:MODULE.bazel.lock": "2752af68cac5408918d138220bd3b8de1048117eabec83aa75c670d841cc1e34", "@@//:MODULE.bazel": "623f08c8c353f74d1ec41fc159d1e53d1f707b7dd5e77e97a6136bc6ed93fc85" @@ -2382,8 +2456,8 @@ "name": "_main~bazel_build_deps~bootstrap_repo_cache", "repos": [ "abseil-cpp~20230125.1", - "apple_support~1.5.0", - "bazel_skylib~1.4.1", + "apple_support~1.8.1", + "bazel_skylib~1.5.0", "blake3~1.3.3.bcr.1", "c-ares~1.15.0", "grpc~1.48.1.bcr.1", @@ -2394,6 +2468,7 @@ "rules_go~0.39.1", "rules_java~7.1.0", "rules_jvm_external~5.2", + "rules_graalvm~0.10.3", "rules_license~0.0.7", "rules_pkg~0.9.1", "rules_proto~5.3.0-21.7", @@ -2464,7 +2539,7 @@ "rules_cc-0.0.9.tar.gz", "rules_java-7.1.0.tar.gz", "5.3.0-21.7.tar.gz", - "bazel-skylib-1.4.1.tar.gz", + "bazel-skylib-1.5.0.tar.gz", "rules_license-0.0.7.tar.gz", "rules_python-0.24.0.tar.gz", "rules_pkg-0.9.1.tar.gz", @@ -2475,7 +2550,7 @@ "rules_cc-0.0.9.tar.gz": "2037875b9a4456dce4a79d112a8ae885bbc4aad968e6587dca6e64f3a0900cdf", "rules_java-7.1.0.tar.gz": "a37a4e5f63ab82716e5dd6aeef988ed8461c7a00b8e936272262899f587cd4e1", "5.3.0-21.7.tar.gz": "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd", - "bazel-skylib-1.4.1.tar.gz": "b8a1527901774180afc798aeb28c4634bdccf19c4d98e7bdd1ce79d1fe9aaad7", + "bazel-skylib-1.5.0.tar.gz": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", "rules_license-0.0.7.tar.gz": "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360", "rules_python-0.24.0.tar.gz": "0a8003b044294d7840ac7d9d73eef05d6ceb682d7516781a4ec62eeb34702578", "rules_pkg-0.9.1.tar.gz": "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8", @@ -2492,8 +2567,8 @@ "5.3.0-21.7.tar.gz": [ "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz" ], - "bazel-skylib-1.4.1.tar.gz": [ - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz" + "bazel-skylib-1.5.0.tar.gz": [ + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" ], "rules_license-0.0.7.tar.gz": [ "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz" @@ -2554,12 +2629,12 @@ [ "", "apple_support", - "apple_support~1.5.0" + "apple_support~1.8.1" ], [ "", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "", @@ -2606,6 +2681,11 @@ "rules_go", "rules_go~0.39.1" ], + [ + "", + "rules_graalvm", + "rules_graalvm~0.10.3" + ], [ "", "rules_java", @@ -2661,7 +2741,7 @@ }, "//:extensions.bzl%bazel_test_deps": { "general": { - "bzlTransitiveDigest": "ViQGEDr/pPfdaylbQ9kIMC61dAyi2clQRXxliJle+HM=", + "bzlTransitiveDigest": "UXZtr8nHbEem6fD0J7z9WRC+UZoj0oBDELpiGC8Ldqg=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { @@ -2699,12 +2779,12 @@ [ "", "apple_support", - "apple_support~1.5.0" + "apple_support~1.8.1" ], [ "", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "", @@ -2751,6 +2831,11 @@ "rules_go", "rules_go~0.39.1" ], + [ + "", + "rules_graalvm", + "rules_graalvm~0.10.3" + ], [ "", "rules_java", @@ -2871,30 +2956,30 @@ "recordedRepoMappingEntries": [] } }, - "@@apple_support~1.5.0//crosstool:setup.bzl%apple_cc_configure_extension": { + "@@apple_support~1.8.1//crosstool:setup.bzl%apple_cc_configure_extension": { "general": { - "bzlTransitiveDigest": "pMLFCYaRPkgXPQ8vtuNkMfiHfPmRBy6QJfnid4sWfv0=", + "bzlTransitiveDigest": "JFciz9+xRmE31CdyrcEUeZSKFxwiLTQ+PNMg6Bcc6s8=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { "local_config_apple_cc": { - "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl", + "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", "ruleClassName": "_apple_cc_autoconf", "attributes": { - "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc" + "name": "apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc" } }, "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~1.5.0//crosstool:setup.bzl", + "bzlFile": "@@apple_support~1.8.1//crosstool:setup.bzl", "ruleClassName": "_apple_cc_autoconf_toolchains", "attributes": { - "name": "apple_support~1.5.0~apple_cc_configure_extension~local_config_apple_cc_toolchains" + "name": "apple_support~1.8.1~apple_cc_configure_extension~local_config_apple_cc_toolchains" } } }, "recordedRepoMappingEntries": [ [ - "apple_support~1.5.0", + "apple_support~1.8.1", "bazel_tools", "bazel_tools" ] @@ -4170,6 +4255,38 @@ ] } }, + "@@rules_graalvm~0.10.3//:extensions.bzl%graalvm": { + "general": { + "bzlTransitiveDigest": "RNOMan/EiPbz5i2nh2YxhbeTAOvTd9ReDe7arDK0PeY=", + "accumulatedFileDigests": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "graalvm_toolchains": { + "bzlFile": "@@rules_graalvm~0.10.3//internal:graalvm_bindist.bzl", + "ruleClassName": "_toolchain_config", + "attributes": { + "name": "rules_graalvm~0.10.3~graalvm~graalvm_toolchains", + "build_file": "\nconfig_setting(\n name = \"prefix_version_setting\",\n values = {\"java_runtime_version\": \"graalvm_20\"},\n visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n name = \"version_setting\",\n values = {\"java_runtime_version\": \"20\"},\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"version_or_prefix_version_setting\",\n actual = select({\n \":version_setting\": \":version_setting\",\n \"//conditions:default\": \":prefix_version_setting\",\n }),\n visibility = [\"//visibility:private\"],\n)\nalias(\n name = \"toolchain_gvm\",\n actual = \"gvm\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"gvm\",\n exec_compatible_with = [\n \n ],\n target_compatible_with = [\n \n ],\n toolchain = \"@graalvm//:gvm\",\n toolchain_type = \"@rules_graalvm//graalvm/toolchain\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"toolchain\",\n target_compatible_with = [],\n target_settings = [\":version_or_prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\n" + } + }, + "graalvm": { + "bzlFile": "@@rules_graalvm~0.10.3//internal:graalvm_bindist.bzl", + "ruleClassName": "_graalvm_bindist_repository", + "attributes": { + "name": "rules_graalvm~0.10.3~graalvm~graalvm", + "version": "20.0.2", + "java_version": "20", + "distribution": "ce", + "components": [], + "setup_actions": [], + "enable_toolchain": true, + "toolchain_config": "graalvm_toolchains" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, "@@rules_java~7.1.0//java:extensions.bzl%toolchains": { "general": { "bzlTransitiveDigest": "D02GmifxnV/IhYgspsJMDZ/aE8HxAjXgek5gi6FSto4=", @@ -8528,7 +8645,7 @@ }, "@@rules_python~0.26.0//python/extensions:pip.bzl%pip": { "os:osx,arch:aarch64": { - "bzlTransitiveDigest": "udSms4Q/6hNLCjKfjNOdbSYN66ZRD2hHVyobSu652iM=", + "bzlTransitiveDigest": "2Q6H3h9+kogr9SW/SFMKOX5+pjW4YEdf9qiRMX0IQBw=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -8588,7 +8705,7 @@ [ "rules_python~0.26.0", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "rules_python~0.26.0", @@ -8688,7 +8805,7 @@ ] }, "os:osx,arch:x86_64": { - "bzlTransitiveDigest": "oA6Qwvo12TbEyoWBTeUPtq+Io3P4m0b7Qx6kGN67/9w=", + "bzlTransitiveDigest": "a5tzIU8ui/JG1+hfqKNsm5DwhtSJ92Ik6fDbVsH+DLo=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -9008,7 +9125,7 @@ ] }, "os:linux,arch:amd64": { - "bzlTransitiveDigest": "fw05y6IIQALgJ+ozxZMUz7LiAM8K7GaxCr/ddS6XHSw=", + "bzlTransitiveDigest": "pVKyjaQclFqcXU75ZG356yob20MIl6uJwB2dKrAmw0U=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -9467,7 +9584,7 @@ }, "@@rules_python~0.26.0//python/extensions/private:internal_deps.bzl%internal_deps": { "general": { - "bzlTransitiveDigest": "dKlgHcytYIuArRvGrVsU3/vM58ltOlejmfkkAPUCPnY=", + "bzlTransitiveDigest": "XP8MssHdcgRUzPajlA0Te3SmGmjfmGdDZ8HceIw8FTQ=", "accumulatedFileDigests": {}, "envVariables": {}, "generatedRepoSpecs": { @@ -9648,7 +9765,7 @@ [ "rules_python~0.26.0", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "rules_python~0.26.0", diff --git a/repositories.bzl b/repositories.bzl index 03e47487537f9b..d61a43a3f9bb13 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -37,6 +37,7 @@ DIST_ARCHIVE_REPOS = [get_canonical_repo_name(repo) for repo in [ "rules_go", "rules_java", "rules_jvm_external", + "rules_graalvm", "rules_license", "rules_pkg", "rules_proto", diff --git a/src/BUILD b/src/BUILD index b12e41d753f307..725ce15713ecee 100644 --- a/src/BUILD +++ b/src/BUILD @@ -487,6 +487,13 @@ release_archive( ], ) +release_archive( + name = "turbine_direct_graal_zip", + srcs = ["//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_graal"], + package_dir = "java_tools", + visibility = ["//visibility:private"], +) + # Following target builds java_tools_prebuilt.zip part of java_tools release_archive( name = "java_tools_prebuilt_zip", @@ -495,6 +502,7 @@ release_archive( }, visibility = ["//src/test/shell/bazel:__pkg__"], deps = [ + ":turbine_direct_graal_zip", "//src/tools/singlejar:singlejar_deploy_zip", "//third_party/ijar:ijar_deploy_zip", ], diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/BUILD index d09d4caf2d4022..6bb1d85cc2c4a4 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/BUILD +++ b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/BUILD @@ -1,3 +1,4 @@ +load("@rules_graalvm//graalvm:defs.bzl", "native_image") load("@rules_java//java:defs.bzl", "java_binary") package( @@ -5,9 +6,12 @@ package( default_visibility = ["//src/java_tools/buildjar:buildjar_package_group"], ) -java_binary( - name = "turbine_direct_binary", - main_class = "com.google.turbine.main.Main", +licenses(["notice"]) + +_TURBINE_MAIN_CLASS = "com.google.turbine.main.Main" + +java_library( + name = "turbine_deps", runtime_deps = [ "//src/main/protobuf:deps_java_proto", "//third_party:guava", @@ -16,6 +20,38 @@ java_binary( ], ) +java_binary( + name = "turbine_direct_binary", + main_class = _TURBINE_MAIN_CLASS, + runtime_deps = [":turbine_deps"], +) + +native_image( + name = "turbine_direct_graal", + executable_name = select({ + "@bazel_tools//src/conditions:windows": "%target%.exe", + "//conditions:default": "%target%", + }), + extra_args = [ + # Workaround for https://github.com/oracle/graal/issues/4757. + "-H:-UseContainerSupport", + # Do not fall back to bundling a full JVM when native image compilation fails. + "--no-fallback", + # More verbose errors in case of compilation failures. + "-H:+ReportExceptionStackTraces", + ] + select({ + "@platforms//os:linux": [ + # Statically link zlib but not glibc. + "-H:+StaticExecutableWithDynamicLibC", + ], + "//conditions:default": [], + }), + main_class = _TURBINE_MAIN_CLASS, + # This provides libz.a on Linux instead of the host system. + static_zlib = "//third_party/zlib", + deps = [":turbine_deps"], +) + filegroup( name = "srcs", srcs = glob( @@ -24,5 +60,4 @@ filegroup( ) + [ "BUILD", ], - visibility = ["//src:__subpackages__"], ) diff --git a/tools/jdk/BUILD.java_tools_prebuilt b/tools/jdk/BUILD.java_tools_prebuilt index fd7375eeea0447..fcc97ffcba4344 100644 --- a/tools/jdk/BUILD.java_tools_prebuilt +++ b/tools/jdk/BUILD.java_tools_prebuilt @@ -22,3 +22,11 @@ filegroup( "//conditions:default": ["java_tools/ijar/ijar"], }), ) + +filegroup( + name = "turbine_direct_graal", + srcs = select({ + ":windows": ["java_tools/turbine_direct_graal.exe"], + "//conditions:default": ["java_tools/turbine_direct_graal"], + }), +) diff --git a/workspace_deps.bzl b/workspace_deps.bzl index c7bdae58468a34..6161bb0d5132f9 100644 --- a/workspace_deps.bzl +++ b/workspace_deps.bzl @@ -37,9 +37,9 @@ WORKSPACE_REPOS = { "urls": ["https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz"], }, "bazel_skylib": { - "archive": "bazel-skylib-1.4.1.tar.gz", - "sha256": "b8a1527901774180afc798aeb28c4634bdccf19c4d98e7bdd1ce79d1fe9aaad7", - "urls": ["https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz"], + "archive": "bazel-skylib-1.5.0.tar.gz", + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": ["https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz"], }, "rules_license": { "archive": "rules_license-0.0.7.tar.gz", From 35d3a5d6b60e7f9b47d601e132038df4bcee954d Mon Sep 17 00:00:00 2001 From: keertk Date: Tue, 20 Feb 2024 15:27:15 +0000 Subject: [PATCH 2/5] More lockfile updates --- MODULE.bazel.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 90d76be753d934..4fe02f9a9373fb 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -9125,7 +9125,7 @@ ] }, "os:linux,arch:amd64": { - "bzlTransitiveDigest": "pVKyjaQclFqcXU75ZG356yob20MIl6uJwB2dKrAmw0U=", + "bzlTransitiveDigest": "aOMK5S3yh0GqKqizev0aeyRIiUVXUnJ9qs4MjoGIsmU=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -9185,7 +9185,7 @@ [ "rules_python~0.26.0", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "rules_python~0.26.0", From acc8b8ea77e4825f8946fc1cbb1bcb778c41a341 Mon Sep 17 00:00:00 2001 From: Keerthana Kumar Date: Tue, 20 Feb 2024 08:17:52 -0800 Subject: [PATCH 3/5] More lockfile updates --- MODULE.bazel.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 4fe02f9a9373fb..fb8902947812fe 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -9776,4 +9776,4 @@ } } } -} +} \ No newline at end of file From 4ddacc864042a7f471a9a3f227524e19ebb5ff51 Mon Sep 17 00:00:00 2001 From: Keerthana Kumar Date: Tue, 20 Feb 2024 08:34:11 -0800 Subject: [PATCH 4/5] More updates --- MODULE.bazel.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index fb8902947812fe..cbf5b9c10b8495 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -8965,7 +8965,7 @@ ] }, "os:windows,arch:amd64": { - "bzlTransitiveDigest": "4Arzp9XMj31JAPT/Er2Uhj0kBvQxHSe+rahPGt4BADg=", + "bzlTransitiveDigest": "QSSju3r1BqdiBI2rQ5F0t+LW+/VktSbD2ScOupIGWT4=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -9025,7 +9025,7 @@ [ "rules_python~0.26.0", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "rules_python~0.26.0", From f9f4236f5a04a3a70f3261e375523f9318d359cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?X=C3=B9d=C5=8Dng=20Y=C3=A1ng?= Date: Tue, 20 Feb 2024 17:42:18 +0100 Subject: [PATCH 5/5] Update lockfile for intel mac --- MODULE.bazel.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index cbf5b9c10b8495..2f1cb041cd0038 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,6 +1,6 @@ { "lockFileVersion": 3, - "moduleFileHash": "623f08c8c353f74d1ec41fc159d1e53d1f707b7dd5e77e97a6136bc6ed93fc85", + "moduleFileHash": "272b36d693f86e4c098d47e8753f8a73ec21d3d6fa3e4ee1a0cd2a74c1906342", "flags": { "cmdRegistries": [ "https://bcr.bazel.build/" @@ -2368,7 +2368,7 @@ "bzlTransitiveDigest": "UXZtr8nHbEem6fD0J7z9WRC+UZoj0oBDELpiGC8Ldqg=", "accumulatedFileDigests": { "@@//src/test/tools/bzlmod:MODULE.bazel.lock": "2752af68cac5408918d138220bd3b8de1048117eabec83aa75c670d841cc1e34", - "@@//:MODULE.bazel": "623f08c8c353f74d1ec41fc159d1e53d1f707b7dd5e77e97a6136bc6ed93fc85" + "@@//:MODULE.bazel": "272b36d693f86e4c098d47e8753f8a73ec21d3d6fa3e4ee1a0cd2a74c1906342" }, "envVariables": {}, "generatedRepoSpecs": { @@ -8805,7 +8805,7 @@ ] }, "os:osx,arch:x86_64": { - "bzlTransitiveDigest": "a5tzIU8ui/JG1+hfqKNsm5DwhtSJ92Ik6fDbVsH+DLo=", + "bzlTransitiveDigest": "E9m/UFADncm3CKBrsnAfkVQxBz0IsqZ8jnkRQr/RO40=", "accumulatedFileDigests": { "@@//:requirements.txt": "ff12967a755bb8e9b4c92524f6471a99e14c30474a3d428547c55745ec8f23a0" }, @@ -8865,7 +8865,7 @@ [ "rules_python~0.26.0", "bazel_skylib", - "bazel_skylib~1.4.1" + "bazel_skylib~1.5.0" ], [ "rules_python~0.26.0", @@ -9776,4 +9776,4 @@ } } } -} \ No newline at end of file +}