问题标签 [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 - 从 Bazel 中的目标/提供者列表中提取/收集文件的最有效方法是什么?
随着我的进步,我正在编写一些规则并学习 Starlark。
假设我有自己的提供者:
然后我有一个需要这些的生成器规则:
在我的实现中,我发现我需要做一些解包来获取文件:
有没有更有效的方法来执行收集?
至于我为什么这样做,生成器实际上需要一个特殊的文件列表,如下所示:
FWIW,这是一个如何使用的示例:
a/BUILD
:
b/BUILD
:
bazel - 从配置文件中读取规则参数值
考虑以下写在WORKSPACE
文件中的 bazel 规则:
问题是标签值1.8.2
是写在yaml
配置文件中的,我们要尊重 DRY 原则(从配置文件中读取值,而不是复制 bazel 文件中的值)。有没有办法处理这个?
bazel - Bazel 一次构建多个目标
我想要一个能够一次构建多个目标的 Bazel 规则。所以基本上是这样的:
所以我会跑
用一个简单的命令构建我的所有服务(测试也是如此)。但我找不到任何当前的解决方案。
有没有办法做到这一点?
bazel - Bazel 用于带有“bootstrap->configure->make”构建的软件包?
我正在尝试从 Bazel 构建中使用libhttpserver以及扩展的libmicrohttpd 。这些库的构建过程似乎是这样的:
configure && make
在更经典的工作流程上,这是我以前从未见过的轻微变化。
- 有没有人设法让这样的图书馆在 Bazel 下工作?
- 有人有我可以借鉴的公开例子吗?
我发现最接近支持这一点的是@rules_foreign_cc//tools/build_defs:configure.bzl#configure_make
,但这似乎没有引导步骤的概念。即使破解它似乎也不起作用,因为bootstrap
脚本最终失败了:
我即将准备好伸手去拿一个genrule()
,但这似乎很容易出错......
bazel - 用于编译“怪物”示例的最小 Bazel BUILD 和 WORKSPACE 文件,包括 sample_text.cpp
我是 FlatBuffers 和 Bazel 的新手。任何人都可以发布一个最小的例子来编译 flatc 本身,monster_generated.h 文件,然后是 sample_text.cpp?
当我运行时:
- bazel 构建平面缓冲区:flatc
我收到以下错误:
- 无法找到 @rules_cc//cc:defs.bzl 的包:无法解析存储库“@rules_cc”。
然后我暂时使用 CMake 构建 flatc,然后继续使用 Bazel 构建 sample_text.cpp。我想我在这里找到了一个最小的例子:
但是,当我运行时:
- bazel 构建 flatbuffers-bazel:sample_binary
我得到:
- 致命错误:找不到“monster_generated.h”文件
当我作弊并将monster_generated.h(用flatc手动制作,本身用CMake编译)的副本带入工作区,并将其添加到BUILD的srcs部分时,我得到:
- cc_flatbuffers_compile 类型的每条规则都隐含地依赖于目标“@flatbuffers//:flatc”,但由于以下原因无法找到该目标:没有这样的包“@flatbuffers//”:无法解析存储库“@flatbuffers”
这可能是一个基本问题,因为它确实支持 Bazel,因此非常欢迎任何建议!
谢谢,
肖恩
node.js - Bazel 与 lerna 和 yarn 工作区一起使用
许多人正在使用 lerna 和/或 yarn 工作区。
我想要么从它们迁移到 Bazel,要么只将它们与 Bazel 一起使用,以通过示例项目进行指导。
例如,目前,我有一个这样的目录结构,其中 foo 是快速服务器,bar 是 foo 使用的库,两者都基于 typescript。
我应该如何将它与 Bazel 对齐,就像你知道的那样,WORKSPACE、BUILD 及其内容?
有什么提示或例子吗?
谢谢!
tensorflow - 使用 bazel-buildfarm 构建 TensorFlow
我正在尝试使用远程执行+缓存和 bazel-buildfarm 从源代码构建 TensorFlow。我已经使用示例配置文件 @ https://github.com/bazelbuild/bazel-buildfarm设置了一个 bazel-buildfarm 服务器和工作程序(参见examples/
目录)。
我在 TensorFlow 的源代码库中向 .bazelrc 添加了以下规则(主管负责人):
然后我./configure
使用我知道本地非远程构建成功的选项运行。
我开始了 TensorFlow 构建:
此后不久,我收到此错误消息:
谁能帮我解释这个消息?我想弄清楚发生了什么以及如何让 TensorFlow 使用 bazel-buildfarm 进行构建。
tensorflow - Bazel-buildfarm - 指定工人的并发性
我正在尝试使用 bazel-buildfarm 构建 TensorFlow。我有一个服务器和一个使用https://github.com/bazelbuild/bazel-buildfarm提供的示例配置的单个工作人员设置(请参阅examples/
目录)。唯一的工人在一台 72 核的机器上。
我遇到的问题是,一旦我开始构建,虽然构建目标已成功分派给工作人员,但工作人员并没有利用我所有的核心(甚至没有关闭)。当我启动 TensorFlow 构建时,我尝试--jobs=100
在客户端上显式设置,但无济于事。
有谁知道如何让我的单个工人充分利用可用的处理能力?这需要在工作配置文件中明确指定吗?
bazel - 如何通过“ctx.actions.run(...)”调试由 Bazel 规则执行的“java_binary”目标?
我的工作区中有一个java_binary
目标,稍后我将其作为可执行文件传递到ctx.actions.run
规则内部。到目前为止,一切都很好。
现在我想java_binary
在 Bazel 执行规则时调试它。为了附加调试器,我需要java_binary
在调试模式下运行。到目前为止,我唯一想到的就是jvm_flags
在java_binary
. 我能够让它发挥作用。但我想知道是否有一种方法可以从命令行实现它,而不是将其烘焙到java_binary
.
是否可以在没有硬编码的情况下从命令行实现这一点jvm_flags
?
bazel - Bazel规范中的“加载”顺序还是仅仅因为实现?
我在使用 Bazel 构建 Go 项目时遇到了一个问题,发现它的根本原因是load
import的顺序@io_bazel_rules_go
。
收到答案后,我参考了 Bazel 的官方文档,如果它是在规范中定义的,或者只是对实现的隐式依赖。我还不能检查所有官方文档,但听起来以下文档与这个问题相关,但load
影响的顺序如何构建仍然很模糊;在我所经历的情况下,似乎较早的声明胜过后来的声明。
- https://docs.bazel.build/versions/2.2.0/build-ref.html#load
- https://docs.bazel.build/versions/2.2.0/external.html#shadowing-dependencies
谁能澄清这是否是规范?