blob: 783cfefdec65bfd354338949bbf7540022c93df5 [file] [log] [blame]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01001# Packaging
2
Philipp Wollermann4c558982017-07-27 18:01:12 +02003load(":embedded_tools.bzl", "srcsfile")
Laszlo Csomord784b5f2018-06-20 02:06:58 -07004load(":rule_size_test.bzl", "rule_size_test")
Philipp Wollermann4c558982017-07-27 18:01:12 +02005
Tobias Werth218e8f62018-12-13 04:44:35 -08006exports_files(["jdeps_modules.golden"])
7
Lukacs Berkic4e74d12015-11-10 15:28:00 +00008md5_cmd = "set -e -o pipefail && cat $(SRCS) | sort | %s | awk '{ print $$1; }' > $@"
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +01009
10# TODO(bazel-team): find a better way to handle dylib extensions.
11filegroup(
12 name = "libunix",
13 srcs = select({
tomlu1a483d42017-11-30 15:08:40 -080014 "//src/conditions:darwin": ["//src/main/native:libunix.dylib"],
15 "//src/conditions:darwin_x86_64": ["//src/main/native:libunix.dylib"],
16 "//src/conditions:windows": ["//src/main/native/windows:windows_jni.dll"],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010017 "//conditions:default": ["//src/main/native:libunix.so"],
18 }),
Kristina Chodorow38358932015-06-26 14:31:50 +000019 visibility = [
Kristina Chodorow38358932015-06-26 14:31:50 +000020 "//src/test/java:__pkg__",
olaola2f3d7df2017-12-05 12:41:19 -080021 "//src/tools/remote:__subpackages__",
Kristina Chodorow38358932015-06-26 14:31:50 +000022 ],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010023)
24
Lukacs Berkieb851fe2015-10-19 10:52:31 +000025[genrule(
26 name = "install_base_key-file" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010027 srcs = [
Han-Wen Nienhuys27760a62015-11-30 17:27:34 +000028 "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010029 "//src/main/cpp:client",
30 ":libunix",
31 "//src/main/tools:build-runfiles",
32 "//src/main/tools:process-wrapper",
Philipp Wollermann278814b2016-07-15 14:41:54 +000033 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +000034 "//tools/osx:xcode-locator",
Philipp Wollermann4c558982017-07-27 18:01:12 +020035 ] + embedded_tools_target,
Lukacs Berkieb851fe2015-10-19 10:52:31 +000036 outs = ["install_base_key" + suffix],
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010037 cmd = select({
tomlu1a483d42017-11-30 15:08:40 -080038 "//src/conditions:darwin": md5_cmd % "/sbin/md5",
39 "//src/conditions:darwin_x86_64": md5_cmd % "/sbin/md5",
40 "//src/conditions:freebsd": md5_cmd % "/sbin/md5",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010041 "//conditions:default": md5_cmd % "md5sum",
42 }),
Philipp Wollermann4c558982017-07-27 18:01:12 +020043) for suffix, embedded_tools_target in {
Tobias Werth218e8f62018-12-13 04:44:35 -080044 "_jdk_allmodules": [":embedded_tools_jdk_allmodules"],
45 "_jdk_minimal": [":embedded_tools_jdk_minimal"],
Tobias Werth5d2d06c2019-01-18 05:17:26 -080046 "_dev_jdk": [":embedded_tools_dev_jdk"],
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -070047 "_nojdk": [":embedded_tools_nojdk"],
Lukacs Berkieb851fe2015-10-19 10:52:31 +000048 "_notools": [],
49}.items()]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +010050
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000051# Try to grab the java version from the java_toolchain.
Damien Martin-Guillerez4bf2c1a2015-10-02 09:19:18 +000052# Unfortunately, we don't have access to the javac options
53# so we cannot get it from the command-line options.
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000054genquery(
55 name = "java_toolchain_content",
dbabkin35df7152018-06-26 05:47:54 -070056 expression = "kind(java_toolchain, deps(@bazel_tools//tools/jdk:current_java_toolchain))",
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000057 opts = ["--output=xml"],
dbabkin35df7152018-06-26 05:47:54 -070058 scope = ["@bazel_tools//tools/jdk:current_java_toolchain"],
Damien Martin-Guillerezb6afdbd2015-05-27 18:29:18 +000059)
60
Damien Martin-Guillereza3bad0c2016-05-03 20:47:51 +000061# Create dummy tools so we can do select to prevent building iOS target on
62# Linux.
63OSX_DUMMY_TARGETS = [
Damien Martin-Guillereza3bad0c2016-05-03 20:47:51 +000064 "src/tools/xcode/realpath/realpath",
65 "src/tools/xcode/stdredirect/StdRedirect.dylib",
66]
67
68[
69 genrule(
70 name = "dummy_darwin_tool_" + name.replace("/", "_"),
71 srcs = [],
72 outs = ["dummy_darwin_tools/" + name],
73 cmd = "touch $@",
74 )
75 for name in OSX_DUMMY_TARGETS
76]
77
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +000078filegroup(
79 name = "darwin_tools",
80 srcs = [
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +000081 "//src/tools/xcode/realpath:realpath",
Chris Parsons5eb86fe2016-07-21 15:24:55 +000082 "//tools/osx:xcode_locator.m",
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +000083 ] + select({
tomlu1a483d42017-11-30 15:08:40 -080084 "//src/conditions:iphonesdk": ["//src/tools/xcode/stdredirect:StdRedirect.dylib"],
Damien Martin-Guillereza3bad0c2016-05-03 20:47:51 +000085 "//conditions:default": [":dummy_darwin_tool_src_tools_xcode_stdredirect_StdRedirect.dylib"],
Damien Martin-Guillerez3d796fe2016-01-11 10:07:57 +000086 }),
87)
88
Damien Martin-Guillereza3bad0c2016-05-03 20:47:51 +000089filegroup(
90 name = "dummy_darwin_tools",
91 srcs = [
92 "dummy_darwin_tool_" + name.replace("/", "_")
93 for name in OSX_DUMMY_TARGETS
94 ],
95)
96
László Csomor5f99fda2017-08-11 09:28:12 +020097py_library(
98 name = "create_embedded_tools_lib",
99 srcs = ["create_embedded_tools_lib.py"],
László Csomor0783b9e2017-08-11 10:28:36 +0200100 visibility = ["//:__pkg__"],
László Csomor5f99fda2017-08-11 09:28:12 +0200101)
102
Philipp Wollermann4c558982017-07-27 18:01:12 +0200103py_binary(
104 name = "create_embedded_tools",
105 srcs = ["create_embedded_tools.py"],
László Csomor5f99fda2017-08-11 09:28:12 +0200106 deps = [":create_embedded_tools_lib"],
Philipp Wollermann4c558982017-07-27 18:01:12 +0200107)
108
iirinaf4604ba2019-01-16 02:38:07 -0800109# The tools Bazel uses to compile Java.
110# TODO(#6316): Gradually remove the targets here.
111JAVA_TOOLS = [
iirinaf4604ba2019-01-16 02:38:07 -0800112 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
iirinaf4604ba2019-01-16 02:38:07 -0800113 "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:embedded_tools",
iirinaba3ebcb2019-03-21 08:02:56 -0700114 "//third_party/jarjar:embedded_build_and_license",
iirinaebdbdcd2019-04-09 04:43:08 -0700115]
iirinaf4604ba2019-01-16 02:38:07 -0800116
Philipp Wollermann4c558982017-07-27 18:01:12 +0200117# TODO(philwo): Clean this up, once a Bazel that can run py_binary and sh_binary
118# in Skylark rules on Windows has been released.
119[filegroup(
120 name = "embedded_tools" + suffix + "_srcs",
iirinaf4604ba2019-01-16 02:38:07 -0800121 srcs = JAVA_TOOLS + [
Tobias Werth218e8f62018-12-13 04:44:35 -0800122 "BUILD.tools",
123 "//tools:embedded_tools_srcs",
124 "//third_party:gpl-srcs",
iirina2d446752019-03-15 09:00:35 -0700125 "//third_party/ijar:embedded_zipper_sources",
126 "//third_party/ijar:zipper",
Tobias Werth218e8f62018-12-13 04:44:35 -0800127 "//third_party/java/j2objc:embedded_tools_srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800128 "//third_party/py/concurrent:srcs",
129 "//third_party/py/gflags:srcs",
130 "//third_party/py/six:srcs",
131 "//src/conditions:embedded_tools",
Tobias Werth218e8f62018-12-13 04:44:35 -0800132 "//src/tools/android/java/com/google/devtools/build/android:embedded_tools",
133 "//src/tools/launcher:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800134 "//src/main/cpp/util:embedded_tools",
135 "//src/main/native:embedded_tools",
136 "//src/main/protobuf:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800137 "//third_party/def_parser:srcs",
Tobias Werth218e8f62018-12-13 04:44:35 -0800138 "//third_party/zlib:embedded_tools",
139 ] + select({
140 "//src/conditions:darwin": [
141 ":darwin_tools",
142 ],
143 "//src/conditions:darwin_x86_64": [
144 ":darwin_tools",
145 ],
146 "//conditions:default": [
147 ":dummy_darwin_tools",
148 ],
149 }) + select({
150 "//src/conditions:windows": [
151 "//src/tools/launcher:launcher",
152 "//third_party/def_parser:def_parser",
153 ],
154 "//conditions:default": [],
Tobias Werth218e8f62018-12-13 04:44:35 -0800155 }) +
156 jdk,
cushon72141a12018-06-11 08:30:15 -0700157 visibility = [
158 "//src/test:__subpackages__", # For integration tests
159 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800160) for suffix, jdk in {
Tobias Wertha87451a2019-01-29 07:03:58 -0800161 "_jdk_allmodules": [":embedded_jdk_allmodules_cached"],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800162 "_jdk_minimal": [":embedded_jdk_minimal_cached"],
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800163 "_dev_jdk": [":embedded_jdk_minimal"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800164 "_nojdk": [],
165}.items()]
cushon72141a12018-06-11 08:30:15 -0700166
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700167rule_size_test(
168 name = "embedded_tools_size_test",
Tobias Werth218e8f62018-12-13 04:44:35 -0800169 src = ":embedded_tools_jdk_allmodules_srcs",
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700170 # WARNING: Only adjust the number in `expect` if you are intentionally
171 # adding or removing embedded tools. Know that the more embedded tools there
172 # are in Bazel, the bigger the binary becomes and the slower Bazel starts.
iirinaebdbdcd2019-04-09 04:43:08 -0700173 expect = 470,
Laszlo Csomord784b5f2018-06-20 02:06:58 -0700174 margin = 5, # percentage
175)
176
cushon72141a12018-06-11 08:30:15 -0700177filegroup(
Tobias Wertha87451a2019-01-29 07:03:58 -0800178 name = "embedded_jdk_allmodules_cached",
cushon72141a12018-06-11 08:30:15 -0700179 srcs = select({
tomlu1a483d42017-11-30 15:08:40 -0800180 "//src/conditions:darwin": [
Philipp Wollermann95048272017-03-17 15:11:58 +0000181 "@openjdk_macos//file",
182 ],
tomlu1a483d42017-11-30 15:08:40 -0800183 "//src/conditions:darwin_x86_64": [
Philipp Wollermann95048272017-03-17 15:11:58 +0000184 "@openjdk_macos//file",
185 ],
tomlu1a483d42017-11-30 15:08:40 -0800186 "//src/conditions:windows": [
pcloudy05c20aa2017-06-29 11:38:30 +0200187 "@openjdk_win//file",
188 ],
Arielle Albonfa7e49f2018-07-31 00:57:54 -0700189 "//src/conditions:linux_aarch64": [
190 "@openjdk_linux_aarch64//file",
191 ],
Philipp Wollermann95048272017-03-17 15:11:58 +0000192 "//conditions:default": [
193 "@openjdk_linux//file",
194 ],
cushon72141a12018-06-11 08:30:15 -0700195 }),
196 visibility = ["//src/test/shell/bazel:__pkg__"],
197)
Damien Martin-Guillerez12997672015-09-03 21:54:08 +0000198
Tobias Werth218e8f62018-12-13 04:44:35 -0800199filegroup(
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800200 name = "embedded_jdk_minimal_cached",
201 srcs = select({
202 "//src/conditions:darwin": [
203 "@openjdk_macos_minimal//file",
204 ],
205 "//src/conditions:darwin_x86_64": [
206 "@openjdk_macos_minimal//file",
207 ],
208 "//src/conditions:windows": [
209 "@openjdk_win_minimal//file",
210 ],
211 "//conditions:default": [
212 "@openjdk_linux_minimal//file",
213 ],
214 }),
215 visibility = ["//src/test/shell/bazel:__pkg__"],
216)
217
218filegroup(
Tobias Werth218e8f62018-12-13 04:44:35 -0800219 name = "embedded_jdk_vanilla",
220 srcs = select({
221 "//src/conditions:darwin": [
222 "@openjdk_macos_vanilla//file",
223 ],
224 "//src/conditions:darwin_x86_64": [
225 "@openjdk_macos_vanilla//file",
226 ],
227 "//src/conditions:windows": [
228 "@openjdk_win_vanilla//file",
229 ],
230 "//src/conditions:linux_aarch64": [
231 "@openjdk_linux_aarch64_vanilla//file",
232 ],
233 "//conditions:default": [
234 "@openjdk_linux_vanilla//file",
235 ],
236 }),
237 visibility = ["//src/test/shell/bazel:__pkg__"],
238)
239
240sh_binary(
241 name = "minimize_jdk",
242 srcs = ["minimize_jdk.sh"],
243)
244
twerth683922c2018-12-20 05:12:08 -0800245filegroup(
Tobias Werth218e8f62018-12-13 04:44:35 -0800246 name = "embedded_jdk_minimal",
twerth683922c2018-12-20 05:12:08 -0800247 srcs = select({
248 "//src/conditions:windows": [
249 ":embedded_jdk_minimal.zip",
250 ],
251 "//conditions:default": [
252 ":embedded_jdk_minimal.tar.gz",
253 ],
254 }),
255)
256
Tobias Wertha87451a2019-01-29 07:03:58 -0800257filegroup(
258 name = "embedded_jdk_allmodules",
259 srcs = select({
260 "//src/conditions:windows": [
261 ":embedded_jdk_allmodules.zip",
262 ],
263 "//conditions:default": [
264 ":embedded_jdk_allmodules.tar.gz",
265 ],
266 }),
Tobias Werth144912e2019-02-01 10:40:20 -0800267 visibility = ["//src/test/shell/bazel:__pkg__"],
Tobias Wertha87451a2019-01-29 07:03:58 -0800268)
269
twerth683922c2018-12-20 05:12:08 -0800270[genrule(
271 name = "embedded_jdk_minimal" + suffix,
Tobias Werth218e8f62018-12-13 04:44:35 -0800272 srcs = [
273 ":embedded_jdk_vanilla",
274 ":minimize_jdk.sh",
275 ":jdeps_modules.golden",
276 ],
twerth683922c2018-12-20 05:12:08 -0800277 outs = ["minimal_jdk" + suffix],
Tobias Werth218e8f62018-12-13 04:44:35 -0800278 cmd = "$(location :minimize_jdk.sh) $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
279 visibility = ["//src/test/shell/bazel:__pkg__"],
twerth683922c2018-12-20 05:12:08 -0800280) for suffix in [
281 ".zip",
282 ".tar.gz",
283]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800284
Tobias Wertha87451a2019-01-29 07:03:58 -0800285[genrule(
286 name = "embedded_jdk_allmodules" + suffix,
287 srcs = [
288 ":embedded_jdk_vanilla",
289 ":minimize_jdk.sh",
290 ":jdeps_modules.golden",
291 ],
292 outs = ["allmodules_jdk" + suffix],
293 cmd = "$(location :minimize_jdk.sh) --allmodules $(location :embedded_jdk_vanilla) $(location :jdeps_modules.golden) $(OUTS)",
294 visibility = ["//src/test/shell/bazel:__pkg__"],
295) for suffix in [
296 ".zip",
297 ".tar.gz",
298]]
299
Philipp Wollermann4c558982017-07-27 18:01:12 +0200300[srcsfile(
301 name = "embedded_tools" + suffix + "_params",
302 srcs = [":embedded_tools" + suffix + "_srcs"],
303 out = "embedded_tools" + suffix + ".params",
304) for suffix in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800305 "_jdk_allmodules",
306 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800307 "_dev_jdk",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700308 "_nojdk",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200309]]
310
Tobias Werth218e8f62018-12-13 04:44:35 -0800311[genrule(
312 name = "embedded_tools" + suffix,
Philipp Wollermann4c558982017-07-27 18:01:12 +0200313 srcs = [
Tobias Werth218e8f62018-12-13 04:44:35 -0800314 ":embedded_tools" + suffix + "_params",
315 ":embedded_tools" + suffix + "_srcs",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200316 ],
Tobias Werth218e8f62018-12-13 04:44:35 -0800317 outs = ["embedded_tools" + suffix + ".zip"],
318 cmd = "$(location :create_embedded_tools) \"$@\" $(location :embedded_tools" + suffix + "_params)",
Philipp Wollermann4c558982017-07-27 18:01:12 +0200319 tools = [":create_embedded_tools"],
Tobias Werth218e8f62018-12-13 04:44:35 -0800320) for suffix in [
321 "_jdk_allmodules",
322 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800323 "_dev_jdk",
Tobias Werth218e8f62018-12-13 04:44:35 -0800324 "_nojdk",
325]]
Philipp Wollermann4c558982017-07-27 18:01:12 +0200326
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000327[genrule(
328 name = "package-zip" + suffix,
Philipp Wollermann95048272017-03-17 15:11:58 +0000329 srcs = ([":embedded_tools" + suffix + ".zip"] if embed else []) + [
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000330 # The script assumes that the embedded tools zip (if exists) is the
Marcel Hlopko324dc442019-06-13 00:05:05 -0700331 # first item here, the deploy jar the second, install base key is the
332 # third, and platforms archive is the fourth.
Han-Wen Nienhuys27760a62015-11-30 17:27:34 +0000333 "//src/main/java/com/google/devtools/build/lib:bazel/BazelServer_deploy.jar",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000334 "install_base_key" + suffix,
Marcel Hlopko324dc442019-06-13 00:05:05 -0700335 ":platforms_archive",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100336 ":libunix",
337 "//src/main/tools:build-runfiles",
338 "//src/main/tools:process-wrapper",
Kristina Chodorowb5ecdab2015-03-16 17:55:04 +0000339 "//src/main/tools:jdk-support",
Philipp Wollermann278814b2016-07-15 14:41:54 +0000340 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000341 "//tools/osx:xcode-locator",
jmmv18a0e232019-02-21 07:34:02 -0800342 ] + select({
343 "//src/conditions:windows": [],
344 "//conditions:default": [
345 "//src/main/tools:daemonize",
346 ],
347 }),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000348 outs = ["package" + suffix + ".zip"],
349 cmd = "$(location :package-bazel.sh) $@ " + ("" if embed else "''") + " $(SRCS)",
350 tools = ["package-bazel.sh"],
351) for suffix, embed in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800352 ("_jdk_allmodules", True),
353 ("_jdk_minimal", True),
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800354 ("_dev_jdk", True),
Damien Martin-Guillerez04d46ab2016-04-13 19:27:56 +0000355 ("_notools", False),
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700356 ("_nojdk", True),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000357]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100358
Marcel Hlopko324dc442019-06-13 00:05:05 -0700359genrule(
360 name = "platforms_archive",
361 srcs = ["@platforms//:srcs"],
362 outs = ["platforms.zip"],
363 cmd = "zip -qX $@ $$(echo $(SRCS) | sort)",
364)
365
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000366[genrule(
367 name = "bazel-bin" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100368 srcs = [
369 "//src/main/cpp:client",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000370 "package-zip" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100371 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000372 outs = ["bazel" + suffix],
Yun Peng6ffb8e42016-04-14 16:55:02 +0000373 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
374 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
375 # need to remove bazel.exe first, so that cat to bazel won't fail.
376 cmd = "rm -f $@; cat $(location //src/main/cpp:client) $(location :package-zip" + suffix + ") > $@ && zip -qA $@",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100377 executable = 1,
378 output_to_bindir = 1,
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000379 visibility = [
380 "//scripts:__pkg__", # For bash completion generation
Damien Martin-Guillerezab13f682015-07-28 08:19:32 +0000381 "//scripts/packages:__pkg__", # For installer generation
Ulf Adams9e24ebd2016-06-23 09:24:57 +0000382 "//src/java:__subpackages__", # For command line reference generation
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000383 "//src/test:__subpackages__", # For integration tests
384 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000385) for suffix in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800386 "_jdk_allmodules",
387 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800388 "_dev_jdk",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000389 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700390 "_nojdk",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000391]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100392
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800393[genrule(
394 name = "bazel-bin" + suffix,
395 srcs = [":bazel-bin" + jdk],
396 outs = ["bazel" + suffix],
Laszlo Csomorf7cdcc82018-12-19 05:07:21 -0800397 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
398 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
399 # need to remove bazel.exe first, so that cat to bazel won't fail.
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800400 cmd = "rm -f $@; cp $(location :bazel-bin" + jdk + ") $@",
Tobias Werth218e8f62018-12-13 04:44:35 -0800401 executable = 1,
402 output_to_bindir = 1,
403 visibility = [
404 "//scripts:__pkg__", # For bash completion generation
405 "//scripts/packages:__pkg__", # For installer generation
406 "//src/java:__subpackages__", # For command line reference generation
407 "//src/test:__subpackages__", # For integration tests
408 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800409) for suffix, jdk in [
410 ("-dev", "_jdk_allmodules"),
411 ("", "_jdk_minimal"),
412]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800413
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000414# Build an executable named `bazel.exe`.
415# Works on all platforms but only makes sense on Windows.
416# Workaround for non-configurability of genrule's `outs` attribute.
417[genrule(
418 name = "bazel-bin" + suffix + ".exe",
419 srcs = [":bazel-bin" + suffix],
420 outs = ["bazel" + suffix + ".exe"],
421 cmd = "cp $(location :bazel-bin" + suffix + ") $@",
422 executable = 1,
423 output_to_bindir = 1,
424 visibility = [
425 "//scripts:__pkg__", # For bash completion generation
426 "//scripts/packages:__pkg__", # For installer generation
427 "//src/test:__subpackages__", # For integration tests
428 ],
429) for suffix in [
430 "",
431 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700432 "_nojdk",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000433]]
434
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000435filegroup(
436 name = "srcs",
437 srcs = glob(["**"]) + [
tomlu1a483d42017-11-30 15:08:40 -0800438 "//src/conditions:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000439 "//src/java_tools/buildjar:srcs",
Benjamin Peterson425f9422018-02-09 14:05:17 -0800440 "//src/java_tools/import_deps_checker:srcs",
ulfjack26ad43d2017-08-28 12:30:44 +0200441 "//src/java_tools/junitrunner:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000442 "//src/java_tools/singlejar:srcs",
443 "//src/main/cpp:srcs",
444 "//src/main/java/com/google/devtools/build/docgen:srcs",
445 "//src/main/java/com/google/devtools/build/lib:srcs",
philwo45743d02019-06-03 06:13:30 -0700446 "//src/main/java/com/google/devtools/build/lib/includescanning:srcs",
steinmanacf55d82019-05-21 09:49:58 -0700447 "//src/main/java/com/google/devtools/build/lib/network:srcs",
philwo62dd1742019-06-04 05:27:37 -0700448 "//src/main/java/com/google/devtools/build/lib/outputfilter:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700449 "//src/main/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000450 "//src/main/java/com/google/devtools/build/skyframe:srcs",
451 "//src/main/java/com/google/devtools/common/options:srcs",
laurentlb535f58d2019-02-18 10:07:15 -0800452 "//src/main/java/com/google/devtools/starlark:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000453 "//src/main/native:srcs",
454 "//src/main/protobuf:srcs",
455 "//src/main/tools:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000456 "//src/test/cpp:srcs",
Googler3e830922017-03-17 17:39:00 +0000457 "//src/test/gen:srcs",
Laszlo Csomor73e971c2017-01-18 13:30:35 +0000458 "//src/test/native:srcs",
laurentlb535f58d2019-02-18 10:07:15 -0800459 "//src/test/starlark:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000460 "//src/test/java/com/google/devtools/build/android:srcs",
461 "//src/test/java/com/google/devtools/build/docgen:srcs",
462 "//src/test/java/com/google/devtools/build/lib:srcs",
ruperts9f959c52018-01-04 11:54:02 -0800463 "//src/test/java/com/google/devtools/build/lib/shell:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700464 "//src/test/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000465 "//src/test/java/com/google/devtools/build/skyframe:srcs",
466 "//src/test/java/com/google/devtools/common/options:srcs",
Laszlo Csomore78ad832017-06-09 10:45:27 -0400467 "//src/test/py/bazel:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000468 "//src/test/shell:srcs",
ishikhman32268802019-04-25 03:47:24 -0700469 "//src/test/testdata/test_tls_certificate",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000470 "//src/tools/android/java/com/google/devtools/build/android:srcs",
olaolaa5e36ee2018-06-15 08:16:44 -0700471 "//src/tools/execlog:srcs",
Googler1950bf92018-08-28 15:40:05 -0700472 "//src/tools/workspacelog:srcs",
Yun Peng09dd8c02017-07-21 15:57:05 +0200473 "//src/tools/launcher:srcs",
carmib12892e2018-03-21 14:57:55 -0700474 "//src/tools/package_printer/java/com/google/devtools/build/packageprinter:srcs",
cparsons59373d12019-02-06 13:29:47 -0800475 "//src/tools/skylark/java/com/google/devtools/skylark/common:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000476 "//src/tools/xcode/realpath:srcs",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000477 "//src/tools/singlejar:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000478 "//src/tools/xcode/stdredirect:srcs",
olaola2f3d7df2017-12-05 12:41:19 -0800479 "//src/tools/remote:srcs",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000480 "//tools/osx:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000481 ],
482 visibility = ["//:__pkg__"],
483)
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000484
485genrule(
486 name = "derived_java_srcs",
487 srcs = [
488 "//src/main/protobuf:dist_jars",
489 "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:dist_jars",
Googler7e703ec2018-07-16 08:48:39 -0700490 "//src/main/java/com/google/devtools/build/lib/bazel/debug:dist_jars",
Googler72d62bc2018-05-18 06:59:57 -0700491 "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:dist_jars",
cparsons5ece6502019-04-17 10:19:41 -0700492 "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:dist_jars",
Jakob Buchgraber55c5a602017-06-08 23:11:21 +0200493 "@googleapis//:dist_jars",
Ola Rozenfeld930119a2018-08-10 11:04:44 -0700494 "@remoteapis//:dist_jars",
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000495 ],
496 outs = ["derived_java_srcs.zip"],
Klaus Aehlig86c9d942017-06-30 13:41:19 +0200497 cmd = "$(location :combine_derived_java_srcs.sh) $(JAVABASE) $@ $(SRCS)",
cushon849df362018-05-14 01:51:45 -0700498 toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000499 tools = ["combine_derived_java_srcs.sh"],
500 visibility = ["//:__pkg__"],
501)
L?szl? Csomor088f6112017-09-19 17:12:32 +0200502
503test_suite(
504 name = "windows_tests",
505 tags = [
506 "-no_windows",
507 "-slow",
508 ],
509 visibility = ["//visibility:private"],
510)
511
512test_suite(
513 name = "all_windows_tests",
514 tests = [
515 ":windows_tests",
516 "//src/test/cpp:all_windows_tests",
517 "//src/test/java/com/google/devtools/build/android:all_windows_tests",
518 "//src/test/java/com/google/devtools/build/docgen:all_windows_tests",
519 "//src/test/java/com/google/devtools/build/lib:all_windows_tests",
520 "//src/test/java/com/google/devtools/build/skyframe:all_windows_tests",
521 "//src/test/java/com/google/devtools/common/options:all_windows_tests",
522 "//src/test/native:all_windows_tests",
523 "//src/test/py/bazel:all_windows_tests",
Laszlo Csomora7f202c2018-04-26 07:39:41 -0700524 "//src/test/shell:all_windows_tests",
L?szl? Csomor088f6112017-09-19 17:12:32 +0200525 "//src/tools/launcher:all_windows_tests",
Laszlo Csomor2716b032018-10-26 05:23:34 -0700526 "//src/tools/singlejar:all_windows_tests",
László Csomorceefd572017-09-21 16:02:25 +0200527 "//third_party/def_parser:all_windows_tests",
Laszlo Csomordf16c772018-08-09 23:36:39 -0700528 "//tools:all_windows_tests",
L?szl? Csomor088f6112017-09-19 17:12:32 +0200529 ],
530)
tomlu1a483d42017-11-30 15:08:40 -0800531
532# config_setting alias left here because bazel-only third_party code is pointing to it
533alias(
534 name = "windows",
535 actual = "//src/conditions:windows",
536 visibility = ["//visibility:public"],
537)
iirina7aace9c2019-03-18 05:41:55 -0700538
539sh_binary(
540 name = "zip_files",
541 srcs = ["zip_files.sh"],
542 visibility = ["//visibility:public"],
543)
544
545sh_binary(
546 name = "merge_zip_files",
547 srcs = ["merge_zip_files.sh"],
548 visibility = ["//visibility:public"],
549)
iirina8df893a2019-03-25 09:34:51 -0700550
iirina93e80732019-04-16 02:07:40 -0700551JAVA_TOOLS_DEPLOY_JARS = [
552 "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
553 "//src/java_tools/buildjar:VanillaJavaBuilder_deploy.jar",
554 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass:GenClass_deploy.jar",
555 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac:turbine_deploy.jar",
556 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_binary_deploy.jar",
557 "//src/java_tools/junitrunner/java/com/google/testing/coverage:JacocoCoverage_jarjar_deploy.jar",
558 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:ExperimentalRunner_deploy.jar",
559 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
560 "//third_party/jarjar:jarjar_command_deploy.jar",
561] + select({
562 "//src/conditions:arm": ["//src/java_tools/singlejar/java/com/google/devtools/build/singlejar:bazel-singlejar_deploy.jar"],
563 "//conditions:default": [],
564})
565
iirina0eec6932019-06-12 07:48:22 -0700566JAVA_VERSIONS = ("9", "10", "11", "12")
iirina8df893a2019-03-25 09:34:51 -0700567
iirinaa6e92602019-05-13 06:20:12 -0700568[
569 genrule(
570 name = "jars_java_tools_java" + java_version + "_zip",
571 srcs = JAVA_TOOLS_DEPLOY_JARS + [
572 "@java_tools_langtools_javac" + java_version + "//:jdk_compiler_jar",
573 "@java_tools_langtools_javac" + java_version + "//:java_compiler_jar",
574 "@java_tools_langtools_javac" + java_version + "//:javac_jar",
575 ],
576 outs = ["jars_java_tools_java" + java_version + ".zip"],
577 cmd = "zip -qjX $@ $$(echo $(SRCS) | sort)",
578 visibility = ["//visibility:private"],
579 )
580 for java_version in JAVA_VERSIONS
581]
iirina93e80732019-04-16 02:07:40 -0700582
583[
584 genrule(
585 name = "java_tools_dist_java" + java_version,
586 srcs = [
587 "//src/java_tools/buildjar:srcs",
588 "//src/java_tools/junitrunner:srcs",
589 "//src/java_tools/singlejar:srcs",
590 "//src/tools/singlejar:embedded_java_tools",
Lukacs T. Berki6362c2d2019-04-26 07:25:29 -0700591 "//third_party/checker_framework_dataflow:srcs",
592 "//third_party/checker_framework_javacutil:srcs",
iirina93e80732019-04-16 02:07:40 -0700593 "//third_party/jarjar:srcs",
594 "//third_party/ijar:transitive_sources",
iirina6403fff2019-05-14 08:03:44 -0700595 "//third_party/java/jacoco:transitive_sources",
596 "//third_party/java/proguard:srcs",
iirina93e80732019-04-16 02:07:40 -0700597 "@java_tools_langtools_javac" + java_version + "//:srcs",
598 ],
599 outs = ["java_tools_dist_javac" + java_version + ".zip"],
600 cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
601 output_to_bindir = 1,
iirina6403fff2019-05-14 08:03:44 -0700602 visibility = ["//src/test/shell/bazel:__pkg__"],
iirina93e80732019-04-16 02:07:40 -0700603 )
604 for java_version in JAVA_VERSIONS
605]
606
607[
608 # Targets used by the java_tools_binaries Buildkite pipeline to build the
609 # java_tools_dist_java* zips and upload them to a tmp directory in GCS.
610 sh_binary(
611 name = "upload_java_tools_dist_java" + java_version,
612 srcs = ["upload_java_tools.sh"],
613 args = [
614 "--java_tools_zip",
615 "src/java_tools_dist_javac" + java_version + ".zip",
616 "--gcs_java_tools_dir",
iirinadead8522019-04-17 00:41:54 -0700617 "tmp/sources",
iirina93e80732019-04-16 02:07:40 -0700618 "--java_version",
619 java_version,
620 "--platform",
621 ] + select({
622 "//src/conditions:darwin": ["darwin"],
623 "//src/conditions:darwin_x86_64": ["darwin_x86_64"],
624 "//src/conditions:windows": ["windows"],
625 "//src/conditions:linux_x86_64": ["linux"],
626 "//conditions:default": ["unknown"],
627 }),
628 data = [":java_tools_dist_java" + java_version],
629 deps = ["@bazel_tools//tools/bash/runfiles"],
630 )
631 for java_version in JAVA_VERSIONS
632]
633
iirina0eec6932019-06-12 07:48:22 -0700634[
635 # The java_tools releases can have BUILD files that vary depending on the
636 # javac version they embed. Currently the only difference is in the
637 # java_toolchain source version which has to be 12 for javac 12 to be able
638 # to build new Java 12 features.
639 genrule(
640 name = "create_java_tools_build_java" + java_version,
641 srcs = ["//tools/jdk:BUILD.java_tools"],
642 outs = ["remote_java_tools_java" + java_version + "/BUILD"],
643 cmd = "sed 's/JAVA_LANGUAGE_LEVEL/" + java_version + "/g' $< > $@",
644 )
645 for java_version in JAVA_VERSIONS
646]
iirinafbeb0c92019-04-25 07:34:14 -0700647
iirina0eec6932019-06-12 07:48:22 -0700648[
649 genrule(
650 name = "java_tools_java" + java_version + "_build_zip",
651 srcs = ["remote_java_tools_java" + java_version + "/BUILD"],
652 outs = ["java_tools_java_" + java_version + "_build.zip"],
653 cmd = "zip -jX $@ $<",
654 )
655 for java_version in JAVA_VERSIONS
656]
iirinafbeb0c92019-04-25 07:34:14 -0700657
iirina8df893a2019-03-25 09:34:51 -0700658# Builds the remote Java tools archive. Not embedded or used in Bazel, but used
659# by the Java tools release process.
iirina93e80732019-04-16 02:07:40 -0700660[
661 genrule(
iirinafbeb0c92019-04-25 07:34:14 -0700662 name = "java_tools_java" + java_version + "_no_build_zip",
iirina93e80732019-04-16 02:07:40 -0700663 srcs = [
664 ":jars_java_tools_java" + java_version + ".zip",
665 "//src/tools/singlejar:singlejar_transitive_zip",
666 "//third_party/ijar:ijar_transitive_zip",
iirina46d376d2019-04-25 08:46:16 -0700667 "//third_party/java/jacoco:jacoco_jars_zip",
iirinaf50b8a42019-05-13 07:00:26 -0700668 "//third_party/java/proguard:proguard_zip",
iirina93e80732019-04-16 02:07:40 -0700669 ],
iirinafbeb0c92019-04-25 07:34:14 -0700670 outs = ["java_tools_java" + java_version + "_no_build.zip"],
iirina93e80732019-04-16 02:07:40 -0700671 cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
672 output_to_bindir = 1,
673 tools = ["//src:merge_zip_files"],
674 visibility = ["//src/test/shell/bazel:__pkg__"],
675 )
676 for java_version in JAVA_VERSIONS
677]
678
679[
iirinafbeb0c92019-04-25 07:34:14 -0700680 genrule(
681 name = "java_tools_java" + java_version + "_zip",
682 srcs = [
683 "java_tools_java" + java_version + "_no_build.zip",
iirina0eec6932019-06-12 07:48:22 -0700684 "java_tools_java_" + java_version + "_build.zip",
iirinafbeb0c92019-04-25 07:34:14 -0700685 ],
686 outs = ["java_tools_java" + java_version + ".zip"],
687 cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
688 output_to_bindir = 1,
689 tools = ["//src:merge_zip_files"],
690 visibility = ["//src/test/shell/bazel:__pkg__"],
691 )
692 for java_version in JAVA_VERSIONS
693]
694
695[
iirina93e80732019-04-16 02:07:40 -0700696 # Targets used by the java_tools_binaries Buildkite pipeline to build the
697 # java_tools_java* zips and upload them to a tmp directory in GCS.
698 sh_binary(
699 name = "upload_java_tools_java" + java_version,
700 srcs = ["upload_java_tools.sh"],
701 args = [
iirina93e80732019-04-16 02:07:40 -0700702 "--gcs_java_tools_dir",
703 "tmp/build",
704 "--java_version",
705 java_version,
706 "--platform",
707 ] + select({
708 "//src/conditions:darwin": ["darwin"],
709 "//src/conditions:darwin_x86_64": ["darwin_x86_64"],
710 "//src/conditions:windows": ["windows"],
711 "//src/conditions:linux_x86_64": ["linux"],
712 "//conditions:default": ["unknown"],
713 }),
714 data = [":java_tools_java" + java_version + "_zip"],
715 deps = ["@bazel_tools//tools/bash/runfiles"],
716 )
717 for java_version in JAVA_VERSIONS
718]
iirina8df893a2019-03-25 09:34:51 -0700719
720# Part of the Java tools remote archive. Not embedded or used in Bazel.
721genrule(
722 name = "zlib_zip",
723 srcs = ["//third_party/zlib:embedded_tools"],
724 outs = ["zlib.zip"],
725 cmd = "$(location //src:zip_files) zlib $@ $(SRCS)",
726 tools = ["//src:zip_files"],
iirinae4ac6162019-04-08 01:37:20 -0700727 visibility = [
728 "//src/tools/singlejar:__pkg__",
729 "//third_party/ijar:__pkg__",
730 ],
iirina8df893a2019-03-25 09:34:51 -0700731)