blob: c20d6505259a19586812d14c4da63cabd1311e1f [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
331 # first item here, the deploy jar the second and install base key is the
332 # third
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,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100335 ":libunix",
336 "//src/main/tools:build-runfiles",
337 "//src/main/tools:process-wrapper",
Kristina Chodorowb5ecdab2015-03-16 17:55:04 +0000338 "//src/main/tools:jdk-support",
Philipp Wollermann278814b2016-07-15 14:41:54 +0000339 "//src/main/tools:linux-sandbox",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000340 "//tools/osx:xcode-locator",
jmmv18a0e232019-02-21 07:34:02 -0800341 ] + select({
342 "//src/conditions:windows": [],
343 "//conditions:default": [
344 "//src/main/tools:daemonize",
345 ],
346 }),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000347 outs = ["package" + suffix + ".zip"],
348 cmd = "$(location :package-bazel.sh) $@ " + ("" if embed else "''") + " $(SRCS)",
349 tools = ["package-bazel.sh"],
350) for suffix, embed in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800351 ("_jdk_allmodules", True),
352 ("_jdk_minimal", True),
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800353 ("_dev_jdk", True),
Damien Martin-Guillerez04d46ab2016-04-13 19:27:56 +0000354 ("_notools", False),
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700355 ("_nojdk", True),
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000356]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100357
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000358[genrule(
359 name = "bazel-bin" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100360 srcs = [
361 "//src/main/cpp:client",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000362 "package-zip" + suffix,
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100363 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000364 outs = ["bazel" + suffix],
Yun Peng6ffb8e42016-04-14 16:55:02 +0000365 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
366 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
367 # need to remove bazel.exe first, so that cat to bazel won't fail.
368 cmd = "rm -f $@; cat $(location //src/main/cpp:client) $(location :package-zip" + suffix + ") > $@ && zip -qA $@",
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100369 executable = 1,
370 output_to_bindir = 1,
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000371 visibility = [
372 "//scripts:__pkg__", # For bash completion generation
Damien Martin-Guillerezab13f682015-07-28 08:19:32 +0000373 "//scripts/packages:__pkg__", # For installer generation
Ulf Adams9e24ebd2016-06-23 09:24:57 +0000374 "//src/java:__subpackages__", # For command line reference generation
Damien Martin-Guillerez5f9c6ba2015-04-09 21:10:33 +0000375 "//src/test:__subpackages__", # For integration tests
376 ],
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000377) for suffix in [
Tobias Werth218e8f62018-12-13 04:44:35 -0800378 "_jdk_allmodules",
379 "_jdk_minimal",
Tobias Werth5d2d06c2019-01-18 05:17:26 -0800380 "_dev_jdk",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000381 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700382 "_nojdk",
Lukacs Berkieb851fe2015-10-19 10:52:31 +0000383]]
Han-Wen Nienhuysd08b27f2015-02-25 16:45:20 +0100384
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800385[genrule(
386 name = "bazel-bin" + suffix,
387 srcs = [":bazel-bin" + jdk],
388 outs = ["bazel" + suffix],
Laszlo Csomorf7cdcc82018-12-19 05:07:21 -0800389 # In msys, a file path without .exe suffix(say foo), refers to a file with .exe
390 # suffix(say foo.exe), if foo.exe exists and foo doesn't. So, on windows, we
391 # need to remove bazel.exe first, so that cat to bazel won't fail.
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800392 cmd = "rm -f $@; cp $(location :bazel-bin" + jdk + ") $@",
Tobias Werth218e8f62018-12-13 04:44:35 -0800393 executable = 1,
394 output_to_bindir = 1,
395 visibility = [
396 "//scripts:__pkg__", # For bash completion generation
397 "//scripts/packages:__pkg__", # For installer generation
398 "//src/java:__subpackages__", # For command line reference generation
399 "//src/test:__subpackages__", # For integration tests
400 ],
Tobias Werthfbf8fb92019-01-09 11:22:11 -0800401) for suffix, jdk in [
402 ("-dev", "_jdk_allmodules"),
403 ("", "_jdk_minimal"),
404]]
Tobias Werth218e8f62018-12-13 04:44:35 -0800405
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000406# Build an executable named `bazel.exe`.
407# Works on all platforms but only makes sense on Windows.
408# Workaround for non-configurability of genrule's `outs` attribute.
409[genrule(
410 name = "bazel-bin" + suffix + ".exe",
411 srcs = [":bazel-bin" + suffix],
412 outs = ["bazel" + suffix + ".exe"],
413 cmd = "cp $(location :bazel-bin" + suffix + ") $@",
414 executable = 1,
415 output_to_bindir = 1,
416 visibility = [
417 "//scripts:__pkg__", # For bash completion generation
418 "//scripts/packages:__pkg__", # For installer generation
419 "//src/test:__subpackages__", # For integration tests
420 ],
421) for suffix in [
422 "",
423 "_notools",
Liam Miller-Cushon7c49bd92018-06-18 09:29:52 -0700424 "_nojdk",
Dmitry Lomov9d40a602016-02-15 16:15:03 +0000425]]
426
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000427filegroup(
428 name = "srcs",
429 srcs = glob(["**"]) + [
tomlu1a483d42017-11-30 15:08:40 -0800430 "//src/conditions:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000431 "//src/java_tools/buildjar:srcs",
Benjamin Peterson425f9422018-02-09 14:05:17 -0800432 "//src/java_tools/import_deps_checker:srcs",
ulfjack26ad43d2017-08-28 12:30:44 +0200433 "//src/java_tools/junitrunner:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000434 "//src/java_tools/singlejar:srcs",
435 "//src/main/cpp:srcs",
436 "//src/main/java/com/google/devtools/build/docgen:srcs",
437 "//src/main/java/com/google/devtools/build/lib:srcs",
philwo45743d02019-06-03 06:13:30 -0700438 "//src/main/java/com/google/devtools/build/lib/includescanning:srcs",
steinmanacf55d82019-05-21 09:49:58 -0700439 "//src/main/java/com/google/devtools/build/lib/network:srcs",
philwo62dd1742019-06-04 05:27:37 -0700440 "//src/main/java/com/google/devtools/build/lib/outputfilter:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700441 "//src/main/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000442 "//src/main/java/com/google/devtools/build/skyframe:srcs",
443 "//src/main/java/com/google/devtools/common/options:srcs",
laurentlb535f58d2019-02-18 10:07:15 -0800444 "//src/main/java/com/google/devtools/starlark:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000445 "//src/main/native:srcs",
446 "//src/main/protobuf:srcs",
447 "//src/main/tools:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000448 "//src/test/cpp:srcs",
Googler3e830922017-03-17 17:39:00 +0000449 "//src/test/gen:srcs",
Laszlo Csomor73e971c2017-01-18 13:30:35 +0000450 "//src/test/native:srcs",
laurentlb535f58d2019-02-18 10:07:15 -0800451 "//src/test/starlark:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000452 "//src/test/java/com/google/devtools/build/android:srcs",
453 "//src/test/java/com/google/devtools/build/docgen:srcs",
454 "//src/test/java/com/google/devtools/build/lib:srcs",
ruperts9f959c52018-01-04 11:54:02 -0800455 "//src/test/java/com/google/devtools/build/lib/shell:srcs",
cparsons5d85e752018-06-26 13:47:28 -0700456 "//src/test/java/com/google/devtools/build/skydoc:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000457 "//src/test/java/com/google/devtools/build/skyframe:srcs",
458 "//src/test/java/com/google/devtools/common/options:srcs",
Laszlo Csomore78ad832017-06-09 10:45:27 -0400459 "//src/test/py/bazel:srcs",
Damien Martin-Guillerez7d265e02016-07-01 13:33:48 +0000460 "//src/test/shell:srcs",
ishikhman32268802019-04-25 03:47:24 -0700461 "//src/test/testdata/test_tls_certificate",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000462 "//src/tools/android/java/com/google/devtools/build/android:srcs",
olaolaa5e36ee2018-06-15 08:16:44 -0700463 "//src/tools/execlog:srcs",
Googler1950bf92018-08-28 15:40:05 -0700464 "//src/tools/workspacelog:srcs",
Yun Peng09dd8c02017-07-21 15:57:05 +0200465 "//src/tools/launcher:srcs",
carmib12892e2018-03-21 14:57:55 -0700466 "//src/tools/package_printer/java/com/google/devtools/build/packageprinter:srcs",
cparsons59373d12019-02-06 13:29:47 -0800467 "//src/tools/skylark/java/com/google/devtools/skylark/common:srcs",
fzaiser141cb882017-08-22 18:52:48 +0200468 "//src/tools/skylark/java/com/google/devtools/skylark/skylint:srcs",
469 "//src/tools/skylark/javatests/com/google/devtools/skylark/skylint:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000470 "//src/tools/xcode/realpath:srcs",
Sasha Smundak06a12e52016-07-15 17:35:51 +0000471 "//src/tools/singlejar:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000472 "//src/tools/xcode/stdredirect:srcs",
olaola2f3d7df2017-12-05 12:41:19 -0800473 "//src/tools/remote:srcs",
Chris Parsons5eb86fe2016-07-21 15:24:55 +0000474 "//tools/osx:srcs",
Damien Martin-Guillerezde54bca2016-02-29 10:49:43 +0000475 ],
476 visibility = ["//:__pkg__"],
477)
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000478
479genrule(
480 name = "derived_java_srcs",
481 srcs = [
482 "//src/main/protobuf:dist_jars",
483 "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:dist_jars",
Googler7e703ec2018-07-16 08:48:39 -0700484 "//src/main/java/com/google/devtools/build/lib/bazel/debug:dist_jars",
Googler72d62bc2018-05-18 06:59:57 -0700485 "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:dist_jars",
cparsons5ece6502019-04-17 10:19:41 -0700486 "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:dist_jars",
Jakob Buchgraber55c5a602017-06-08 23:11:21 +0200487 "@googleapis//:dist_jars",
Ola Rozenfeld930119a2018-08-10 11:04:44 -0700488 "@remoteapis//:dist_jars",
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000489 ],
490 outs = ["derived_java_srcs.zip"],
Klaus Aehlig86c9d942017-06-30 13:41:19 +0200491 cmd = "$(location :combine_derived_java_srcs.sh) $(JAVABASE) $@ $(SRCS)",
cushon849df362018-05-14 01:51:45 -0700492 toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
Klaus Aehlig4ca79d42016-10-22 07:59:41 +0000493 tools = ["combine_derived_java_srcs.sh"],
494 visibility = ["//:__pkg__"],
495)
L?szl? Csomor088f6112017-09-19 17:12:32 +0200496
497test_suite(
498 name = "windows_tests",
499 tags = [
500 "-no_windows",
501 "-slow",
502 ],
503 visibility = ["//visibility:private"],
504)
505
506test_suite(
507 name = "all_windows_tests",
508 tests = [
509 ":windows_tests",
510 "//src/test/cpp:all_windows_tests",
511 "//src/test/java/com/google/devtools/build/android:all_windows_tests",
512 "//src/test/java/com/google/devtools/build/docgen:all_windows_tests",
513 "//src/test/java/com/google/devtools/build/lib:all_windows_tests",
514 "//src/test/java/com/google/devtools/build/skyframe:all_windows_tests",
515 "//src/test/java/com/google/devtools/common/options:all_windows_tests",
516 "//src/test/native:all_windows_tests",
517 "//src/test/py/bazel:all_windows_tests",
Laszlo Csomora7f202c2018-04-26 07:39:41 -0700518 "//src/test/shell:all_windows_tests",
L?szl? Csomor088f6112017-09-19 17:12:32 +0200519 "//src/tools/launcher:all_windows_tests",
Laszlo Csomor2716b032018-10-26 05:23:34 -0700520 "//src/tools/singlejar:all_windows_tests",
László Csomorceefd572017-09-21 16:02:25 +0200521 "//third_party/def_parser:all_windows_tests",
Laszlo Csomordf16c772018-08-09 23:36:39 -0700522 "//tools:all_windows_tests",
L?szl? Csomor088f6112017-09-19 17:12:32 +0200523 ],
524)
tomlu1a483d42017-11-30 15:08:40 -0800525
526# config_setting alias left here because bazel-only third_party code is pointing to it
527alias(
528 name = "windows",
529 actual = "//src/conditions:windows",
530 visibility = ["//visibility:public"],
531)
iirina7aace9c2019-03-18 05:41:55 -0700532
533sh_binary(
534 name = "zip_files",
535 srcs = ["zip_files.sh"],
536 visibility = ["//visibility:public"],
537)
538
539sh_binary(
540 name = "merge_zip_files",
541 srcs = ["merge_zip_files.sh"],
542 visibility = ["//visibility:public"],
543)
iirina8df893a2019-03-25 09:34:51 -0700544
iirina93e80732019-04-16 02:07:40 -0700545JAVA_TOOLS_DEPLOY_JARS = [
546 "//src/java_tools/buildjar:JavaBuilder_deploy.jar",
547 "//src/java_tools/buildjar:VanillaJavaBuilder_deploy.jar",
548 "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass:GenClass_deploy.jar",
549 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac:turbine_deploy.jar",
550 "//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_binary_deploy.jar",
551 "//src/java_tools/junitrunner/java/com/google/testing/coverage:JacocoCoverage_jarjar_deploy.jar",
552 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:ExperimentalRunner_deploy.jar",
553 "//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
554 "//third_party/jarjar:jarjar_command_deploy.jar",
555] + select({
556 "//src/conditions:arm": ["//src/java_tools/singlejar/java/com/google/devtools/build/singlejar:bazel-singlejar_deploy.jar"],
557 "//conditions:default": [],
558})
559
iirinaa6e92602019-05-13 06:20:12 -0700560JAVA_VERSIONS = ("9", "10", "11")
iirina8df893a2019-03-25 09:34:51 -0700561
iirinaa6e92602019-05-13 06:20:12 -0700562[
563 genrule(
564 name = "jars_java_tools_java" + java_version + "_zip",
565 srcs = JAVA_TOOLS_DEPLOY_JARS + [
566 "@java_tools_langtools_javac" + java_version + "//:jdk_compiler_jar",
567 "@java_tools_langtools_javac" + java_version + "//:java_compiler_jar",
568 "@java_tools_langtools_javac" + java_version + "//:javac_jar",
569 ],
570 outs = ["jars_java_tools_java" + java_version + ".zip"],
571 cmd = "zip -qjX $@ $$(echo $(SRCS) | sort)",
572 visibility = ["//visibility:private"],
573 )
574 for java_version in JAVA_VERSIONS
575]
iirina93e80732019-04-16 02:07:40 -0700576
577[
578 genrule(
579 name = "java_tools_dist_java" + java_version,
580 srcs = [
581 "//src/java_tools/buildjar:srcs",
582 "//src/java_tools/junitrunner:srcs",
583 "//src/java_tools/singlejar:srcs",
584 "//src/tools/singlejar:embedded_java_tools",
Lukacs T. Berki6362c2d2019-04-26 07:25:29 -0700585 "//third_party/checker_framework_dataflow:srcs",
586 "//third_party/checker_framework_javacutil:srcs",
iirina93e80732019-04-16 02:07:40 -0700587 "//third_party/jarjar:srcs",
588 "//third_party/ijar:transitive_sources",
iirina6403fff2019-05-14 08:03:44 -0700589 "//third_party/java/jacoco:transitive_sources",
590 "//third_party/java/proguard:srcs",
iirina93e80732019-04-16 02:07:40 -0700591 "@java_tools_langtools_javac" + java_version + "//:srcs",
592 ],
593 outs = ["java_tools_dist_javac" + java_version + ".zip"],
594 cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
595 output_to_bindir = 1,
iirina6403fff2019-05-14 08:03:44 -0700596 visibility = ["//src/test/shell/bazel:__pkg__"],
iirina93e80732019-04-16 02:07:40 -0700597 )
598 for java_version in JAVA_VERSIONS
599]
600
601[
602 # Targets used by the java_tools_binaries Buildkite pipeline to build the
603 # java_tools_dist_java* zips and upload them to a tmp directory in GCS.
604 sh_binary(
605 name = "upload_java_tools_dist_java" + java_version,
606 srcs = ["upload_java_tools.sh"],
607 args = [
608 "--java_tools_zip",
609 "src/java_tools_dist_javac" + java_version + ".zip",
610 "--gcs_java_tools_dir",
iirinadead8522019-04-17 00:41:54 -0700611 "tmp/sources",
iirina93e80732019-04-16 02:07:40 -0700612 "--java_version",
613 java_version,
614 "--platform",
615 ] + select({
616 "//src/conditions:darwin": ["darwin"],
617 "//src/conditions:darwin_x86_64": ["darwin_x86_64"],
618 "//src/conditions:windows": ["windows"],
619 "//src/conditions:linux_x86_64": ["linux"],
620 "//conditions:default": ["unknown"],
621 }),
622 data = [":java_tools_dist_java" + java_version],
623 deps = ["@bazel_tools//tools/bash/runfiles"],
624 )
625 for java_version in JAVA_VERSIONS
626]
627
iirinafbeb0c92019-04-25 07:34:14 -0700628genrule(
629 name = "create_java_tools_build",
630 srcs = ["//tools/jdk:BUILD.java_tools"],
631 outs = ["remote_java_tools/BUILD"],
632 cmd = "cp $< $@",
633)
634
635genrule(
636 name = "java_tools_build_zip",
637 srcs = ["remote_java_tools/BUILD"],
638 outs = ["java_tools_build.zip"],
639 cmd = "zip -jX $@ $<",
640)
641
iirina8df893a2019-03-25 09:34:51 -0700642# Builds the remote Java tools archive. Not embedded or used in Bazel, but used
643# by the Java tools release process.
iirina93e80732019-04-16 02:07:40 -0700644[
645 genrule(
iirinafbeb0c92019-04-25 07:34:14 -0700646 name = "java_tools_java" + java_version + "_no_build_zip",
iirina93e80732019-04-16 02:07:40 -0700647 srcs = [
648 ":jars_java_tools_java" + java_version + ".zip",
649 "//src/tools/singlejar:singlejar_transitive_zip",
650 "//third_party/ijar:ijar_transitive_zip",
iirina46d376d2019-04-25 08:46:16 -0700651 "//third_party/java/jacoco:jacoco_jars_zip",
iirinaf50b8a42019-05-13 07:00:26 -0700652 "//third_party/java/proguard:proguard_zip",
iirina93e80732019-04-16 02:07:40 -0700653 ],
iirinafbeb0c92019-04-25 07:34:14 -0700654 outs = ["java_tools_java" + java_version + "_no_build.zip"],
iirina93e80732019-04-16 02:07:40 -0700655 cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
656 output_to_bindir = 1,
657 tools = ["//src:merge_zip_files"],
658 visibility = ["//src/test/shell/bazel:__pkg__"],
659 )
660 for java_version in JAVA_VERSIONS
661]
662
663[
iirinafbeb0c92019-04-25 07:34:14 -0700664 genrule(
665 name = "java_tools_java" + java_version + "_zip",
666 srcs = [
667 "java_tools_java" + java_version + "_no_build.zip",
668 "java_tools_build.zip",
669 ],
670 outs = ["java_tools_java" + java_version + ".zip"],
671 cmd = "$(location //src:merge_zip_files) - $@ $(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[
iirina93e80732019-04-16 02:07:40 -0700680 # Targets used by the java_tools_binaries Buildkite pipeline to build the
681 # java_tools_java* zips and upload them to a tmp directory in GCS.
682 sh_binary(
683 name = "upload_java_tools_java" + java_version,
684 srcs = ["upload_java_tools.sh"],
685 args = [
iirina93e80732019-04-16 02:07:40 -0700686 "--gcs_java_tools_dir",
687 "tmp/build",
688 "--java_version",
689 java_version,
690 "--platform",
691 ] + select({
692 "//src/conditions:darwin": ["darwin"],
693 "//src/conditions:darwin_x86_64": ["darwin_x86_64"],
694 "//src/conditions:windows": ["windows"],
695 "//src/conditions:linux_x86_64": ["linux"],
696 "//conditions:default": ["unknown"],
697 }),
698 data = [":java_tools_java" + java_version + "_zip"],
699 deps = ["@bazel_tools//tools/bash/runfiles"],
700 )
701 for java_version in JAVA_VERSIONS
702]
iirina8df893a2019-03-25 09:34:51 -0700703
704# Part of the Java tools remote archive. Not embedded or used in Bazel.
705genrule(
706 name = "zlib_zip",
707 srcs = ["//third_party/zlib:embedded_tools"],
708 outs = ["zlib.zip"],
709 cmd = "$(location //src:zip_files) zlib $@ $(SRCS)",
710 tools = ["//src:zip_files"],
iirinae4ac6162019-04-08 01:37:20 -0700711 visibility = [
712 "//src/tools/singlejar:__pkg__",
713 "//third_party/ijar:__pkg__",
714 ],
iirina8df893a2019-03-25 09:34:51 -0700715)