mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 10:54:49 +01:00
Refactor run_tool (#4459)
Removes the python script, should get equivalent results in the current setup.
This commit is contained in:
@@ -4,15 +4,33 @@
|
||||
|
||||
"""Supports running a tool from the install filegroup."""
|
||||
|
||||
load("@rules_python//python:defs.bzl", "py_binary")
|
||||
|
||||
def run_tool(name, tool, data, env):
|
||||
# TODO: Fix the driver file discovery in order to allow symlinks.
|
||||
py_binary(
|
||||
name = name,
|
||||
main = "run_tool.py",
|
||||
srcs = ["run_tool.py"],
|
||||
args = ["$(location {})".format(tool)],
|
||||
data = [tool] + data,
|
||||
env = env,
|
||||
def _run_tool_impl(ctx):
|
||||
tool_files = ctx.attr.tool.files.to_list()
|
||||
if len(tool_files) != 1:
|
||||
fail("Expected 1 tool file, found {0}".format(len(tool_files)))
|
||||
ctx.actions.symlink(
|
||||
output = ctx.outputs.executable,
|
||||
target_file = tool_files[0],
|
||||
is_executable = True,
|
||||
)
|
||||
return [
|
||||
DefaultInfo(
|
||||
runfiles = ctx.runfiles(files = ctx.files.data),
|
||||
),
|
||||
RunEnvironmentInfo(environment = ctx.attr.env),
|
||||
]
|
||||
|
||||
run_tool = rule(
|
||||
doc = "Helper for running a tool in a filegroup.",
|
||||
implementation = _run_tool_impl,
|
||||
attrs = {
|
||||
"data": attr.label_list(allow_files = True),
|
||||
"env": attr.string_dict(),
|
||||
"tool": attr.label(
|
||||
allow_single_file = True,
|
||||
executable = True,
|
||||
cfg = "target",
|
||||
),
|
||||
},
|
||||
executable = True,
|
||||
)
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""Runs the tool specified in argv.
|
||||
|
||||
This script is essentially just a bounce-through to get an appropriate arg0.
|
||||
See the TODO in run_tool.bzl.
|
||||
"""
|
||||
|
||||
__copyright__ = """
|
||||
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
||||
Exceptions. See /LICENSE for license information.
|
||||
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
if __name__ == "__main__":
|
||||
symbolizer = str(Path(os.environ["LLVM_SYMBOLIZER_PATH"]).absolute())
|
||||
os.environ["LLVM_SYMBOLIZER_PATH"] = symbolizer
|
||||
os.execv(sys.argv[1], sys.argv[1:])
|
||||
Reference in New Issue
Block a user