问题标签 [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 生成的二进制文件的所有权?
假设我有一个从以下规则生成的二进制文件:
然后我在我的测试中使用这个二进制文件:
我的问题是:是否可以通过bazel 本身更改此二进制文件的所有权( chown root:root
)和权限( ) ?chmod +s
该二进制文件包含一些只能由 root 执行的命令,因此需要更改所有权和权限。
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
。
bazel - 您如何查询由 Bazel 中的外部存储库定义的所有包
例如采用https://github.com/protocolbuffers/protobuf定义的“com_google_protobuf” 。
它应该显示一些列表,例如
:时间戳
:期间
.
.
.
如果您自己的存储库中的包已经依赖于来自外部包的规则,您可以获得这些列表。
和
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
被调用但没有文件作为输入。
我在这里做错了什么?
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
在我的计算机上不存在。所以错误是准确的,但我不知道如何解决这个问题。
bazel - 如何在 py_library 导入中去除文件夹名称?
我在理解 bazel 的 python 导入目录时遇到问题。给定一棵这样的树:
文件如何像这样python_binary.py
导入some_file.py
文件:
我对 Bazel 很陌生,所以我的谷歌查询可能是错误的。我找不到任何删除/剥离文件夹名称的示例。如有必要,我愿意编写自定义规则。类似于在编译期间更改文件夹的插件。
编辑:除了接受的答案之外,我还必须将此添加到package1/__init__.py
库和二进制 src 文件夹中的文件中:
bazel - 是否有支持发布 go 二进制文件的 bazel 规则?
在成功构建 go 二进制文件 (cli) 后,我想将二进制文件发布到存储库管理器,例如 Artifactory。我发现了各种关于上传 jar 依赖项的参考,但没有特定于rules_go
谁能指出我正确的方向?
coq - 具有动态依赖关系的细粒度构建?
我有兴趣了解 bazel 是否可以处理“两阶段构建”,其中依赖项是根据文件内容发现的,并且依赖项必须在依赖于它们的代码之前编译(与 C/C++ 不同,其中依赖项主要是不是的头文件单独编译)。具体来说,我正在构建类似于 Ocaml 的 Coq 语言。
我对创建构建计划的直觉是使用一个(现有的)工具(称为coqdep
)来读取.v
文件并返回其所有直接依赖项的列表。这是我想到的算法:
coqdep
在目标文件和(传递地)其每个依赖文件上调用,- 一旦计算了目标的传递依赖关系,就添加一个规则来构建
.vo
包含.v
传递依赖关系的规则。
理想情况下,对(在步骤 1 中)的调用coqdep
将在构建之间缓存,因此只需要在文件更改时重新计算。并且依赖信息的传递闭包也将被缓存。
是否可以在 bazel 中实现这一点?有没有为这样的语言设置构建的指针?天真地,它似乎是一个两阶段构建,我不确定这如何适合 bazel 的编译模型。当我查看 Ocaml 的规则时,它似乎依赖于ocamlbuild
满足构建顺序和依赖项要求,而不是在 bazel 中“本地”执行它。
感谢您的任何指示或见解。
python - 如何在自定义 Bazel 规则或 genrule 中打包生成的 python 文件?
假设我有一个生成 Java 和 Python 代码的脚本。它生成的文件取决于输入配置,它可能因配置而异。现在,在 Java 的情况下,我可以编写一个简单的 genrule,指向调用脚本,然后调用jar
命令来生成生成的 Python 文件的单个源包。
例如:
在 Java 示例中,为了声明 genrule 的输出,我能够生成单个输出(生成文件的源包),然后使用与规则中的源相同的java_library
规则。
现在,我想在 Python 中实现类似的东西。如何在调用自定义脚本后打包生成的 Python 文件,以便我可以将其作为源传递给py_library
规则?
bazel - 找不到 @bazel_skylib//:bzl_library.bzl 的包
这是我的工作区;
这是我的第二个/构建
这是我的第一个/构建
做的时候
我明白了