问题标签 [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 回答
242 浏览

bazel - 如何更改通过 Bazel 生成的二进制文件的所有权?

假设我有一个从以下规则生成的二进制文件:

然后我在我的测试中使用这个二进制文件:

我的问题是:是否可以通过bazel 本身更改此二进制文件的所有权( chown root:root)和权限( ) ?chmod +s

该二进制文件包含一些只能由 root 执行的命令,因此需要更改所有权和权限。

0 投票
1 回答
166 浏览

bazel - Windows 10 上的 pkg_rules 问题

我想用rules_pkg

我有以下设置:Windows 10 x64(版本 2004,Bazel 3.7.0,Visual Studio 16 2019,MSYS2 x86_64)

我的最小设置如下所示:

工作空间.bazel

构建.bazel

主文件

当我尝试构建时,bazel build //...我得到:

我可以在其他两台具有相同/相似设置的 Windows 10 机器上毫无问题地构建。有任何想法吗?

更多设置细节: Path包含C:\msys64\usr\bin. BAZEL_SH设置为C:\msys64\usr\bin\bash.exe

0 投票
1 回答
178 浏览

bazel - 您如何查询由 Bazel 中的外部存储库定义的所有包

例如采用https://github.com/protocolbuffers/protobuf定义的“com_google_protobuf” 。

它应该显示一些列表,例如

:时间戳

:期间

.

.

.

如果您自己的存储库中的包已经依赖于来自外部包的规则,您可以获得这些列表。

0 投票
1 回答
61 浏览

bazel - javadoc 的 Bazel 规则无法传递输入源

我正在尝试基于 我在项目根目录下的 BUILD 文件中添加的javadoc.bzl创建一个 javadoc 以加载规则:

但是当我运行它时它失败了,从我看到的使用--sandbox_debug它似乎没有使用任何源文件调用 javadoc 具体运行:bazel build --sandbox_debug :api-docs
我得到:

后来javadoc: error - No packages or classes specified.

如果我正确理解报告的错误,我会看到external/local_jdk/bin/javadoc -quiet -d api-docs被调用但没有文件作为输入。
我在这里做错了什么?

0 投票
1 回答
587 浏览

bazel - 在 bazel 规则中执行 native_binary

@bazel_skylib//rules:native_binary.bzl定义native_binary可用于将本机可执行文件包装在 bazel 目标中的规则。我用它来包装一个packfolder.exe从 Sciter SDK 调用的打包工具。

我将二进制文件放入我的源代码树中third_party/sciter/packfolder.exe并编写了这个BUILD文件。

bazel run third_party/sciter:packfolder运行没有问题。现在我想在我的自定义cc_sciter_resource规则中使用这个目标。

问题是,当我尝试构建使用此规则的目标时,比如说

我收到以下错误。

该目录C:\users\marki\_bazel_marki\kiodv2fz\execroot\sciter_bazel\bazel-out\x64_windows-opt-exec-2B5CBBC6在我的计算机上不存在。所以错误是准确的,但我不知道如何解决这个问题。

0 投票
1 回答
483 浏览

bazel - 如何在 py_library 导入中去除文件夹名称?

我在理解 bazel 的 python 导入目录时遇到问题。给定一棵这样的树:

文件如何像这样python_binary.py导入some_file.py文件:

我对 Bazel 很陌生,所以我的谷歌查询可能是错误的。我找不到任何删除/剥离文件夹名称的示例。如有必要,我愿意编写自定义规则。类似于在编译期间更改文件夹的插件。

编辑:除了接受的答案之外,我还必须将此添加到package1/__init__.py库和二进制 src 文件夹中的文件中:

0 投票
2 回答
142 浏览

bazel - 是否有支持发布 go 二进制文件的 bazel 规则?

在成功构建 go 二进制文件 (cli) 后,我想将二进制文件发布到存储库管理器,例如 Artifactory。我发现了各种关于上传 jar 依赖项的参考,但没有特定于rules_go

谁能指出我正确的方向?

0 投票
2 回答
587 浏览

coq - 具有动态依赖关系的细粒度构建?

我有兴趣了解 bazel 是否可以处理“两阶段构建”,其中依赖项是根据文件内容发现的,并且依赖项必须在依赖于它们的代码之前编译(与 C/C++ 不同,其中依赖项主要是不是的头文件单独编译)。具体来说,我正在构建类似于 Ocaml 的 Coq 语言。

我对创建构建计划的直觉是使用一个(现有的)工具(称为coqdep)来读取.v文件并返回其所有直接依赖项的列表。这是我想到的算法:

  1. coqdep在目标文件和(传递地)其每个依赖文件上调用,
  2. 一旦计算了目标的传递依赖关系,就添加一个规则来构建.vo包含.v传递依赖关系的规则。

理想情况下,对(在步骤 1 中)的调用coqdep将在构建之间缓存,因此只需要在文件更改时重新计算。并且依赖信息的传递闭包也将被缓存。

是否可以在 bazel 中实现这一点?有没有为这样的语言设置构建的指针?天真地,它似乎是一个两阶段构建,我不确定这如何适合 bazel 的编译模型。当我查看 Ocaml 的规则时,它似乎依赖于ocamlbuild满足构建顺序和依赖项要求,而不是在 bazel 中“本地”执行它。

感谢您的任何指示或见解。

0 投票
1 回答
456 浏览

python - 如何在自定义 Bazel 规则或 genrule 中打包生成的 python 文件?

假设我有一个生成 Java 和 Python 代码的脚本。它生成的文件取决于输入配置,它可能因配置而异。现在,在 Java 的情况下,我可以编写一个简单的 genrule,指向调用脚本,然后调用jar命令来生成生成的 Python 文件的单个源包。

例如:

在 Java 示例中,为了声明 genrule 的输出,我能够生成单个输出(生成文件的源包),然后使用与规则中的源相同的java_library规则。

现在,我想在 Python 中实现类似的东西。如何在调用自定义脚本后打包生成的 Python 文件,以便我可以将其作为源传递给py_library规则?

0 投票
1 回答
1000 浏览

bazel - 找不到 @bazel_skylib//:bzl_library.bzl 的包

这是我的工作区;

这是我的第二个/构建

这是我的第一个/构建

做的时候

我明白了