aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/BUILD
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2017-07-27 18:01:12 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-07-28 10:44:44 +0200
commit4c55898e71d30b32090bef31b43e408d942a24f6 (patch)
treef7a510e7690536ab4721a46d7313daa5495990ad /src/BUILD
parent73527c3be5e40ff5a2f868440f0c4d3a940abec7 (diff)
Replace create_embedded_tools.sh with a faster Python version.
This is functionally equivalent, but ~30x faster on Windows, ~2x faster on macOS and ~1.5x faster on Linux. RELNOTES: None. Change-Id: Ib4a7e10400a3955e47772425acfce2d9530de462 PiperOrigin-RevId: 163346634
Diffstat (limited to 'src/BUILD')
-rw-r--r--src/BUILD51
1 files changed, 44 insertions, 7 deletions
diff --git a/src/BUILD b/src/BUILD
index e6d9c06bf0..581b88bc91 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -1,5 +1,7 @@
# Packaging
+load(":embedded_tools.bzl", "srcsfile")
+
md5_cmd = "set -e -o pipefail && cat $(SRCS) | sort | %s | awk '{ print $$1; }' > $@"
# TODO(bazel-team): find a better way to handle dylib extensions.
@@ -29,7 +31,7 @@ filegroup(
"//src/main/tools:process-wrapper",
"//src/main/tools:linux-sandbox",
"//tools/osx:xcode-locator",
- ] + embedded_tools,
+ ] + embedded_tools_target,
outs = ["install_base_key" + suffix],
cmd = select({
":darwin": md5_cmd % "/sbin/md5",
@@ -37,7 +39,7 @@ filegroup(
":freebsd": md5_cmd % "/sbin/md5",
"//conditions:default": md5_cmd % "md5sum",
}),
-) for suffix, embedded_tools in {
+) for suffix, embedded_tools_target in {
"": [":embedded_tools"],
"_with_jdk": [":embedded_tools_with_jdk"],
"_notools": [],
@@ -120,11 +122,17 @@ filegroup(
],
)
-[genrule(
- name = "embedded_tools" + suffix,
+py_binary(
+ name = "create_embedded_tools",
+ srcs = ["create_embedded_tools.py"],
+)
+
+# TODO(philwo): Clean this up, once a Bazel that can run py_binary and sh_binary
+# in Skylark rules on Windows has been released.
+[filegroup(
+ name = "embedded_tools" + suffix + "_srcs",
srcs = [
"BUILD.tools",
- ":create_embedded_tools.sh",
"//tools:embedded_tools_srcs",
"//third_party:gpl-srcs",
"//third_party/java/j2objc:embedded_tools_srcs",
@@ -209,13 +217,42 @@ filegroup(
"@openjdk_linux//file",
],
}) if (suffix == "_with_jdk") else []),
- outs = ["embedded_tools" + suffix + ".zip"],
- cmd = "$(location :create_embedded_tools.sh) $@ $(SRCS)",
) for suffix in [
"",
"_with_jdk",
]]
+[srcsfile(
+ name = "embedded_tools" + suffix + "_params",
+ srcs = [":embedded_tools" + suffix + "_srcs"],
+ out = "embedded_tools" + suffix + ".params",
+) for suffix in [
+ "",
+ "_with_jdk",
+]]
+
+genrule(
+ name = "embedded_tools",
+ srcs = [
+ ":embedded_tools_params",
+ ":embedded_tools_srcs",
+ ],
+ outs = ["embedded_tools.zip"],
+ cmd = "$(location :create_embedded_tools) \"$@\" $(location :embedded_tools_params)",
+ tools = [":create_embedded_tools"],
+)
+
+genrule(
+ name = "embedded_tools_with_jdk",
+ srcs = [
+ ":embedded_tools_with_jdk_params",
+ ":embedded_tools_with_jdk_srcs",
+ ],
+ outs = ["embedded_tools_with_jdk.zip"],
+ cmd = "$(location :create_embedded_tools) \"$@\" $(location :embedded_tools_with_jdk_params)",
+ tools = [":create_embedded_tools"],
+)
+
[genrule(
name = "package-zip" + suffix,
srcs = ([":embedded_tools" + suffix + ".zip"] if embed else []) + [