diff --git a/labgrid/BUILD.bazel b/labgrid/BUILD.bazel index c2f98900725fdef0b2e5d8d464f342f46a139d8d..a636ef4e8af9736c5c2e01dfd49b57d0bb8c5674 100644 --- a/labgrid/BUILD.bazel +++ b/labgrid/BUILD.bazel @@ -1,5 +1,5 @@ -load("@rules_python//python:defs.bzl", "py_test") load("@python_versions//3.11:defs.bzl", "compile_pip_requirements") +load("@rules_python//python:defs.bzl", "py_test") # TODO: generate for more Python interpreter versions and platforms # `rules_uv` would be an easier way to do this diff --git a/labgrid/config/deps.bzl b/labgrid/config/deps.bzl index e0e33c557149d7d2a8aa824e3416a23e62fb4089..9fb9d0e6b3903e1d90e34c586ceb3ff99be29f4a 100644 --- a/labgrid/config/deps.bzl +++ b/labgrid/config/deps.bzl @@ -1,5 +1,5 @@ -load("//labgrid/cfg:unstore.bzl", _cfg = "unstore") load("@rules_python//python:defs.bzl", "PyInfo") +load("//labgrid/cfg:unstore.bzl", _cfg = "unstore") visibility("//labgrid/config/...") diff --git a/labgrid/executor/BUILD.bazel b/labgrid/executor/BUILD.bazel index bc238473e9ffdd3650d2caf69715d418ff2c26b5..9f25fdebc356864b54dff95e09720a65bc890e12 100644 --- a/labgrid/executor/BUILD.bazel +++ b/labgrid/executor/BUILD.bazel @@ -12,6 +12,7 @@ py_binary( data = [ "//labgrid/config:data", "//labgrid/config:tools", + ":args", ], tags = ["manual"], visibility = ["//:__subpackages__"], @@ -44,6 +45,9 @@ py_test( ], main = "executor.py", deps = ["host"], + data = [ + ":args", + ] ) py_test( @@ -60,4 +64,7 @@ py_test( ], main = "executor.py", deps = ["host"], + data = [ + ":args", + ] ) diff --git a/labgrid/executor/args.bzl b/labgrid/executor/args.bzl index e09419c6459724a5ac4450e6b39f402c10e2a337..0159ebf3c54a92e6ea338356d32dfdad34708784 100644 --- a/labgrid/executor/args.bzl +++ b/labgrid/executor/args.bzl @@ -24,19 +24,19 @@ def _import_path(short_path): return ".".join(parts) def implementation(ctx): - output = ctx.actions.declare_file("executor-args.txt") - - lines = [] + arguments = ctx.actions.declare_file(ctx.label.name) + args = ctx.actions.args() for m in ctx.files._managers: - lines.extend(["--manager", "{}:{}".format(_import_path(m.short_path), "manager")]) + args.add("--manager", "{}:{}".format(_import_path(m.short_path), "manager")) for name, value in ctx.attr._env[EnvironmentInfo].environment.items(): - lines.extend(["--env", name, value]) - - ctx.actions.write(output, "\n".join(lines)) - return DefaultInfo(files = depset([output])) + args.add_all("--env", [name, value]) + ctx.actions.write(arguments, content = args) + files = depset([arguments]) + return DefaultInfo(files = files) args = rule( doc = DOC, attrs = ATTRS, implementation = implementation, -) + provides = [DefaultInfo], +) \ No newline at end of file diff --git a/labgrid/executor/executor.py b/labgrid/executor/executor.py index ba7d34c7be9bbf0fd362254712c10108df60d854..45b3c7498cf30e063d82dd23ad8a2ad13d041ae9 100644 --- a/labgrid/executor/executor.py +++ b/labgrid/executor/executor.py @@ -17,7 +17,6 @@ from python.runfiles import Runfiles from bazel.labgrid.executor.manager import Data, Manager - def load(value: str) -> Manager: name, found, attr = value.partition(":") if not found: @@ -72,6 +71,10 @@ def main(exe: Path, *args: str) -> int: arguments(prsr) + runfiles = Runfiles.Create() + baked = Path(runfiles.Rlocation("rules_labgrid/labgrid/executor/args")) + args = (f"@{baked}", *args) + parsed = prsr.parse_args(args) cmd = (parsed.program, *parsed.arguments) diff --git a/labgrid/genrule/rule.bzl b/labgrid/genrule/rule.bzl index 50c27211e8bbf89c1caafed56d0407ffb02306eb..0713fa5866fcc8de411e7ec19fb31e8d435484fa 100644 --- a/labgrid/genrule/rule.bzl +++ b/labgrid/genrule/rule.bzl @@ -40,12 +40,6 @@ ATTRS = { executable = True, cfg = "exec", ), - "_executor_args": attr.label( - allow_single_file = True, - doc = "CLI args for the Labgrid environment executor", - default = "//labgrid/executor:args", - cfg = "exec", - ), "_sh": attr.label( doc = "The Shell interpreter", default = "@ape//:bash", @@ -85,7 +79,6 @@ def implementation(ctx): cmd = cmd.replace(key, value) args = ctx.actions.args() - args.add(ctx.file._executor_args, format = "@%s") args.add("--") args.add(ctx.executable._sh) args.add("-c") @@ -94,7 +87,6 @@ def implementation(ctx): ctx.actions.run( executable = ctx.executable._executor, arguments = [args], - inputs = [ctx.file._executor_args], outputs = ctx.outputs.outs, tools = [t.files_to_run for t in (ctx.attr.tools + ctx.attr.srcs)] + [ctx.executable._sh], use_default_shell_env = False, diff --git a/labgrid/run/binary/rule.bzl b/labgrid/run/binary/rule.bzl index f46d02925c9f14c583fa3b69eb7acad1399685d6..94a3afb68ec96dc76be0ecb891f4f2df45a8c017 100644 --- a/labgrid/run/binary/rule.bzl +++ b/labgrid/run/binary/rule.bzl @@ -46,12 +46,6 @@ ATTRS = { executable = True, cfg = "exec", ), - "_executor_args": attr.label( - allow_single_file = True, - doc = "CLI args for the Labgrid environment executor", - default = "//labgrid/executor:args", - cfg = "exec", - ), } def implementation(ctx): @@ -77,14 +71,13 @@ def implementation(ctx): } args = ctx.actions.args() - args.add(ctx.file._executor_args, format = "@%s") args.add("--") args.add(ctx.executable.tool) args.add_all(expanded_args) ctx.actions.run( outputs = ctx.outputs.outs, - inputs = ctx.files.srcs + [ctx.file._executor_args], + inputs = ctx.files.srcs, tools = [ctx.executable.tool], executable = ctx.executable._executor, arguments = [args],