blob: d61341cf66b9e4eb0d11ac1f755cac0e5f394bac [file] [log] [blame]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01001# Packaging
2
Laszlo Csomor3e023182019-08-01 05:05:09 -07003load("//tools/python:private/defs.bzl", "py_binary", "py_library")
Philipp Wollermann4c558982017-07-27 18:01:12 +02004load(":embedded_tools.bzl", "srcsfile")
Laszlo Csomord784b5f2018-06-20 02:06:58 -07005load(":rule_size_test.bzl", "rule_size_test")
Ivo Listc0809f72020-12-04 06:21:44 -08006load("//src:release_archive.bzl", "release_archive")
Philipp Wollermann4c558982017-07-27 18:01:12 +02007
Tobias Werth218e8f62018-12-13 04:44:35 -08008exports_files(["jdeps_modules.golden"])
9
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080010md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@"
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010011
Lukacs Berkieb851fe2015-10-19 10:52:31 +000012[genrule(
13 name = "install_base_key-file" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010014 srcs = [
pcloudy9e2b3ca2021-04-21 04:05:29 -070015 # Ensure we haven't forgotten any package-zip items,
16 # otherwise bazel won't correctly reextract modified files.
kkress73dcff32020-04-06 11:14:48 -070017 "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer_deploy.jar",
adonovan450c7ad2020-09-14 13:00:21 -070018 "//src/main/java/net/starlark/java/eval:cpu_profiler",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010019 "//src/main/cpp:client",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010020 "//src/main/tools:build-runfiles",
21 "//src/main/tools:process-wrapper",
Philipp Wollermann278814b2016-07-15 14:41:54 +000022 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +000023 "//tools/osx:xcode-locator",
pcloudy9e2b3ca2021-04-21 04:05:29 -070024 ":platforms_archive",
25 ] + select({
26 "//src/conditions:windows": [],
27 "//conditions:default": [
28 "//src/main/tools:daemonize",
29 ],
30 }) + embedded_tools_target,
Lukacs Berkieb851fe2015-10-19 10:52:31 +000031 outs = ["install_base_key" + suffix],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010032 cmd = select({
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080033 "//src/conditions:darwin": md5_cmd % ("/sbin/md5", "/sbin/md5", "head -c 32"),
Benjamin Peterson9eb19a62020-02-14 09:22:22 -080034 "//src/conditions:freebsd": md5_cmd % ("/sbin/md5", "/sbin/md5", "head -c 32"),
35 # We avoid using the `head` tool's `-c` option, since it does not exist
36 # on OpenBSD.
37 "//src/conditions:openbsd": md5_cmd % ("/bin/md5", "/bin/md5", "dd bs=32 count=1"),
38 "//conditions:default": md5_cmd % ("md5sum", "md5sum", "head -c 32"),
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010039 }),
Philipp Wollermann4c558982017-07-27 18:01:12 +020040) for suffix, embedded_tools_target in {
Tobias Werth218e8f62018-12-13 04:44:35 -080041 "_jdk_allmodules": [":embedded_tools_jdk_allmodules"],
42 "_jdk_minimal": [":embedded_tools_jdk_minimal"],
Tobias Werth5d2d06c2019-01-18 05:17:26 -080043 "_dev_jdk": [":embedded_tools_dev_jdk"],
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -070044 "_nojdk": [":embedded_tools_nojdk"],
Lukacs Berkieb851fe2015-10-19 10:52:31 +000045 "_notools": [],
46}.items()]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010047
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000048# Try to grab the java version from the java_toolchain.
Damien Martin-Guillerez4bf2c1a2015-10-02 09:19:18 +000049# Unfortunately, we don't have access to the javac options
50# so we cannot get it from the command-line options.
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000051genquery(
52 name = "java_toolchain_content",
dbabkin35df7152018-06-26 05:47:54 -070053 expression = "kind(java_toolchain, deps(@bazel_tools//tools/jdk:current_java_toolchain))",
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000054 opts = ["--output=xml"],
dbabkin35df7152018-06-26 05:47:54 -070055 scope = ["@bazel_tools//tools/jdk:current_java_toolchain"],
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000056)
57
László Csomor5f99fda2017-08-11 09:28:12 +020058py_library(
59 name = "create_embedded_tools_lib",
60 srcs = ["create_embedded_tools_lib.py"],
László Csomor0783b9e2017-08-11 10:28:36 +020061 visibility = ["//:__pkg__"],
László Csomor5f99fda2017-08-11 09:28:12 +020062)
63
Philipp Wollermann4c558982017-07-27 18:01:12 +020064py_binary(
65 name = "create_embedded_tools",
66 srcs = ["create_embedded_tools.py"],
László Csomor5f99fda2017-08-11 09:28:12 +020067 deps = [":create_embedded_tools_lib"],
Philipp Wollermann4c558982017-07-27 18:01:12 +020068)
69
brandjonde1babe2020-11-17 14:19:23 -080070# Script for turning builtins_bzl sources into a zip file for unioning into the
71# package zip / install base.
72sh_binary(
73 name = "zip_builtins",
74 srcs = ["zip_builtins.sh"],
75 visibility = ["//src/main/starlark/builtins_bzl:__pkg__"],
76)
77
iirinaf4604ba2019-01-16 02:38:07 -080078# The tools Bazel uses to compile Java.
79# TODO(#6316): Gradually remove the targets here.
80JAVA_TOOLS = [
iirinaf4604ba2019-01-16 02:38:07 -080081 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
iirinaf4604ba2019-01-16 02:38:07 -080082 "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:embedded_tools",
iirinaebdbdcd2019-04-09 04:43:08 -070083]
iirinaf4604ba2019-01-16 02:38:07 -080084
Philipp Wollermann4c558982017-07-27 18:01:12 +020085# TODO(philwo): Clean this up, once a Bazel that can run py_binary and sh_binary
gregcead752cc2020-04-10 10:32:59 -070086# in Starlark rules on Windows has been released.
Philipp Wollermann4c558982017-07-27 18:01:12 +020087[filegroup(
88 name = "embedded_tools" + suffix + "_srcs",
iirinaf4604ba2019-01-16 02:38:07 -080089 srcs = JAVA_TOOLS + [
Tobias Werth218e8f62018-12-13 04:44:35 -080090 "BUILD.tools",
91 "//tools:embedded_tools_srcs",
92 "//third_party:gpl-srcs",
Tobias Werth9ef27942020-05-18 08:14:03 -070093 "//third_party/grpc:embedded_tools_srcs",
94 "//third_party/grpc/bazel:embedded_tools_srcs",
iirina2d446752019-03-15 09:00:35 -070095 "//third_party/ijar:embedded_zipper_sources",
96 "//third_party/ijar:zipper",
Tobias Werth218e8f62018-12-13 04:44:35 -080097 "//third_party/java/j2objc:embedded_tools_srcs",
laszlocsomord93a1462019-11-04 09:14:39 -080098 "//third_party/py/abseil:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -080099 "//third_party/py/six:srcs",
100 "//src/conditions:embedded_tools",
Tobias Werth218e8f62018-12-13 04:44:35 -0800101 "//src/tools/android/java/com/google/devtools/build/android:embedded_tools",
102 "//src/tools/launcher:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800103 "//src/main/cpp/util:embedded_tools",
104 "//src/main/native:embedded_tools",
105 "//src/main/protobuf:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800106 "//third_party/def_parser:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800107 "//third_party/zlib:embedded_tools",
108 ] + select({
109 "//src/conditions:darwin": [
Keith Smiley67586a22021-06-08 10:43:24 -0700110 "//tools/osx:xcode_locator.m",
Tobias Werth218e8f62018-12-13 04:44:35 -0800111 ],
Keith Smiley67586a22021-06-08 10:43:24 -0700112 "//conditions:default": [],
Tobias Werth218e8f62018-12-13 04:44:35 -0800113 }) + select({
114 "//src/conditions:windows": [
115 "//src/tools/launcher:launcher",
116 "//third_party/def_parser:def_parser",
117 ],
118 "//conditions:default": [],
Tobias Werth218e8f62018-12-13 04:44:35 -0800119 }) +
120 jdk,
cushon72141a12018-06-11 08:30:15 -0700121 visibility = [
122 "//src/test:__subpackages__", # For integration tests
123 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800124) for suffix, jdk in {
Tobias Wertha87451a2019-01-29 07:03:58 -0800125 "_jdk_allmodules": [":embedded_jdk_allmodules_cached"],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800126 "_jdk_minimal": [":embedded_jdk_minimal_cached"],
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800127 "_dev_jdk": [":embedded_jdk_minimal"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800128 "_nojdk": [],
129}.items()]
cushon72141a12018-06-11 08:30:15 -0700130
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700131rule_size_test(
132 name = "embedded_tools_size_test",
Tobias Werth218e8f62018-12-13 04:44:35 -0800133 src = ":embedded_tools_jdk_allmodules_srcs",
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700134 # WARNING: Only adjust the number in `expect` if you are intentionally
135 # adding or removing embedded tools. Know that the more embedded tools there
136 # are in Bazel, the bigger the binary becomes and the slower Bazel starts.
Keith Smiley67586a22021-06-08 10:43:24 -0700137 expect = 465,
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700138 margin = 5, # percentage
139)
140
cushon72141a12018-06-11 08:30:15 -0700141filegroup(
Tobias Wertha87451a2019-01-29 07:03:58 -0800142 name = "embedded_jdk_allmodules_cached",
cushon72141a12018-06-11 08:30:15 -0700143 srcs = select({
Thi Doanb39a51c2020-12-07 11:27:56 -0800144 "//src/conditions:darwin_x86_64": [
145 "@openjdk_macos_x86_64//file",
Philipp Wollermann95048272017-03-17 15:11:58 +0000146 ],
Yun Peng8c7e11a2021-01-27 03:23:12 -0800147 "//src/conditions:darwin_arm64": [
148 "@openjdk_macos_aarch64//file",
149 ],
tomlu1a483d42017-11-30 15:08:40 -0800150 "//src/conditions:windows": [
pcloudy05c20aa2017-06-29 11:38:30 +0200151 "@openjdk_win//file",
152 ],
Arielle Albonfa7e49f2018-07-31 00:57:54 -0700153 "//src/conditions:linux_aarch64": [
154 "@openjdk_linux_aarch64//file",
155 ],
Philipp Wollermann95048272017-03-17 15:11:58 +0000156 "//conditions:default": [
157 "@openjdk_linux//file",
158 ],
cushon72141a12018-06-11 08:30:15 -0700159 }),
160 visibility = ["//src/test/shell/bazel:__pkg__"],
161)
Damien Martin-Guillerez12997672015-09-03 21:54:08 +0000162
Tobias Werth218e8f62018-12-13 04:44:35 -0800163filegroup(
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800164 name = "embedded_jdk_minimal_cached",
165 srcs = select({
Thi Doanb39a51c2020-12-07 11:27:56 -0800166 "//src/conditions:darwin_x86_64": [
167 "@openjdk_macos_x86_64_minimal//file",
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800168 ],
Yun Peng8c7e11a2021-01-27 03:23:12 -0800169 "//src/conditions:darwin_arm64": [
170 "@openjdk_macos_aarch64_minimal//file",
171 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800172 "//src/conditions:windows": [
173 "@openjdk_win_minimal//file",
174 ],
philwo9f7fe692019-06-27 06:53:12 -0700175 "//src/conditions:linux_aarch64": [
176 "@openjdk_linux_aarch64_minimal//file",
177 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800178 "//conditions:default": [
179 "@openjdk_linux_minimal//file",
180 ],
181 }),
182 visibility = ["//src/test/shell/bazel:__pkg__"],
183)
184
185filegroup(
Tobias Werth218e8f62018-12-13 04:44:35 -0800186 name = "embedded_jdk_vanilla",
187 srcs = select({
Thi Doanb39a51c2020-12-07 11:27:56 -0800188 "//src/conditions:darwin_x86_64": [
189 "@openjdk_macos_x86_64_vanilla//file",
Tobias Werth218e8f62018-12-13 04:44:35 -0800190 ],
Yun Peng8c7e11a2021-01-27 03:23:12 -0800191 "//src/conditions:darwin_arm64": [
192 "@openjdk_macos_aarch64_vanilla//file",
193 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800194 "//src/conditions:windows": [
195 "@openjdk_win_vanilla//file",
196 ],
197 "//src/conditions:linux_aarch64": [
198 "@openjdk_linux_aarch64_vanilla//file",
199 ],
Jason Furmanek04e073e2020-05-28 05:48:09 -0700200 "//src/conditions:linux_ppc64le": [
201 "@openjdk_linux_ppc64le_vanilla//file",
202 ],
Ruixin Baoe14a6f22020-08-21 06:17:24 -0700203 "//src/conditions:linux_s390x": [
204 "@openjdk_linux_s390x_vanilla//file",
205 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800206 "//conditions:default": [
207 "@openjdk_linux_vanilla//file",
208 ],
209 }),
210 visibility = ["//src/test/shell/bazel:__pkg__"],
211)
212
213sh_binary(
214 name = "minimize_jdk",
215 srcs = ["minimize_jdk.sh"],
216)
217
twerth683922c2018-12-20 05:12:08 -0800218filegroup(
Tobias Werth218e8f62018-12-13 04:44:35 -0800219 name = "embedded_jdk_minimal",
twerth683922c2018-12-20 05:12:08 -0800220 srcs = select({
221 "//src/conditions:windows": [
222 ":embedded_jdk_minimal.zip",
223 ],
224 "//conditions:default": [
225 ":embedded_jdk_minimal.tar.gz",
226 ],
227 }),
228)
229
Tobias Wertha87451a2019-01-29 07:03:58 -0800230filegroup(
231 name = "embedded_jdk_allmodules",
232 srcs = select({
233 "//src/conditions:windows": [
234 ":embedded_jdk_allmodules.zip",
235 ],
236 "//conditions:default": [
237 ":embedded_jdk_allmodules.tar.gz",
238 ],
239 }),
Tobias Werth144912e2019-02-01 10:40:20 -0800240 visibility = ["//src/test/shell/bazel:__pkg__"],
Tobias Wertha87451a2019-01-29 07:03:58 -0800241)
242
twerth683922c2018-12-20 05:12:08 -0800243[genrule(
244 name = "embedded_jdk_minimal" + suffix,
Tobias Werth218e8f62018-12-13 04:44:35 -0800245 srcs = [
246 ":embedded_jdk_vanilla",
247 ":minimize_jdk.sh",
248 ":jdeps_modules.golden",
249 ],
twerth683922c2018-12-20 05:12:08 -0800250 outs = ["minimal_jdk" + suffix],
Tobias Werth218e8f62018-12-13 04:44:35 -0800251 cmd = "$(location :minimize_jdk.sh) $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
252 visibility = ["//src/test/shell/bazel:__pkg__"],
twerth683922c2018-12-20 05:12:08 -0800253) for suffix in [
254 ".zip",
255 ".tar.gz",
256]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800257
Tobias Wertha87451a2019-01-29 07:03:58 -0800258[genrule(
259 name = "embedded_jdk_allmodules" + suffix,
260 srcs = [
261 ":embedded_jdk_vanilla",
262 ":minimize_jdk.sh",
263 ":jdeps_modules.golden",
264 ],
265 outs = ["allmodules_jdk" + suffix],
266 cmd = "$(location :minimize_jdk.sh) --allmodules $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
267 visibility = ["//src/test/shell/bazel:__pkg__"],
268) for suffix in [
269 ".zip",
270 ".tar.gz",
271]]
272
Philipp Wollermann4c558982017-07-27 18:01:12 +0200273[srcsfile(
274 name = "embedded_tools" + suffix + "_params",
275 srcs = [":embedded_tools" + suffix + "_srcs"],
276 out = "embedded_tools" + suffix + ".params",
277) for suffix in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800278 "_jdk_allmodules",
279 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800280 "_dev_jdk",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700281 "_nojdk",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200282]]
283
Tobias Werth218e8f62018-12-13 04:44:35 -0800284[genrule(
285 name = "embedded_tools" + suffix,
Philipp Wollermann4c558982017-07-27 18:01:12 +0200286 srcs = [
Tobias Werth218e8f62018-12-13 04:44:35 -0800287 ":embedded_tools" + suffix + "_params",
288 ":embedded_tools" + suffix + "_srcs",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200289 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800290 outs = ["embedded_tools" + suffix + ".zip"],
291 cmd = "$(location :create_embedded_tools) \"$@\" $(location :embedded_tools" + suffix + "_params)",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200292 tools = [":create_embedded_tools"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800293) for suffix in [
294 "_jdk_allmodules",
295 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800296 "_dev_jdk",
Tobias Werth218e8f62018-12-13 04:44:35 -0800297 "_nojdk",
298]]
Philipp Wollermann4c558982017-07-27 18:01:12 +0200299
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000300[genrule(
301 name = "package-zip" + suffix,
brandjon708e1ce2020-12-15 14:51:06 -0800302 # This script assumes the following arg order:
303 # 1) embedded tools zip (if it exists)
304 # 2) the deploy jar
305 # 3) the install base key
306 # 4) the platforms archive
307 # 5) everything else to be bundled
pcloudy9e2b3ca2021-04-21 04:05:29 -0700308 # Ensure we haven't forgotten to add all package-zip items as dependencies
309 # of :install_base_key-file, otherwise bazel won't correctly reextract
310 # modified files.
Philipp Wollermann95048272017-03-17 15:11:58 +0000311 srcs = ([":embedded_tools" + suffix + ".zip"] if embed else []) + [
kkress73dcff32020-04-06 11:14:48 -0700312 "//src/main/java/com/google/devtools/build/lib/bazel:BazelServer_deploy.jar",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000313 "install_base_key" + suffix,
hlopkoaaf64572019-06-14 02:33:56 -0700314 ":platforms_archive",
brandjonde1babe2020-11-17 14:19:23 -0800315 # Non-ordered items follow:
adonovan450c7ad2020-09-14 13:00:21 -0700316 "//src/main/java/net/starlark/java/eval:cpu_profiler",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100317 "//src/main/tools:build-runfiles",
318 "//src/main/tools:process-wrapper",
Philipp Wollermann278814b2016-07-15 14:41:54 +0000319 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000320 "//tools/osx:xcode-locator",
jmmv18a0e232019-02-21 07:34:02 -0800321 ] + select({
322 "//src/conditions:windows": [],
323 "//conditions:default": [
324 "//src/main/tools:daemonize",
325 ],
326 }),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000327 outs = ["package" + suffix + ".zip"],
aldersondrived6145a02020-01-21 08:11:48 -0800328 cmd = "$(location :package_bazel_on_host_platform) $@ " + ("" if embed else "''") + " $(SRCS)",
329 tools = [":package_bazel_on_host_platform"],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000330) for suffix, embed in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800331 ("_jdk_allmodules", True),
332 ("_jdk_minimal", True),
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800333 ("_dev_jdk", True),
Damien Martin-Guillerez04d46ab2016-04-13 19:27:56 +0000334 ("_notools", False),
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700335 ("_nojdk", True),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000336]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100337
hlopkoaaf64572019-06-14 02:33:56 -0700338genrule(
aldersondrived6145a02020-01-21 08:11:48 -0800339 name = "package_bazel_on_host_platform",
340 srcs = ["package-bazel.sh"],
341 outs = ["package-bazel-on-host-platform.sh"],
342 cmd = select({
343 "//src/conditions:openbsd": "cat $(SRCS) | sed -e 's@#!/bin/bash@#!/usr/local/bin/bash@' > $@",
344 "//conditions:default": "cp $(SRCS) $@",
345 }),
346)
347
348genrule(
hlopkoaaf64572019-06-14 02:33:56 -0700349 name = "platforms_archive",
350 srcs = ["@platforms//:srcs"],
351 outs = ["platforms.zip"],
352 # Removing the WORKSPACE file since local_repository creates it no matter what and leaving
353 # it there would make the zip nondeterministic.
354 cmd = "zip -qX $@ $$(echo $(SRCS) | xargs -n 1 | grep -v '.*/WORKSPACE$$' | sort | xargs)",
355)
356
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000357[genrule(
358 name = "bazel-bin" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100359 srcs = [
360 "//src/main/cpp:client",
Jakob Buchgraber92931bd2019-07-18 07:38:59 -0700361 "package-zip" + jdk,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100362 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000363 outs = ["bazel" + suffix],
Yun Peng6ffb8e42016-04-14 16:55:02 +0000364 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
365 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
366 # need to remove bazel.exe first, so that cat to bazel won't fail.
Googler48648502021-01-20 06:53:05 -0800367 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 -0800368 executable = 1,
369 output_to_bindir = 1,
370 visibility = [
371 "//scripts:__pkg__", # For bash completion generation
372 "//scripts/packages:__pkg__", # For installer generation
373 "//src/java:__subpackages__", # For command line reference generation
374 "//src/test:__subpackages__", # For integration tests
375 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800376) for suffix, jdk in [
377 ("-dev", "_jdk_allmodules"),
378 ("", "_jdk_minimal"),
Jakob Buchgraber92931bd2019-07-18 07:38:59 -0700379 ("_jdk_allmodules", "_jdk_allmodules"),
380 ("_jdk_minimal", "_jdk_minimal"),
381 ("_dev_jdk", "_dev_jdk"),
382 ("_notools", "_notools"),
383 ("_nojdk", "_nojdk"),
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800384]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800385
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000386# Build an executable named `bazel.exe`.
387# Works on all platforms but only makes sense on Windows.
388# Workaround for non-configurability of genrule's `outs` attribute.
389[genrule(
390 name = "bazel-bin" + suffix + ".exe",
391 srcs = [":bazel-bin" + suffix],
392 outs = ["bazel" + suffix + ".exe"],
393 cmd = "cp $(location :bazel-bin" + suffix + ") $@",
394 executable = 1,
395 output_to_bindir = 1,
396 visibility = [
397 "//scripts:__pkg__", # For bash completion generation
398 "//scripts/packages:__pkg__", # For installer generation
399 "//src/test:__subpackages__", # For integration tests
400 ],
401) for suffix in [
402 "",
Tobias Werthe7438ae2019-07-02 08:17:44 -0700403 "-dev",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000404 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700405 "_nojdk",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000406]]
407
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000408filegroup(
409 name = "srcs",
410 srcs = glob(["**"]) + [
tomlu1a483d42017-11-30 15:08:40 -0800411 "//src/conditions:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000412 "//src/java_tools/buildjar:srcs",
Benjamin Peterson425f9422018-02-09 14:05:17 -0800413 "//src/java_tools/import_deps_checker:srcs",
ulfjack26ad43d2017-08-28 12:30:44 +0200414 "//src/java_tools/junitrunner:srcs",
dorranh210ae642021-01-14 02:14:31 -0800415 "//src/java_tools/junitrunner/javatests/com/google/testing/coverage:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000416 "//src/java_tools/singlejar:srcs",
417 "//src/main/cpp:srcs",
Laszlo Csomor3e023182019-08-01 05:05:09 -0700418 "//src/main/res:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000419 "//src/main/java/com/google/devtools/build/docgen:srcs",
420 "//src/main/java/com/google/devtools/build/lib:srcs",
philwo45743d02019-06-03 06:13:30 -0700421 "//src/main/java/com/google/devtools/build/lib/includescanning:srcs",
steinmanacf55d82019-05-21 09:49:58 -0700422 "//src/main/java/com/google/devtools/build/lib/network:srcs",
philwo62dd1742019-06-04 05:27:37 -0700423 "//src/main/java/com/google/devtools/build/lib/outputfilter:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700424 "//src/main/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000425 "//src/main/java/com/google/devtools/build/skyframe:srcs",
426 "//src/main/java/com/google/devtools/common/options:srcs",
adonovancb5dc082020-05-18 12:02:00 -0700427 "//src/main/java/net/starlark/java/cmd:srcs",
428 "//src/main/java/net/starlark/java/spelling:srcs",
adonovan6e47a402020-10-19 15:16:15 -0700429 "//src/main/java/net/starlark/java/lib/json:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000430 "//src/main/native:srcs",
431 "//src/main/protobuf:srcs",
brandjonde1babe2020-11-17 14:19:23 -0800432 "//src/main/starlark/builtins_bzl:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000433 "//src/main/tools:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000434 "//src/test/cpp:srcs",
Googler3e830922017-03-17 17:39:00 +0000435 "//src/test/gen:srcs",
Laszlo Csomor3e023182019-08-01 05:05:09 -0700436 "//src/test/res:srcs",
Laszlo Csomordcc80fb2019-08-09 05:05:21 -0700437 "//src/test/native/windows:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000438 "//src/test/java/com/google/devtools/build/android:srcs",
439 "//src/test/java/com/google/devtools/build/docgen:srcs",
440 "//src/test/java/com/google/devtools/build/lib:srcs",
ruperts9f959c52018-01-04 11:54:02 -0800441 "//src/test/java/com/google/devtools/build/lib/shell:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700442 "//src/test/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000443 "//src/test/java/com/google/devtools/build/skyframe:srcs",
444 "//src/test/java/com/google/devtools/common/options:srcs",
adonovan53e22d92020-07-28 08:54:43 -0700445 "//src/test/java/net/starlark/java/eval:srcs",
adonovancb5dc082020-05-18 12:02:00 -0700446 "//src/test/java/net/starlark/java/spelling:srcs",
Laszlo Csomore78ad832017-06-09 10:45:27 -0400447 "//src/test/py/bazel:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000448 "//src/test/shell:srcs",
ishikhman32268802019-04-25 03:47:24 -0700449 "//src/test/testdata/test_tls_certificate",
jmmvb07b7992020-05-18 09:24:11 -0700450 "//src/test/tools:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000451 "//src/tools/android/java/com/google/devtools/build/android:srcs",
olaolaa5e36ee2018-06-15 08:16:44 -0700452 "//src/tools/execlog:srcs",
Googler1950bf92018-08-28 15:40:05 -0700453 "//src/tools/workspacelog:srcs",
Yun Peng09dd8c02017-07-21 15:57:05 +0200454 "//src/tools/launcher:srcs",
gregce3ec8d812020-06-18 08:05:01 -0700455 "//src/tools/starlark/java/com/google/devtools/starlark/common:srcs",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000456 "//src/tools/singlejar:srcs",
olaola2f3d7df2017-12-05 12:41:19 -0800457 "//src/tools/remote:srcs",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000458 "//tools/osx:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000459 ],
460 visibility = ["//:__pkg__"],
461)
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000462
463genrule(
464 name = "derived_java_srcs",
465 srcs = [
466 "//src/main/protobuf:dist_jars",
467 "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:dist_jars",
Googler7e703ec2018-07-16 08:48:39 -0700468 "//src/main/java/com/google/devtools/build/lib/bazel/debug:dist_jars",
kkress9ed89e52020-08-13 11:21:55 -0700469 "//src/main/java/com/google/devtools/build/lib/packages/metrics:dist_jars",
Googler94bf0042020-03-05 09:02:03 -0800470 "//src/main/java/com/google/devtools/build/lib/skyframe/proto:dist_jars",
laurentlb6e87c952020-04-28 11:44:05 -0700471 "//src/main/java/com/google/devtools/build/lib/starlarkdebug/proto:dist_jars",
cparsons5ece6502019-04-17 10:19:41 -0700472 "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:dist_jars",
janakr65970e52020-02-26 08:25:00 -0800473 "//src/main/java/com/google/devtools/build/skyframe:dist_jars",
Jakob Buchgraber55c5a602017-06-08 23:11:21 +0200474 "@googleapis//:dist_jars",
Ola Rozenfeld930119a2018-08-10 11:04:44 -0700475 "@remoteapis//:dist_jars",
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000476 ],
477 outs = ["derived_java_srcs.zip"],
Klaus Aehlig86c9d942017-06-30 13:41:19 +0200478 cmd = "$(location :combine_derived_java_srcs.sh) $(JAVABASE) $@ $(SRCS)",
cushon849df362018-05-14 01:51:45 -0700479 toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000480 tools = ["combine_derived_java_srcs.sh"],
481 visibility = ["//:__pkg__"],
482)
L?szl? Csomor088f6112017-09-19 17:12:32 +0200483
tomlu1a483d42017-11-30 15:08:40 -0800484# config_setting alias left here because bazel-only third_party code is pointing to it
485alias(
486 name = "windows",
487 actual = "//src/conditions:windows",
488 visibility = ["//visibility:public"],
489)
iirina7aace9c2019-03-18 05:41:55 -0700490
491sh_binary(
492 name = "zip_files",
493 srcs = ["zip_files.sh"],
494 visibility = ["//visibility:public"],
495)
496
497sh_binary(
498 name = "merge_zip_files",
499 srcs = ["merge_zip_files.sh"],
500 visibility = ["//visibility:public"],
501)
iirina8df893a2019-03-25 09:34:51 -0700502
Ivo Listd10013d2020-11-25 14:41:16 -0800503# The java_tools release process produces following zip files:
504# - java_tools_dist.zip: all sources (Java and C++)
505# - java_tools.zip: platform independent part - Java classes (deploy jars) and C++ sources
506# - java_tools_prebuilt.zip: C++ binaries (for platforms: Linux, Darwin and Windows)
507#
508# The files are then used in Bazel as @remote_java_tools and @remote_java_tools_{platform}
509# repositories.
510# The zip files are not embedded or used in Bazel.
511
512# Following target build java_tools_dist.zip - the sources
513genrule(
514 name = "java_tools_dist",
515 srcs = [
516 "//src/java_tools/buildjar:srcs",
517 "//src/java_tools/junitrunner:srcs",
518 "//src/java_tools/singlejar:srcs",
519 "//src/tools/singlejar:embedded_java_tools",
520 "//third_party/checker_framework_dataflow:srcs",
521 "//third_party/checker_framework_javacutil:srcs",
522 "//third_party/ijar:transitive_sources",
523 "//third_party/java/jacoco:transitive_sources",
524 "//third_party/java/proguard:srcs",
525 "@java_tools_langtools_javac11//:srcs",
526 ],
527 outs = ["java_tools_dist.zip"],
528 cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
529 output_to_bindir = 1,
530 visibility = ["//src/test/shell/bazel:__pkg__"],
531)
532
533# Following targets build java_tools.zip - platform independent part of java_tools
iirina93e80732019-04-16 02:07:40 -0700534JAVA_TOOLS_DEPLOY_JARS = [
535 "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
536 "//src/java_tools/buildjar:VanillaJavaBuilder_deploy.jar",
537 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass:GenClass_deploy.jar",
iirina93e80732019-04-16 02:07:40 -0700538 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_binary_deploy.jar",
539 "//src/java_tools/junitrunner/java/com/google/testing/coverage:JacocoCoverage_jarjar_deploy.jar",
iirina93e80732019-04-16 02:07:40 -0700540 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
iirinaa6e92602019-05-13 06:20:12 -0700541]
iirina93e80732019-04-16 02:07:40 -0700542
Ivo Listc0809f72020-12-04 06:21:44 -0800543release_archive(
Ivo Listd10013d2020-11-25 14:41:16 -0800544 name = "jars_java_tools_zip",
545 srcs = JAVA_TOOLS_DEPLOY_JARS + [
546 "@java_tools_langtools_javac11//:jdk_compiler_jar",
547 "@java_tools_langtools_javac11//:java_compiler_jar",
548 "@java_tools_langtools_javac11//:javac_jar",
549 ],
Ivo Listc0809f72020-12-04 06:21:44 -0800550 package_dir = "java_tools",
Ivo Listd10013d2020-11-25 14:41:16 -0800551 visibility = ["//visibility:private"],
552)
iirina93e80732019-04-16 02:07:40 -0700553
Ivo Listc0809f72020-12-04 06:21:44 -0800554release_archive(
555 name = "java_tools_zip",
556 src_map = {
557 "//tools/jdk:BUILD.java_tools": "BUILD",
558 },
559 visibility = ["//src/test/shell/bazel:__pkg__"],
560 deps = [
561 ":jars_java_tools_zip",
Ivo Listd10013d2020-11-25 14:41:16 -0800562 "//src/tools/singlejar:singlejar_transitive_zip",
563 "//third_party/ijar:ijar_transitive_srcs_zip",
564 "//third_party/java/jacoco:jacoco_jars_zip",
565 "//third_party/java/proguard:proguard_zip",
566 ],
Ivo Listc0809f72020-12-04 06:21:44 -0800567)
568
569# Following target builds java_tools_prebuilt.zip part of java_tools
570release_archive(
571 name = "java_tools_prebuilt_zip",
572 src_map = {
573 "//tools/jdk:BUILD.java_tools_prebuilt": "BUILD",
574 },
Ivo Listd10013d2020-11-25 14:41:16 -0800575 visibility = ["//src/test/shell/bazel:__pkg__"],
Ivo Listc0809f72020-12-04 06:21:44 -0800576 deps = [
Ivo Listd10013d2020-11-25 14:41:16 -0800577 "//src/tools/singlejar:singlejar_deploy_zip",
578 "//third_party/ijar:ijar_deploy_zip",
579 ],
Ivo Listd10013d2020-11-25 14:41:16 -0800580)
581
582# Following targets used by the java_tools_binaries Buildkite pipeline to upload
583# the java_tools_*.zip to either tmp/sources or tmp/build directories in GCS.
584sh_binary(
585 name = "upload_java_tools_dist",
586 srcs = ["upload_java_tools.sh"],
587 args = [
588 "--java_tools_zip",
589 "src/java_tools_dist.zip",
590 "--gcs_java_tools_dir",
591 "tmp/sources",
592 ],
593 data = [":java_tools_dist"],
594 deps = ["@bazel_tools//tools/bash/runfiles"],
595)
596
597sh_binary(
598 name = "upload_java_tools",
599 srcs = ["upload_java_tools.sh"],
600 args = [
601 "--java_tools_zip",
602 "src/java_tools.zip",
603 "--gcs_java_tools_dir",
604 "tmp/build",
605 ],
606 data = [":java_tools_zip"],
607 deps = ["@bazel_tools//tools/bash/runfiles"],
608)
609
610sh_binary(
611 name = "upload_java_tools_prebuilt",
612 srcs = ["upload_java_tools.sh"],
613 args = [
614 "--java_tools_zip",
615 "src/java_tools_prebuilt.zip",
616 "--gcs_java_tools_dir",
617 "tmp/build",
618 "--platform",
619 ] + select({
620 "//src/conditions:darwin": ["darwin"],
621 "//src/conditions:windows": ["windows"],
622 "//src/conditions:linux": ["linux"],
623 "//conditions:default": ["unknown"],
624 }),
625 data = [":java_tools_prebuilt_zip"],
626 deps = ["@bazel_tools//tools/bash/runfiles"],
627)
iirina8df893a2019-03-25 09:34:51 -0700628
629# Part of the Java tools remote archive. Not embedded or used in Bazel.
Ivo Listc0809f72020-12-04 06:21:44 -0800630release_archive(
iirina8df893a2019-03-25 09:34:51 -0700631 name = "zlib_zip",
632 srcs = ["//third_party/zlib:embedded_tools"],
Ivo Listc0809f72020-12-04 06:21:44 -0800633 package_dir = "zlib",
iirinae4ac6162019-04-08 01:37:20 -0700634 visibility = [
635 "//src/tools/singlejar:__pkg__",
636 "//third_party/ijar:__pkg__",
637 ],
iirina8df893a2019-03-25 09:34:51 -0700638)
philwo17506af2020-01-28 04:20:39 -0800639
640filegroup(
641 name = "test_repos",
642 srcs = [
643 "@android_tools_for_testing//:WORKSPACE",
Yannic Bonenberger5e571d22020-02-13 07:29:58 -0800644 "@bazel_skylib//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800645 "@com_google_protobuf//:WORKSPACE",
Yun Peng8c7e11a2021-01-27 03:23:12 -0800646 "@openjdk11_darwin_aarch64_archive//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800647 "@openjdk11_darwin_archive//:WORKSPACE",
648 "@openjdk11_linux_archive//:WORKSPACE",
649 "@openjdk11_windows_archive//:WORKSPACE",
Yun Peng8c7e11a2021-01-27 03:23:12 -0800650 "@openjdk15_darwin_aarch64_archive//:WORKSPACE",
Jonathan Perry94505522020-10-07 12:45:34 -0700651 "@openjdk15_darwin_archive//:WORKSPACE",
652 "@openjdk15_linux_archive//:WORKSPACE",
653 "@openjdk15_windows_archive//:WORKSPACE",
David Ostrovskye2ed2fd2021-04-15 01:17:40 -0700654 "@openjdk16_darwin_aarch64_archive//:WORKSPACE",
655 "@openjdk16_darwin_archive//:WORKSPACE",
656 "@openjdk16_linux_archive//:WORKSPACE",
657 "@openjdk16_windows_archive//:WORKSPACE",
Liam Miller-Cushoneb7bf8c2021-09-30 07:53:06 -0700658 "@openjdk17_darwin_aarch64_archive//:WORKSPACE",
659 "@openjdk17_darwin_archive//:WORKSPACE",
660 "@openjdk17_linux_archive//:WORKSPACE",
661 "@openjdk17_windows_archive//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800662 "@openjdk_linux_aarch64_minimal//file",
663 "@openjdk_linux_minimal//file",
Yun Peng8c7e11a2021-01-27 03:23:12 -0800664 "@openjdk_macos_aarch64_minimal//file",
Thi Doanb39a51c2020-12-07 11:27:56 -0800665 "@openjdk_macos_x86_64_minimal//file",
philwo17506af2020-01-28 04:20:39 -0800666 "@openjdk_win_minimal//file",
aiutobbeb1da2021-01-15 06:50:56 -0800667 "@remote_coverage_tools//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800668 "@remote_java_tools_darwin_for_testing//:WORKSPACE",
Ivo List62022712020-11-27 07:24:36 -0800669 "@remote_java_tools_for_testing//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800670 "@remote_java_tools_linux_for_testing//:WORKSPACE",
Ivo List62022712020-11-27 07:24:36 -0800671 "@remote_java_tools_test//:WORKSPACE",
672 "@remote_java_tools_test_darwin//:WORKSPACE",
673 "@remote_java_tools_test_linux//:WORKSPACE",
674 "@remote_java_tools_test_windows//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800675 "@remote_java_tools_windows_for_testing//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800676 "@remotejdk11_linux_aarch64_for_testing//:WORKSPACE",
677 "@remotejdk11_linux_for_testing//:WORKSPACE",
Jason Furmanek04e073e2020-05-28 05:48:09 -0700678 "@remotejdk11_linux_ppc64le_for_testing//:WORKSPACE",
Ruixin Baoe14a6f22020-08-21 06:17:24 -0700679 "@remotejdk11_linux_s390x_for_testing//:WORKSPACE",
Yun Peng8c7e11a2021-01-27 03:23:12 -0800680 "@remotejdk11_macos_aarch64_for_testing//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800681 "@remotejdk11_macos_for_testing//:WORKSPACE",
682 "@remotejdk11_win_for_testing//:WORKSPACE",
Jonathan Perry94505522020-10-07 12:45:34 -0700683 "@remotejdk15_linux_for_testing//:WORKSPACE",
Yun Peng8c7e11a2021-01-27 03:23:12 -0800684 "@remotejdk15_macos_aarch64_for_testing//:WORKSPACE",
Jonathan Perry94505522020-10-07 12:45:34 -0700685 "@remotejdk15_macos_for_testing//:WORKSPACE",
686 "@remotejdk15_win_for_testing//:WORKSPACE",
David Ostrovskye2ed2fd2021-04-15 01:17:40 -0700687 "@remotejdk16_linux_for_testing//:WORKSPACE",
688 "@remotejdk16_macos_aarch64_for_testing//:WORKSPACE",
689 "@remotejdk16_macos_for_testing//:WORKSPACE",
690 "@remotejdk16_win_for_testing//:WORKSPACE",
Liam Miller-Cushoneb7bf8c2021-09-30 07:53:06 -0700691 "@remotejdk17_linux_for_testing//:WORKSPACE",
692 "@remotejdk17_macos_aarch64_for_testing//:WORKSPACE",
693 "@remotejdk17_macos_for_testing//:WORKSPACE",
694 "@remotejdk17_win_for_testing//:WORKSPACE",
philwo17506af2020-01-28 04:20:39 -0800695 "@rules_cc//:WORKSPACE",
696 "@rules_java//:WORKSPACE",
697 "@rules_pkg//:WORKSPACE",
698 "@rules_proto//:WORKSPACE",
699 "@rules_python//:WORKSPACE",
700 ],
701)