我刚刚开始与 Bazel 合作。所以,我提前道歉,我无法弄清楚这一点。
我正在尝试运行一个命令,该命令将一堆文件输出到一个目录,并使该目录可用于后续目标。我有两种不同的尝试:
我天真地希望只用genrule
. 但是,您似乎无法说“我不确切知道此命令将输出什么”并将目录放入outs
. 现在我正在尝试编写一个可以使用的规则,ctx.actions.declare_directory
但我还没有完全正确。我似乎无法摆脱tools
我的工作区并进入我的规则。
我的 genrule 尝试看起来像这样:
genrule(
name = "doit",
srcs = [
"doitConfigA",
"doitConfigB",
],
cmd = 'HOME=. ./$(location path/to/doit) install',
# Neither of the below outs work - seems like bazel wants to know
# exactly this list of files. I don't know the files that
# will be output ahead of time.
# This one looks at the `out_dir` that I already have …
Run Code Online (Sandbox Code Playgroud) 我想在bazel中创建以下结构。
dir1
|_ file1
|_ file2
|_ dir2
|_file3
Run Code Online (Sandbox Code Playgroud)
创建特定的结构似乎并不简单。我希望有一个简单且可重复使用的规则。就像是:
makedir(
name = "dir1",
path = "dir1",
)
makedir(
name = "dir2",
path = "dir1/dir2",
deps = [":dir1"],
)
Run Code Online (Sandbox Code Playgroud)
我尝试过的
mkdir -p path/to/directoy
没有工作编辑:
用例是我想使用bazel 创建一个squashfs。
重要的是要注意,Bazel提供了一些打包功能。
要创建squashfs,该命令需要一个由构件填充的目录结构。