问题标签 [bazel-rules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

bazel - DefaultInfo和PyInfo是什么关系

我不清楚 DefaultInfo 运行文件的 transitive_files 和 PyInfo transitive_sources 之间的区别是什么。它们是多余的还是有重要的区别?

例如,我有一个自定义的 starlark 规则,我想将其作为 PyInfo 提供程序,但我想添加一个额外的提供程序,所以我不能使用本机 py_library 规则。

我正在创建冗余的 depset 来满足这些提供商的需求,这让我觉得也许我做错了。

我还尝试了另一种循环所有部门的方法default_runfiles,并将 runfiles.merge 用于 DefaultInfo。对于简单的情况,这些方法看起来是等效的,但我不知道是否存在其他方法会出现分歧的情况。

PyInfo 文档可以使用有关 transitive_sources 如何适应 DefaultInfo 以及为什么需要提供运行文件之外的其他机制的部分。https://docs.bazel.build/versions/master/skylark/lib/PyInfo.html

0 投票
1 回答
54 浏览

bazel - 让所有 Bazel 包公开它们的文档文件(或任何具有给定扩展名的文件)

Bazel 最近对我来说一直很好,但我偶然发现了一个我还没有找到满意答案的问题:

如何从工作区收集所有带有特定扩展名的文件?

表达问题的另一种方式:如何获得与在glob()整个 Bazel 工作区中进行操作等效的功能?

背景

在这种特殊情况下,目标是收集所有降价文件以运行一些检查并从中生成静态站点。

乍一看,glob()这听起来是个好主意,但一旦遇到 BUILD 文件就会停止。

目前的方法

当前的方法是在沙箱之外运行收集/生成逻辑,但这有点脏,我想知道是否有一种既“正确”又简单的方法(即,不需要每个 BUILD 文件显式公开其降价文件。

有没有办法在工作区中指定一些将添加到所有 BUILD 文件中的默认规则?

0 投票
1 回答
621 浏览

python-3.x - Bazel 使用 python 生成 AWS lambda

我正在尝试创建一个可以使用 Bazel 部署到 lambda BUT 中的 python 函数。

我可以使用 Bazel(运行我的 python 代码)创建二进制文件,但是当我尝试在 AWS Lambda 中执行该二进制文件时,它会粗鲁地失败。

Binary 没有 lambda 处理程序函数的预期方法签名。

这是我的构建文件:

这是 main.py:

如何强制 Bazel “接受”此方法签名?

0 投票
0 回答
42 浏览

automated-tests - 您如何为自定义 bazel 规则编写自动化测试?

我一直在考虑编写自动化测试以验证我们编写的 bazel 规则的最佳方式。关于测试的 bazel 文档表明我们可以使用Skylib有一个名为 的测试框架unittest.bzl,但是它会检查规则的分析时行为。

在我的例子中,我们有生成进程的规则,如果进程终止,我们期望得到一定的输出。因此,我创建了预期会失败的 bazel 目标,因为我想测试一些负面路径(例如手动终止进程)。

我正在寻找测试快乐的道路,但真的想测试消极的道路,可能会蓬勃发展的事情等等......

我是在想:

  • 什么对你有用,什么没用?
  • 你用什么技术/工具/东西来测试你在 bazel 中编写的自定义规则?
  • 您是否编写了一个运行 a 的 bazel 目标,sh_testshell 脚本运行 bazel 并期望测试失败?
  • 你用过新工具吗?如果是这样,您如何确保在整个组织中使用相同版本的工具?
  • 你关注的是快乐的道路,消极的道路,还是两者兼而有之?

期待听到您的回复

0 投票
1 回答
208 浏览

c++ - 修改自定义 C++ Bazel 规则中的包含路径

我正在构建一些自定义 C++ Bazel 规则,并且我需要添加对修改 C++ 标头的包含路径的支持,就像cc_library可以使用strip_include_prefix.

我的自定义规则是ctx.actions.run这样实现的:

然后在_impl我调用以下函数重写hdrs

这是行不通的,因为 Bazel 不会将文件复制到其包目录之外,而且感觉实现这一点的方法完全错误。

修改依赖项的 C++ 头目录以实现与cc_library参数相同的功能的最佳方法是什么strip_include_prefix

0 投票
1 回答
495 浏览

bazel - 将 py_image 规则的输出加载到 Docker

我在我的文件中定义了一个基本py_image规则:BUILD

如何使这条规则的结果在 Docker 中可用?我想将它放入docker images或通过docker run.

0 投票
2 回答
1637 浏览

bazel - Bazel 构建系统:如何在工作区中为外部 http_archive 引用 BUILD 文件?

我目前正在尝试将一些构建文件从 Bazel 0.19 更新到 Bazel 3.2.0

我有这个文件夹结构

以前,我在 WORKSPACE 文件中定义了以下内容:

new_http_archive 和 http_archive 在 new bazel 中合并为一个,但我不确定现在正确的语法是什么。以下

给我以下错误:

我为 build_file 尝试的其他语法是:

但他们都给了我一些错误。

与最新(3.2.0)Bazel 兼容的正确语法是什么?

//编辑:在 Windows 上执行此操作

0 投票
1 回答
119 浏览

bazel - Bazel:如何创建在linux上使用cmd和在windows上使用cmd_bat的genrule?

我想制定不依赖于 Windows 上的 Bash 的 Bazel 规则。

我看到在 a 中genrule,您可以使用 cmd_bat 而不是 cmd (需要 bash)。但是如何定义规则以便有一个 cmd 属性和一个 cmd_bat 属性,并且在 Windows 上只使用 cmd_bat 而在其他任何地方都使用 cmd?

0 投票
1 回答
126 浏览

typescript - 检查 package.json 依赖项的数组是否在 typeScript 中按字母数字顺序排序

我想检查 package.json 依赖项和 devDependencies 数组是否在 typeScript 中按字母数字顺序排序。如果它没有排序,那么它应该返回不合适的 dep 名称。

我想在 typesScript 中建立一个 bazel 规则检查来检查

返回错误的说法 dep2, devdep1 违反。

0 投票
1 回答
127 浏览

bazel - 有没有办法以编程方式更改 Aspect 的私有属性?

说我有以下类似的东西。

有没有办法在 中或在调用时更改foo_aspect.attr._toolWORKSPACEfoo_rule?前者更可取。

作为版本和存储库来源的用例_tool可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支只是为了对_tool.