diff --git a/e2e/docker/BUILD.bazel b/e2e/docker/BUILD.bazel index cc34f9a0b8aa5d21f9c005a71d20e94d4d3c880a..af07985e79a0a24a457aa6f194b477a24bac42d8 100644 --- a/e2e/docker/BUILD.bazel +++ b/e2e/docker/BUILD.bazel @@ -1,8 +1,8 @@ -load("@rules_python//python:defs.bzl", "py_binary", "py_library") -load("@rules_labgrid//labgrid/genrule:defs.bzl", "labgrid_genrule") +load("@rules_diff//diff/file/test:defs.bzl", "diff_file_test") load("@rules_labgrid//labgrid/executor:defs.bzl", "labgrid_executor") +load("@rules_labgrid//labgrid/genrule:defs.bzl", "labgrid_genrule") load("@rules_labgrid//labgrid/transition:defs.bzl", "labgrid_transition") -load("@rules_diff//diff/file/test:defs.bzl", "diff_file_test") +load("@rules_python//python:defs.bzl", "py_binary", "py_library") load("@toolchain_utils//toolchain/info:defs.bzl", "toolchain_info") # The goal of this test/example is to use the nut/bolts of `rules_labgrid` @@ -76,6 +76,12 @@ toolchain( toolchain_type = "@rules_labgrid//labgrid/toolchain/executor:type", ) +# A simplistic implementation of cat which dependends on runfiles +py_binary( + name = "cat", + srcs = ["cat.py"], +) + # Run within the LabGrid environment # This shows a few things: # - It resolves the executor registered above to set up the `LG_ENV` enviroment variable @@ -83,9 +89,9 @@ toolchain( # - `@ape//:cat` is provided to labgrid_genrule( name = "echo", - srcs = ["@ape//:cat"], + srcs = [":cat"], outs = ["stdout.log"], - cmd = "$(location :ssh) $(location @ape//:cat) /etc/os-release > $@", + cmd = "$(location :ssh) $(locations :cat) /etc/os-release > $@", tags = ["manual"], tools = [":ssh"], ) diff --git a/e2e/docker/cat.py b/e2e/docker/cat.py new file mode 100644 index 0000000000000000000000000000000000000000..13d94bc0fbde6818a7589a2d84f4aa37bec582eb --- /dev/null +++ b/e2e/docker/cat.py @@ -0,0 +1,4 @@ +import fileinput + +for line in fileinput.input(files="/etc/os-release"): + print(line, end="") diff --git a/e2e/docker/ssh.py b/e2e/docker/ssh.py index fa8f7e19ec484641f7d0993227daae70777cf665..0c1ff803c8bee654ae07483eaa7ca8aab5e9effb 100755 --- a/e2e/docker/ssh.py +++ b/e2e/docker/ssh.py @@ -58,6 +58,12 @@ def main(exe: Path, *args: str) -> int: program = "/tmp/{}".format(parsed.program.name) transfer.put(parsed.program, program) + # Transfer runfiles + src_runfiles = parsed.program.with_suffix(".runfiles") + dest_runfiles = Path(program).with_suffix(".runfiles") + if src_runfiles.exists(): + transfer.put(src_runfiles, dest_runfiles) + # Run the transferred program out, err, code = shell.run(join((program, *parsed.arguments))) for line in out: diff --git a/labgrid/genrule/rule.bzl b/labgrid/genrule/rule.bzl index 0d276a7a524ae4b0d48dd496f0c8ec4aa7dc3b9a..752dbbe3f13a236ab0d5d4d24c44ae1e2ba36d11 100644 --- a/labgrid/genrule/rule.bzl +++ b/labgrid/genrule/rule.bzl @@ -78,8 +78,7 @@ def implementation(ctx): executable = executor.run, arguments = [args], outputs = ctx.outputs.outs, - inputs = depset(transitive = [s.files for s in ctx.attr.srcs]), - tools = [t.files_to_run for t in ctx.attr.tools] + [ctx.executable._sh], + tools = [t.files_to_run for t in (ctx.attr.tools + ctx.attr.srcs)] + [ctx.executable._sh], env = executor.env, mnemonic = "LabGridGenrule", )