aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/embedded_tools.bzl
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/embedded_tools.bzl
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/embedded_tools.bzl')
-rw-r--r--src/embedded_tools.bzl50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/embedded_tools.bzl b/src/embedded_tools.bzl
new file mode 100644
index 0000000000..b36cc142cf
--- /dev/null
+++ b/src/embedded_tools.bzl
@@ -0,0 +1,50 @@
+# pylint: disable=g-bad-file-header
+# Copyright 2017 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Contains Skylark rules used to build the embedded_tools.zip."""
+
+def _embedded_tools(ctx):
+ # The list of arguments we pass to the script.
+ args_file = ctx.new_file(ctx.label.name + ".params")
+ ctx.file_action(output=args_file, content="\n".join([f.path for f in ctx.files.srcs]))
+ # Action to call the script.
+ ctx.action(
+ inputs=ctx.files.srcs,
+ outputs=[ctx.outputs.out],
+ arguments=[ctx.outputs.out.path, args_file.path],
+ progress_message="Creating embedded tools: %s" % ctx.outputs.out.short_path,
+ executable=ctx.executable.tool)
+
+embedded_tools = rule(
+ implementation=_embedded_tools,
+ attrs={
+ "srcs": attr.label_list(allow_files=True),
+ "out": attr.output(mandatory=True),
+ "tool": attr.label(executable=True, cfg="host", allow_files=True,
+ default=Label("//src:create_embedded_tools_sh"))
+ }
+)
+
+def _srcsfile(ctx):
+ ctx.file_action(
+ output=ctx.outputs.out,
+ content="\n".join([f.path for f in ctx.files.srcs]))
+
+srcsfile = rule(
+ implementation=_srcsfile,
+ attrs={
+ "srcs": attr.label_list(allow_files=True),
+ "out": attr.output(mandatory=True),
+ }
+)