标签: starlark

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万
查看次数

如何从 Starlark 中的字符串创建路径?

我正在为 bazel 构建规则编写一些验证代码,并且需要进行一些路径验证。我需要检查某个文件是否存在于与 BUILD 文件相同的目录中。我注意到有一个上下文属性build_file_path指向 BUILD 文件。我想从中提取父目录。

看起来我无法创建新path对象 - 我没有看到构造函数/初始化程序。Starlark 似乎不像os.pathpython 那样支持,因为不支持导入。

获取代表 Starlark 路径的字符串对象的父目录的规范方法是什么?

bazel starlark

6
推荐指数
1
解决办法
3156
查看次数

Bazel Starlark:如何按程序生成 BUILD 文件?

通过 http_archive 下载存档后,我想运行一个脚本来从文件夹结构和其中的 Cmake 文件生成 BUILD 文件(我目前手动执行此操作,并且很容易编写脚本)。我在 starlark 文档中没有找到有关如何打开、读取和写入文件的任何内容,但由于 http_archive 本身是从 bzl 文件加载的(尽管尚未找到该文件的源...)并生成 BUILD 文件(通过从档案中解压它们)我想一定可以为 http_archive 编写一个包装器来生成 BUILD 文件?

bazel starlark bazel-rules

4
推荐指数
1
解决办法
1158
查看次数

标签 统计

bazel ×3

starlark ×3

bazel-rules ×1

skylark ×1