标签: skylark

Bazel:输出目录的规则

我刚刚开始与 Bazel 合作。所以,我提前道歉,我无法弄清楚这一点。

我正在尝试运行一个命令,该命令将一堆文件输出到一个目录,并使该目录可用于后续目标。我有两种不同的尝试:

  1. 使用规则
  2. 写我自己的规则

我天真地希望只用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 skylark starlark

7
推荐指数
2
解决办法
1万
查看次数

如何在bazel中创建目录结构

我想在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)

我尝试过的

  • 我可以使用python脚本创建宏,但需要更干净的东西。
  • 我试图创建一个genrule有mkdir -p path/to/directoy没有工作

编辑

用例是我想使用bazel 创建一个squashfs

重要的是要注意,Bazel提供了一些打包功能。

创建squashfs,该命令需要一个由构件填充的目录结构。

linux build squashfs bazel skylark

5
推荐指数
1
解决办法
440
查看次数

标签 统计

bazel ×2

skylark ×2

build ×1

linux ×1

squashfs ×1

starlark ×1