问题标签 [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.
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
bazel - 让所有 Bazel 包公开它们的文档文件(或任何具有给定扩展名的文件)
Bazel 最近对我来说一直很好,但我偶然发现了一个我还没有找到满意答案的问题:
如何从工作区收集所有带有特定扩展名的文件?
表达问题的另一种方式:如何获得与在glob()
整个 Bazel 工作区中进行操作等效的功能?
背景
在这种特殊情况下,目标是收集所有降价文件以运行一些检查并从中生成静态站点。
乍一看,glob()
这听起来是个好主意,但一旦遇到 BUILD 文件就会停止。
目前的方法
当前的方法是在沙箱之外运行收集/生成逻辑,但这有点脏,我想知道是否有一种既“正确”又简单的方法(即,不需要每个 BUILD 文件显式公开其降价文件。
有没有办法在工作区中指定一些将添加到所有 BUILD 文件中的默认规则?
python-3.x - Bazel 使用 python 生成 AWS lambda
我正在尝试创建一个可以使用 Bazel 部署到 lambda BUT 中的 python 函数。
我可以使用 Bazel(运行我的 python 代码)创建二进制文件,但是当我尝试在 AWS Lambda 中执行该二进制文件时,它会粗鲁地失败。
Binary 没有 lambda 处理程序函数的预期方法签名。
这是我的构建文件:
这是 main.py:
如何强制 Bazel “接受”此方法签名?
automated-tests - 您如何为自定义 bazel 规则编写自动化测试?
我一直在考虑编写自动化测试以验证我们编写的 bazel 规则的最佳方式。关于测试的 bazel 文档表明我们可以使用Skylib有一个名为 的测试框架unittest.bzl
,但是它会检查规则的分析时行为。
在我的例子中,我们有生成进程的规则,如果进程终止,我们期望得到一定的输出。因此,我创建了预期会失败的 bazel 目标,因为我想测试一些负面路径(例如手动终止进程)。
我正在寻找测试快乐的道路,但真的想测试消极的道路,可能会蓬勃发展的事情等等......
我是在想:
- 什么对你有用,什么没用?
- 你用什么技术/工具/东西来测试你在 bazel 中编写的自定义规则?
- 您是否编写了一个运行 a 的 bazel 目标,
sh_test
shell 脚本运行 bazel 并期望测试失败? - 你用过新工具吗?如果是这样,您如何确保在整个组织中使用相同版本的工具?
- 你关注的是快乐的道路,消极的道路,还是两者兼而有之?
期待听到您的回复
c++ - 修改自定义 C++ Bazel 规则中的包含路径
我正在构建一些自定义 C++ Bazel 规则,并且我需要添加对修改 C++ 标头的包含路径的支持,就像cc_library
可以使用strip_include_prefix
.
我的自定义规则是ctx.actions.run
这样实现的:
然后在_impl
我调用以下函数重写hdrs
:
这是行不通的,因为 Bazel 不会将文件复制到其包目录之外,而且感觉实现这一点的方法完全错误。
修改依赖项的 C++ 头目录以实现与cc_library
参数相同的功能的最佳方法是什么strip_include_prefix
?
bazel - 将 py_image 规则的输出加载到 Docker
我在我的文件中定义了一个基本py_image
规则:BUILD
如何使这条规则的结果在 Docker 中可用?我想将它放入docker images
或通过docker run
.
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 上执行此操作
bazel - Bazel:如何创建在linux上使用cmd和在windows上使用cmd_bat的genrule?
我想制定不依赖于 Windows 上的 Bash 的 Bazel 规则。
我看到在 a 中genrule
,您可以使用 cmd_bat 而不是 cmd (需要 bash)。但是如何定义规则以便有一个 cmd 属性和一个 cmd_bat 属性,并且在 Windows 上只使用 cmd_bat 而在其他任何地方都使用 cmd?
typescript - 检查 package.json 依赖项的数组是否在 typeScript 中按字母数字顺序排序
我想检查 package.json 依赖项和 devDependencies 数组是否在 typeScript 中按字母数字顺序排序。如果它没有排序,那么它应该返回不合适的 dep 名称。
我想在 typesScript 中建立一个 bazel 规则检查来检查
返回错误的说法 dep2, devdep1 违反。
bazel - 有没有办法以编程方式更改 Aspect 的私有属性?
说我有以下类似的东西。
有没有办法在 中或在调用时更改foo_aspect.attr._tool
的WORKSPACE
值foo_rule
?前者更可取。
作为版本和存储库来源的用例_tool
可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支只是为了对_tool
.