blob: 1830c0e07990a82cbe1fe276b5e22bc6cf840aab [file] [log] [blame]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01001# Packaging
2
Googlerde2a1032024-09-27 04:19:58 -07003load("@bazel_pip_dev_deps//:requirements.bzl", "requirement")
Googler239b89a2024-01-03 08:48:59 -08004load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
Ivo List78729c02023-03-03 08:27:25 -08005load("@rules_python//python:defs.bzl", "py_binary", "py_library")
Googler707d0652024-03-11 04:15:38 -07006load("//src:build_defs.bzl", "transition_java_language_8_archive")
Yun Peng136dae12023-09-08 12:39:10 -07007load("//src:release_archive.bzl", "release_archive")
Philipp Wollermann4c558982017-07-27 18:01:12 +02008load(":embedded_tools.bzl", "srcsfile")
Laszlo Csomord784b5f2018-06-20 02:06:58 -07009load(":rule_size_test.bzl", "rule_size_test")
Philipp Wollermann4c558982017-07-27 18:01:12 +020010
Tony Aiuto881fc802022-05-25 06:30:17 -070011package(default_applicable_licenses = ["@io_bazel//:license"])
12
Googler16689a42024-10-03 05:26:52 -070013exports_files([
14 "jdeps_modules.golden",
15 "MODULE.tools",
16])
Tobias Werth218e8f62018-12-13 04:44:35 -080017
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080018md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@"
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010019
Lukacs Berkieb851fe2015-10-19 10:52:31 +000020[genrule(
21 name = "install_base_key-file" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010022 srcs = [
pcloudy9e2b3ca2021-04-21 04:05:29 -070023 # Ensure we haven't forgotten any package-zip items,
24 # otherwise bazel won't correctly reextract modified files.
kkress73dcff32020-04-06 11:14:48 -070025 "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer_deploy.jar",
adonovan450c7ad2020-09-14 13:00:21 -070026 "//src/main/java/net/starlark/java/eval:cpu_profiler",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010027 "//src/main/cpp:client",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010028 "//src/main/tools:build-runfiles",
29 "//src/main/tools:process-wrapper",
Philipp Wollermann278814b2016-07-15 14:41:54 +000030 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +000031 "//tools/osx:xcode-locator",
Yun Peng30b21302023-06-19 03:28:53 -070032 "//:platforms-srcs",
pcloudy9e2b3ca2021-04-21 04:05:29 -070033 ] + select({
34 "//src/conditions:windows": [],
35 "//conditions:default": [
36 "//src/main/tools:daemonize",
37 ],
38 }) + embedded_tools_target,
Lukacs Berkieb851fe2015-10-19 10:52:31 +000039 outs = ["install_base_key" + suffix],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010040 cmd = select({
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080041 "//src/conditions:darwin": md5_cmd % ("/sbin/md5", "/sbin/md5", "head -c 32"),
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080042 "//src/conditions:freebsd": md5_cmd % ("/sbin/md5", "/sbin/md5", "head -c 32"),
43 # We avoid using the `head` tool's `-c` option, since it does not exist
44 # on OpenBSD.
45 "//src/conditions:openbsd": md5_cmd % ("/bin/md5", "/bin/md5", "dd bs=32 count=1"),
46 "//conditions:default": md5_cmd % ("md5sum", "md5sum", "head -c 32"),
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010047 }),
Philipp Wollermann4c558982017-07-27 18:01:12 +020048) for suffix, embedded_tools_target in {
Tobias Werth218e8f62018-12-13 04:44:35 -080049 "_jdk_allmodules": [":embedded_tools_jdk_allmodules"],
50 "_jdk_minimal": [":embedded_tools_jdk_minimal"],
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -070051 "_nojdk": [":embedded_tools_nojdk"],
Lukacs Berkieb851fe2015-10-19 10:52:31 +000052 "_notools": [],
53}.items()]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010054
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000055# Try to grab the java version from the java_toolchain.
Damien Martin-Guillerez4bf2c1a2015-10-02 09:19:18 +000056# Unfortunately, we don't have access to the javac options
57# so we cannot get it from the command-line options.
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000058genquery(
59 name = "java_toolchain_content",
dbabkin35df7152018-06-26 05:47:54 -070060 expression = "kind(java_toolchain, deps(@bazel_tools//tools/jdk:current_java_toolchain))",
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000061 opts = ["--output=xml"],
dbabkin35df7152018-06-26 05:47:54 -070062 scope = ["@bazel_tools//tools/jdk:current_java_toolchain"],
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000063)
64
László Csomor5f99fda2017-08-11 09:28:12 +020065py_library(
66 name = "create_embedded_tools_lib",
67 srcs = ["create_embedded_tools_lib.py"],
László Csomor0783b9e2017-08-11 10:28:36 +020068 visibility = ["//:__pkg__"],
László Csomor5f99fda2017-08-11 09:28:12 +020069)
70
Philipp Wollermann4c558982017-07-27 18:01:12 +020071py_binary(
72 name = "create_embedded_tools",
73 srcs = ["create_embedded_tools.py"],
László Csomor5f99fda2017-08-11 09:28:12 +020074 deps = [":create_embedded_tools_lib"],
Philipp Wollermann4c558982017-07-27 18:01:12 +020075)
76
brandjonde1babe2020-11-17 14:19:23 -080077# Script for turning builtins_bzl sources into a zip file for unioning into the
78# package zip / install base.
79sh_binary(
80 name = "zip_builtins",
81 srcs = ["zip_builtins.sh"],
82 visibility = ["//src/main/starlark/builtins_bzl:__pkg__"],
83)
84
iirinaf4604ba2019-01-16 02:38:07 -080085# The tools Bazel uses to compile Java.
86# TODO(#6316): Gradually remove the targets here.
87JAVA_TOOLS = [
iirinaf4604ba2019-01-16 02:38:07 -080088 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
iirinaf4604ba2019-01-16 02:38:07 -080089 "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:embedded_tools",
iirinaebdbdcd2019-04-09 04:43:08 -070090]
iirinaf4604ba2019-01-16 02:38:07 -080091
Philipp Wollermann4c558982017-07-27 18:01:12 +020092# TODO(philwo): Clean this up, once a Bazel that can run py_binary and sh_binary
gregcead752cc2020-04-10 10:32:59 -070093# in Starlark rules on Windows has been released.
Philipp Wollermann4c558982017-07-27 18:01:12 +020094[filegroup(
95 name = "embedded_tools" + suffix + "_srcs",
iirinaf4604ba2019-01-16 02:38:07 -080096 srcs = JAVA_TOOLS + [
Tobias Werth218e8f62018-12-13 04:44:35 -080097 "BUILD.tools",
wyv156d9c02022-05-11 04:45:59 -070098 "MODULE.tools",
Googlerb9bdcf82023-04-03 09:14:57 -070099 "//src/conditions:embedded_tools",
100 "//src/main/cpp/util:embedded_tools",
101 "//src/main/native:embedded_tools",
102 "//src/main/protobuf:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700103 "//src/tools/launcher:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800104 "//third_party:gpl-srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700105 "//third_party/def_parser:srcs",
Tobias Werth9ef27942020-05-18 08:14:03 -0700106 "//third_party/grpc:embedded_tools_srcs",
107 "//third_party/grpc/bazel:embedded_tools_srcs",
iirina2d446752019-03-15 09:00:35 -0700108 "//third_party/ijar:embedded_zipper_sources",
109 "//third_party/ijar:zipper",
Tobias Werth218e8f62018-12-13 04:44:35 -0800110 "//third_party/java/j2objc:embedded_tools_srcs",
laszlocsomord93a1462019-11-04 09:14:39 -0800111 "//third_party/py/abseil:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800112 "//third_party/zlib:embedded_tools",
Googlerb9bdcf82023-04-03 09:14:57 -0700113 "//tools:embedded_tools_srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800114 ] + select({
115 "//src/conditions:darwin": [
Keith Smiley67586a22021-06-08 10:43:24 -0700116 "//tools/osx:xcode_locator.m",
Tobias Werth218e8f62018-12-13 04:44:35 -0800117 ],
Keith Smiley67586a22021-06-08 10:43:24 -0700118 "//conditions:default": [],
Tobias Werth218e8f62018-12-13 04:44:35 -0800119 }) + select({
120 "//src/conditions:windows": [
Googlerb9bdcf82023-04-03 09:14:57 -0700121 "//src/tools/launcher",
Googler98a33ff2022-12-05 11:07:46 -0800122 "//src/tools/launcher:launcher_maker",
Googlerb9bdcf82023-04-03 09:14:57 -0700123 "//third_party/def_parser",
Tobias Werth218e8f62018-12-13 04:44:35 -0800124 ],
125 "//conditions:default": [],
Tobias Werth218e8f62018-12-13 04:44:35 -0800126 }) +
127 jdk,
cushon72141a12018-06-11 08:30:15 -0700128 visibility = [
129 "//src/test:__subpackages__", # For integration tests
130 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800131) for suffix, jdk in {
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800132 "_jdk_allmodules": [":embedded_jdk_allmodules"],
Googlerb43418d2023-08-23 05:56:24 -0700133 "_jdk_minimal": select({
134 # We cannot minimize the JDK during cross compiling for Windows arm64
135 "//src/conditions:windows_arm64": [":embedded_jdk_vanilla"],
136 "//conditions:default": [":embedded_jdk_minimal"],
137 }),
Tobias Werth218e8f62018-12-13 04:44:35 -0800138 "_nojdk": [],
139}.items()]
cushon72141a12018-06-11 08:30:15 -0700140
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700141rule_size_test(
142 name = "embedded_tools_size_test",
Tobias Werth218e8f62018-12-13 04:44:35 -0800143 src = ":embedded_tools_jdk_allmodules_srcs",
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700144 # WARNING: Only adjust the number in `expect` if you are intentionally
145 # adding or removing embedded tools. Know that the more embedded tools there
146 # are in Bazel, the bigger the binary becomes and the slower Bazel starts.
Googler7ec62e82024-10-08 05:29:28 -0700147 expect = 389,
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700148 margin = 5, # percentage
149)
150
cushon72141a12018-06-11 08:30:15 -0700151filegroup(
Tobias Werth218e8f62018-12-13 04:44:35 -0800152 name = "embedded_jdk_vanilla",
153 srcs = select({
Thi Doanb39a51c2020-12-07 11:27:56 -0800154 "//src/conditions:darwin_x86_64": [
155 "@openjdk_macos_x86_64_vanilla//file",
Tobias Werth218e8f62018-12-13 04:44:35 -0800156 ],
Yun Peng8c7e11a2021-01-27 03:23:12 -0800157 "//src/conditions:darwin_arm64": [
158 "@openjdk_macos_aarch64_vanilla//file",
159 ],
Googlerb43418d2023-08-23 05:56:24 -0700160 "//src/conditions:windows_x86_64": [
Tobias Werth218e8f62018-12-13 04:44:35 -0800161 "@openjdk_win_vanilla//file",
162 ],
Googlerb43418d2023-08-23 05:56:24 -0700163 "//src/conditions:windows_arm64": [
164 "@openjdk_win_arm64_vanilla//file",
165 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800166 "//src/conditions:linux_aarch64": [
167 "@openjdk_linux_aarch64_vanilla//file",
168 ],
Jason Furmanek04e073e2020-05-28 05:48:09 -0700169 "//src/conditions:linux_ppc64le": [
170 "@openjdk_linux_ppc64le_vanilla//file",
171 ],
Ruixin Baoe14a6f22020-08-21 06:17:24 -0700172 "//src/conditions:linux_s390x": [
173 "@openjdk_linux_s390x_vanilla//file",
174 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800175 "//conditions:default": [
176 "@openjdk_linux_vanilla//file",
177 ],
178 }),
179 visibility = ["//src/test/shell/bazel:__pkg__"],
180)
181
182sh_binary(
183 name = "minimize_jdk",
184 srcs = ["minimize_jdk.sh"],
185)
186
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800187genrule(
Tobias Werth218e8f62018-12-13 04:44:35 -0800188 name = "embedded_jdk_minimal",
189 srcs = [
190 ":embedded_jdk_vanilla",
191 ":minimize_jdk.sh",
192 ":jdeps_modules.golden",
193 ],
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800194 outs = ["minimal_jdk.zip"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800195 cmd = "$(location :minimize_jdk.sh) $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
196 visibility = ["//src/test/shell/bazel:__pkg__"],
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800197)
Tobias Werth218e8f62018-12-13 04:44:35 -0800198
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800199genrule(
200 name = "embedded_jdk_allmodules",
Tobias Wertha87451a2019-01-29 07:03:58 -0800201 srcs = [
202 ":embedded_jdk_vanilla",
203 ":minimize_jdk.sh",
204 ":jdeps_modules.golden",
205 ],
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800206 outs = ["allmodules_jdk.zip"],
Tobias Wertha87451a2019-01-29 07:03:58 -0800207 cmd = "$(location :minimize_jdk.sh) --allmodules $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
208 visibility = ["//src/test/shell/bazel:__pkg__"],
Benjamin Peterson66c22f42022-11-18 07:02:30 -0800209)
Tobias Wertha87451a2019-01-29 07:03:58 -0800210
Philipp Wollermann4c558982017-07-27 18:01:12 +0200211[srcsfile(
212 name = "embedded_tools" + suffix + "_params",
213 srcs = [":embedded_tools" + suffix + "_srcs"],
214 out = "embedded_tools" + suffix + ".params",
215) for suffix in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800216 "_jdk_allmodules",
217 "_jdk_minimal",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700218 "_nojdk",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200219]]
220
Tobias Werth218e8f62018-12-13 04:44:35 -0800221[genrule(
222 name = "embedded_tools" + suffix,
Philipp Wollermann4c558982017-07-27 18:01:12 +0200223 srcs = [
Tobias Werth218e8f62018-12-13 04:44:35 -0800224 ":embedded_tools" + suffix + "_params",
225 ":embedded_tools" + suffix + "_srcs",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200226 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800227 outs = ["embedded_tools" + suffix + ".zip"],
228 cmd = "$(location :create_embedded_tools) \"$@\" $(location :embedded_tools" + suffix + "_params)",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200229 tools = [":create_embedded_tools"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800230) for suffix in [
231 "_jdk_allmodules",
232 "_jdk_minimal",
233 "_nojdk",
234]]
Philipp Wollermann4c558982017-07-27 18:01:12 +0200235
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000236[genrule(
237 name = "package-zip" + suffix,
brandjon708e1ce2020-12-15 14:51:06 -0800238 # This script assumes the following arg order:
239 # 1) embedded tools zip (if it exists)
240 # 2) the deploy jar
241 # 3) the install base key
242 # 4) the platforms archive
243 # 5) everything else to be bundled
pcloudy9e2b3ca2021-04-21 04:05:29 -0700244 # Ensure we haven't forgotten to add all package-zip items as dependencies
245 # of :install_base_key-file, otherwise bazel won't correctly reextract
246 # modified files.
Philipp Wollermann95048272017-03-17 15:11:58 +0000247 srcs = ([":embedded_tools" + suffix + ".zip"] if embed else []) + [
kkress73dcff32020-04-06 11:14:48 -0700248 "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer_deploy.jar",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000249 "install_base_key" + suffix,
Yun Peng30b21302023-06-19 03:28:53 -0700250 "//:platforms-srcs",
brandjonde1babe2020-11-17 14:19:23 -0800251 # Non-ordered items follow:
adonovan450c7ad2020-09-14 13:00:21 -0700252 "//src/main/java/net/starlark/java/eval:cpu_profiler",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100253 "//src/main/tools:build-runfiles",
254 "//src/main/tools:process-wrapper",
Philipp Wollermann278814b2016-07-15 14:41:54 +0000255 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000256 "//tools/osx:xcode-locator",
jmmv18a0e232019-02-21 07:34:02 -0800257 ] + select({
258 "//src/conditions:windows": [],
259 "//conditions:default": [
260 "//src/main/tools:daemonize",
261 ],
262 }),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000263 outs = ["package" + suffix + ".zip"],
aldersondrived6145a02020-01-21 08:11:48 -0800264 cmd = "$(location :package_bazel_on_host_platform) $@ " + ("" if embed else "''") + " $(SRCS)",
265 tools = [":package_bazel_on_host_platform"],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000266) for suffix, embed in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800267 ("_jdk_allmodules", True),
268 ("_jdk_minimal", True),
Damien Martin-Guillerez04d46ab2016-04-13 19:27:56 +0000269 ("_notools", False),
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700270 ("_nojdk", True),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000271]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100272
hlopkoaaf64572019-06-14 02:33:56 -0700273genrule(
aldersondrived6145a02020-01-21 08:11:48 -0800274 name = "package_bazel_on_host_platform",
275 srcs = ["package-bazel.sh"],
276 outs = ["package-bazel-on-host-platform.sh"],
277 cmd = select({
278 "//src/conditions:openbsd": "cat $(SRCS) | sed -e 's@#!/bin/bash@#!/usr/local/bin/bash@' > $@",
279 "//conditions:default": "cp $(SRCS) $@",
280 }),
281)
282
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000283[genrule(
284 name = "bazel-bin" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100285 srcs = [
286 "//src/main/cpp:client",
Jakob Buchgraber92931bd2019-07-18 07:38:59 -0700287 "package-zip" + jdk,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100288 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000289 outs = ["bazel" + suffix],
Yun Peng6ffb8e42016-04-14 16:55:02 +0000290 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
291 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
292 # need to remove bazel.exe first, so that cat to bazel won't fail.
Googler48648502021-01-20 06:53:05 -0800293 cmd = "rm -f $@; cat $(location //src/main/cpp:client) $(location :package-zip" + jdk + ") > $@ && zip -qA $@ && chmod a+x $@",
Tobias Werth218e8f62018-12-13 04:44:35 -0800294 executable = 1,
295 output_to_bindir = 1,
296 visibility = [
Xdng Yngfb84c012024-02-13 13:39:23 -0800297 "//:__pkg__", # For distribution archive lockfile generation
Tobias Werth218e8f62018-12-13 04:44:35 -0800298 "//scripts:__pkg__", # For bash completion generation
299 "//scripts/packages:__pkg__", # For installer generation
300 "//src/java:__subpackages__", # For command line reference generation
301 "//src/test:__subpackages__", # For integration tests
Tony Aiuto881fc802022-05-25 06:30:17 -0700302 "//tools/compliance:__pkg__", # For license gathering
Tobias Werth218e8f62018-12-13 04:44:35 -0800303 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800304) for suffix, jdk in [
305 ("-dev", "_jdk_allmodules"),
306 ("", "_jdk_minimal"),
Jakob Buchgraber92931bd2019-07-18 07:38:59 -0700307 ("_jdk_allmodules", "_jdk_allmodules"),
308 ("_jdk_minimal", "_jdk_minimal"),
Jakob Buchgraber92931bd2019-07-18 07:38:59 -0700309 ("_notools", "_notools"),
310 ("_nojdk", "_nojdk"),
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800311]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800312
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000313# Build an executable named `bazel.exe`.
314# Works on all platforms but only makes sense on Windows.
315# Workaround for non-configurability of genrule's `outs` attribute.
316[genrule(
317 name = "bazel-bin" + suffix + ".exe",
318 srcs = [":bazel-bin" + suffix],
319 outs = ["bazel" + suffix + ".exe"],
320 cmd = "cp $(location :bazel-bin" + suffix + ") $@",
321 executable = 1,
322 output_to_bindir = 1,
323 visibility = [
324 "//scripts:__pkg__", # For bash completion generation
325 "//scripts/packages:__pkg__", # For installer generation
326 "//src/test:__subpackages__", # For integration tests
327 ],
328) for suffix in [
329 "",
Tobias Werthe7438ae2019-07-02 08:17:44 -0700330 "-dev",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000331 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700332 "_nojdk",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000333]]
334
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000335filegroup(
336 name = "srcs",
337 srcs = glob(["**"]) + [
tomlu1a483d42017-11-30 15:08:40 -0800338 "//src/conditions:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000339 "//src/java_tools/buildjar:srcs",
Benjamin Peterson425f9422018-02-09 14:05:17 -0800340 "//src/java_tools/import_deps_checker:srcs",
ulfjack26ad43d2017-08-28 12:30:44 +0200341 "//src/java_tools/junitrunner:srcs",
dorranh210ae642021-01-14 02:14:31 -0800342 "//src/java_tools/junitrunner/javatests/com/google/testing/coverage:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000343 "//src/java_tools/singlejar:srcs",
344 "//src/main/cpp:srcs",
345 "//src/main/java/com/google/devtools/build/docgen:srcs",
346 "//src/main/java/com/google/devtools/build/lib:srcs",
philwo45743d02019-06-03 06:13:30 -0700347 "//src/main/java/com/google/devtools/build/lib/includescanning:srcs",
steinmanacf55d82019-05-21 09:49:58 -0700348 "//src/main/java/com/google/devtools/build/lib/network:srcs",
philwo62dd1742019-06-04 05:27:37 -0700349 "//src/main/java/com/google/devtools/build/lib/outputfilter:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000350 "//src/main/java/com/google/devtools/build/skyframe:srcs",
351 "//src/main/java/com/google/devtools/common/options:srcs",
adonovancb5dc082020-05-18 12:02:00 -0700352 "//src/main/java/net/starlark/java/cmd:srcs",
Googler5a4a3402023-04-03 09:05:06 -0700353 "//src/main/java/net/starlark/java/lib/json:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700354 "//src/main/java/net/starlark/java/spelling:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000355 "//src/main/native:srcs",
356 "//src/main/protobuf:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700357 "//src/main/res:srcs",
brandjonde1babe2020-11-17 14:19:23 -0800358 "//src/main/starlark/builtins_bzl:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000359 "//src/main/tools:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000360 "//src/test/cpp:srcs",
Googler3e830922017-03-17 17:39:00 +0000361 "//src/test/gen:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000362 "//src/test/java/com/google/devtools/build/docgen:srcs",
363 "//src/test/java/com/google/devtools/build/lib:srcs",
ruperts9f959c52018-01-04 11:54:02 -0800364 "//src/test/java/com/google/devtools/build/lib/shell:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000365 "//src/test/java/com/google/devtools/build/skyframe:srcs",
366 "//src/test/java/com/google/devtools/common/options:srcs",
adonovan53e22d92020-07-28 08:54:43 -0700367 "//src/test/java/net/starlark/java/eval:srcs",
adonovancb5dc082020-05-18 12:02:00 -0700368 "//src/test/java/net/starlark/java/spelling:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700369 "//src/test/native/windows:srcs",
Laszlo Csomore78ad832017-06-09 10:45:27 -0400370 "//src/test/py/bazel:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700371 "//src/test/res:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000372 "//src/test/shell:srcs",
ishikhman32268802019-04-25 03:47:24 -0700373 "//src/test/testdata/test_tls_certificate",
jmmvb07b7992020-05-18 09:24:11 -0700374 "//src/test/tools:srcs",
Yun Peng50c83752023-10-10 18:30:26 -0700375 "//src/test/tools/bzlmod:srcs",
Yun Pengb27ca732023-09-06 02:57:04 -0700376 "//src/tools/bzlmod:srcs",
Googler46d55022024-09-26 14:09:24 -0700377 "//src/tools/diskcache:srcs",
olaolaa5e36ee2018-06-15 08:16:44 -0700378 "//src/tools/execlog:srcs",
Googler5a4a3402023-04-03 09:05:06 -0700379 "//src/tools/launcher:srcs",
Gowroji Sunil417c6b82024-06-04 09:23:45 -0700380 "//src/tools/one_version:srcs",
Googler5a4a3402023-04-03 09:05:06 -0700381 "//src/tools/remote:srcs",
Googlerb9bdcf82023-04-03 09:14:57 -0700382 "//src/tools/singlejar:srcs",
383 "//src/tools/starlark/java/com/google/devtools/starlark/common:srcs",
384 "//src/tools/workspacelog:srcs",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000385 "//tools/osx:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000386 ],
387 visibility = ["//:__pkg__"],
388)
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000389
390genrule(
391 name = "derived_java_srcs",
392 srcs = [
393 "//src/main/protobuf:dist_jars",
394 "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:dist_jars",
Googler7e703ec2018-07-16 08:48:39 -0700395 "//src/main/java/com/google/devtools/build/lib/bazel/debug:dist_jars",
kkress9ed89e52020-08-13 11:21:55 -0700396 "//src/main/java/com/google/devtools/build/lib/packages/metrics:dist_jars",
Googler94bf0042020-03-05 09:02:03 -0800397 "//src/main/java/com/google/devtools/build/lib/skyframe/proto:dist_jars",
laurentlb6e87c952020-04-28 11:44:05 -0700398 "//src/main/java/com/google/devtools/build/lib/starlarkdebug/proto:dist_jars",
janakr65970e52020-02-26 08:25:00 -0800399 "//src/main/java/com/google/devtools/build/skyframe:dist_jars",
Ola Rozenfeld930119a2018-08-10 11:04:44 -0700400 "@remoteapis//:dist_jars",
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000401 ],
402 outs = ["derived_java_srcs.zip"],
Klaus Aehlig86c9d942017-06-30 13:41:19 +0200403 cmd = "$(location :combine_derived_java_srcs.sh) $(JAVABASE) $@ $(SRCS)",
cushon849df362018-05-14 01:51:45 -0700404 toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000405 tools = ["combine_derived_java_srcs.sh"],
406 visibility = ["//:__pkg__"],
407)
L?szl? Csomor088f6112017-09-19 17:12:32 +0200408
tomlu1a483d42017-11-30 15:08:40 -0800409# config_setting alias left here because bazel-only third_party code is pointing to it
410alias(
411 name = "windows",
412 actual = "//src/conditions:windows",
413 visibility = ["//visibility:public"],
414)
iirina7aace9c2019-03-18 05:41:55 -0700415
416sh_binary(
417 name = "zip_files",
418 srcs = ["zip_files.sh"],
419 visibility = ["//visibility:public"],
420)
421
422sh_binary(
423 name = "merge_zip_files",
424 srcs = ["merge_zip_files.sh"],
425 visibility = ["//visibility:public"],
426)
iirina8df893a2019-03-25 09:34:51 -0700427
Ivo Listd10013d2020-11-25 14:41:16 -0800428# The java_tools release process produces following zip files:
429# - java_tools_dist.zip: all sources (Java and C++)
430# - java_tools.zip: platform independent part - Java classes (deploy jars) and C++ sources
431# - java_tools_prebuilt.zip: C++ binaries (for platforms: Linux, Darwin and Windows)
432#
433# The files are then used in Bazel as @remote_java_tools and @remote_java_tools_{platform}
434# repositories.
435# The zip files are not embedded or used in Bazel.
436
437# Following target build java_tools_dist.zip - the sources
438genrule(
439 name = "java_tools_dist",
440 srcs = [
441 "//src/java_tools/buildjar:srcs",
442 "//src/java_tools/junitrunner:srcs",
443 "//src/java_tools/singlejar:srcs",
Gowroji Sunil417c6b82024-06-04 09:23:45 -0700444 "//src/tools/one_version:embedded_java_tools",
Ivo Listd10013d2020-11-25 14:41:16 -0800445 "//src/tools/singlejar:embedded_java_tools",
Ivo Listd10013d2020-11-25 14:41:16 -0800446 "//third_party/ijar:transitive_sources",
447 "//third_party/java/jacoco:transitive_sources",
448 "//third_party/java/proguard:srcs",
Ivo Listd10013d2020-11-25 14:41:16 -0800449 ],
450 outs = ["java_tools_dist.zip"],
451 cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
452 output_to_bindir = 1,
453 visibility = ["//src/test/shell/bazel:__pkg__"],
454)
455
456# Following targets build java_tools.zip - platform independent part of java_tools
iirina93e80732019-04-16 02:07:40 -0700457JAVA_TOOLS_DEPLOY_JARS = [
458 "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
459 "//src/java_tools/buildjar:VanillaJavaBuilder_deploy.jar",
460 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass:GenClass_deploy.jar",
iirina93e80732019-04-16 02:07:40 -0700461 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_binary_deploy.jar",
462 "//src/java_tools/junitrunner/java/com/google/testing/coverage:JacocoCoverage_jarjar_deploy.jar",
iirina93e80732019-04-16 02:07:40 -0700463 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
iirinaa6e92602019-05-13 06:20:12 -0700464]
iirina93e80732019-04-16 02:07:40 -0700465
Ivo Listc0809f72020-12-04 06:21:44 -0800466release_archive(
Ivo Listd10013d2020-11-25 14:41:16 -0800467 name = "jars_java_tools_zip",
Liam Miller-Cushon3a0a4f32022-04-26 09:37:15 -0700468 srcs = JAVA_TOOLS_DEPLOY_JARS,
Ivo Listc0809f72020-12-04 06:21:44 -0800469 package_dir = "java_tools",
Ivo Listd10013d2020-11-25 14:41:16 -0800470 visibility = ["//visibility:private"],
471)
iirina93e80732019-04-16 02:07:40 -0700472
Ivo Listc0809f72020-12-04 06:21:44 -0800473release_archive(
474 name = "java_tools_zip",
475 src_map = {
476 "//tools/jdk:BUILD.java_tools": "BUILD",
477 },
478 visibility = ["//src/test/shell/bazel:__pkg__"],
479 deps = [
480 ":jars_java_tools_zip",
Gowroji Sunil417c6b82024-06-04 09:23:45 -0700481 "//src/tools/one_version:one_version_transitive_zip",
Ivo Listd10013d2020-11-25 14:41:16 -0800482 "//src/tools/singlejar:singlejar_transitive_zip",
483 "//third_party/ijar:ijar_transitive_srcs_zip",
484 "//third_party/java/jacoco:jacoco_jars_zip",
485 "//third_party/java/proguard:proguard_zip",
486 ],
Ivo Listc0809f72020-12-04 06:21:44 -0800487)
488
Googler707d0652024-03-11 04:15:38 -0700489transition_java_language_8_archive(
490 name = "java_tools_java8.zip",
491 archive_zip = ":java_tools.zip",
492 visibility = ["//src/test/shell/bazel:__pkg__"],
493)
494
Fabian Meumertzheim5f796842023-11-14 21:07:28 -0800495release_archive(
496 name = "turbine_direct_graal_zip",
497 srcs = ["//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_graal"],
498 package_dir = "java_tools",
499 visibility = ["//visibility:private"],
500)
501
Ivo Listc0809f72020-12-04 06:21:44 -0800502# Following target builds java_tools_prebuilt.zip part of java_tools
503release_archive(
504 name = "java_tools_prebuilt_zip",
505 src_map = {
506 "//tools/jdk:BUILD.java_tools_prebuilt": "BUILD",
507 },
Ivo Listd10013d2020-11-25 14:41:16 -0800508 visibility = ["//src/test/shell/bazel:__pkg__"],
Ivo Listc0809f72020-12-04 06:21:44 -0800509 deps = [
Fabian Meumertzheim5f796842023-11-14 21:07:28 -0800510 ":turbine_direct_graal_zip",
Gowroji Sunil417c6b82024-06-04 09:23:45 -0700511 "//src/tools/one_version:one_version_deploy_zip",
Ivo Listd10013d2020-11-25 14:41:16 -0800512 "//src/tools/singlejar:singlejar_deploy_zip",
513 "//third_party/ijar:ijar_deploy_zip",
514 ],
Ivo Listd10013d2020-11-25 14:41:16 -0800515)
516
Googler707d0652024-03-11 04:15:38 -0700517transition_java_language_8_archive(
518 name = "java_tools_prebuilt_java8.zip",
519 archive_zip = ":java_tools_prebuilt.zip",
520 visibility = ["//src/test/shell/bazel:__pkg__"],
521)
522
Ivo Listd10013d2020-11-25 14:41:16 -0800523# Following targets used by the java_tools_binaries Buildkite pipeline to upload
524# the java_tools_*.zip to either tmp/sources or tmp/build directories in GCS.
525sh_binary(
526 name = "upload_java_tools_dist",
527 srcs = ["upload_java_tools.sh"],
528 args = [
529 "--java_tools_zip",
530 "src/java_tools_dist.zip",
531 "--gcs_java_tools_dir",
532 "tmp/sources",
533 ],
534 data = [":java_tools_dist"],
535 deps = ["@bazel_tools//tools/bash/runfiles"],
536)
537
538sh_binary(
539 name = "upload_java_tools",
540 srcs = ["upload_java_tools.sh"],
541 args = [
542 "--java_tools_zip",
543 "src/java_tools.zip",
544 "--gcs_java_tools_dir",
545 "tmp/build",
546 ],
547 data = [":java_tools_zip"],
548 deps = ["@bazel_tools//tools/bash/runfiles"],
549)
550
551sh_binary(
552 name = "upload_java_tools_prebuilt",
553 srcs = ["upload_java_tools.sh"],
554 args = [
555 "--java_tools_zip",
556 "src/java_tools_prebuilt.zip",
557 "--gcs_java_tools_dir",
558 "tmp/build",
559 "--platform",
560 ] + select({
hvd3b475b32023-03-16 07:28:55 -0700561 "//src/conditions:darwin_x86_64": ["darwin_x86_64"],
562 "//src/conditions:darwin_arm64": ["darwin_arm64"],
Ivo Listd10013d2020-11-25 14:41:16 -0800563 "//src/conditions:windows": ["windows"],
564 "//src/conditions:linux": ["linux"],
565 "//conditions:default": ["unknown"],
566 }),
567 data = [":java_tools_prebuilt_zip"],
568 deps = ["@bazel_tools//tools/bash/runfiles"],
569)
iirina8df893a2019-03-25 09:34:51 -0700570
571# Part of the Java tools remote archive. Not embedded or used in Bazel.
Ivo Listc0809f72020-12-04 06:21:44 -0800572release_archive(
iirina8df893a2019-03-25 09:34:51 -0700573 name = "zlib_zip",
574 srcs = ["//third_party/zlib:embedded_tools"],
Ivo Listc0809f72020-12-04 06:21:44 -0800575 package_dir = "zlib",
iirinae4ac6162019-04-08 01:37:20 -0700576 visibility = [
577 "//src/tools/singlejar:__pkg__",
578 "//third_party/ijar:__pkg__",
579 ],
iirina8df893a2019-03-25 09:34:51 -0700580)
philwo17506af2020-01-28 04:20:39 -0800581
Googlerb3118b22024-01-30 10:16:59 -0800582JDK_VERSIONS = [
583 "11",
584 "17",
585 "21",
586]
587
philwo17506af2020-01-28 04:20:39 -0800588filegroup(
589 name = "test_repos",
590 srcs = [
Googlerde2a1032024-09-27 04:19:58 -0700591 requirement("bazel-runfiles"), # Fetching the hermetic Python toolchain.
Yannic Bonenberger5e571d22020-02-13 07:29:58 -0800592 "@bazel_skylib//:WORKSPACE",
Googler401ed582024-10-02 05:55:37 -0700593 "@protobuf//:LICENSE",
Yun Peng136dae12023-09-08 12:39:10 -0700594 "@remote_coverage_tools//:all_lcov_merger_lib",
Yun Peng3029a7d2023-06-07 07:40:12 -0700595 "@remote_java_tools//:GenClass",
596 "@remote_java_tools_darwin_arm64//:java_tools/src/tools/singlejar/singlejar_local",
597 "@remote_java_tools_darwin_x86_64//:java_tools/src/tools/singlejar/singlejar_local",
598 "@remote_java_tools_linux//:java_tools/src/tools/singlejar/singlejar_local",
599 "@remote_java_tools_windows//:java_tools/src/tools/singlejar/singlejar_local.exe",
Yun Peng136dae12023-09-08 12:39:10 -0700600 "@rules_cc//:LICENSE",
philwo17506af2020-01-28 04:20:39 -0800601 "@rules_java//:WORKSPACE",
Yun Peng136dae12023-09-08 12:39:10 -0700602 "@rules_license//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800603 "@rules_pkg//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800604 "@rules_python//:WORKSPACE",
Yun Peng136dae12023-09-08 12:39:10 -0700605 "@rules_testing//:LICENSE",
Googlerb3118b22024-01-30 10:16:59 -0800606 ] + select({
607 "//src/conditions:linux_x86_64": ["@remotejdk%s_linux//:WORKSPACE" % v for v in JDK_VERSIONS],
608 "//src/conditions:darwin_x86_64": ["@remotejdk%s_macos//:WORKSPACE" % v for v in JDK_VERSIONS],
609 "//src/conditions:darwin_arm64": ["@remotejdk%s_macos_aarch64//:WORKSPACE" % v for v in JDK_VERSIONS],
610 "//src/conditions:windows_x86_64": ["@remotejdk%s_win//:WORKSPACE" % v for v in JDK_VERSIONS],
611 "//conditions:default": [],
612 }) + [
Yun Pengc1f2aff2023-11-07 09:51:02 -0800613 "@bazel_tools_repo_cache//:files",
614 "@workspace_repo_cache//:files",
615 ],
philwo17506af2020-01-28 04:20:39 -0800616)
Googler239b89a2024-01-03 08:48:59 -0800617
618bzl_library(
619 name = "build_defs_bzl",
620 srcs = ["build_defs.bzl"],
621)