gpt4 book ai didi

bazel - 为什么 Bazel run_shell 没有正确放置参数?

转载 作者:行者123 更新时间:2023-12-05 03:54:09 29 4
gpt4 key购买 nike

我有规则a :

def _a_impl(ctx):
src = ctx.actions.declare_file("src.txt")
ctx.actions.write(src, "nothin")
dst = ctx.actions.declare_file("dst.txt")
ctx.actions.run_shell(
outputs = [dst],
inputs = [src],
command = "cp",
arguments = [src.path, dst.path]
)
return [DefaultInfo(files = depset([dst]))]

a = rule(
implementation = _a_impl,
)

出于某种原因,我收到以下错误:

ERROR: /home/erran/example/out_dir/BUILD:9:1: error executing shell command: '/bin/bash -c cp  bazel-out/k8-fastbuild/bin/src.txt bazel-out/k8-fastbuild/bin/dst.txt' failed (Exit 1) bash failed: error executing command /bin/bash -c cp '' bazel-out/k8-fastbuild/bin/src.txt bazel-out/k8-fastbuild/bin/dst.txt

看起来 Bazel 没有正确解析参数。如您所见,实际的 bash 命令尝试 cp '' <src> <dst>

我也试过只格式化复制命令本身,效果很好:

ctx.actions.run_shell(
outputs = [dst],
inputs = [src],
command = "cp {} {}".format(src.path, dst.path)
)

有人知道问题出在哪里吗?

最佳答案

那是documented semantics将字符串传递给 run_shellcommand 参数。这样的事情应该有效:

    ctx.actions.run_shell(
outputs = [dst],
inputs = [src],
command = "cp $1 $2",
arguments = [src.path, dst.path]
)

关于bazel - 为什么 Bazel run_shell 没有正确放置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61245217/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com