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

scala - 类路径中缺少记录器

我尝试在 Bazel 中编译一个 Scala 库。这会导致错误:

我的BUILD.bazel样子是这样的:

根据我的阅读,这个错误通常源于混合 2.x 和 2.y Scala 版本。不过,我一生都无法弄清楚我会在哪里做这件事。

0 投票
1 回答
1377 浏览

bazel - 我可以从 .bzl 文件加载常用规则吗?

我们经常需要每个技术堆栈的通用规则组合。目前这在 WORKSPACE 中浪费了大量空间——它们应该在多个存储库中保持同步。在 buildifier 之后有 50 多行,并且包含太多的 url、版本和哈希。

现在说我有一个“技术堆栈”回购并做类似的事情

将在哪里load_rules加载和初始化例如 rules_go、bazel-gazelle、rules_docker、rules_proto 的固定版本并以正确的顺序初始化它们,以便它们在 WORKSPACE 中可见?

我没有让它在我的测试中工作,因为load显然不能在 bzl 文件中的函数中运行 - 它本身不是函数。

有没有办法做到这一点?

这是我为 Java 测试的示例:

...所有http_archive对规则回购的要求都在WORKSPACE,我想把它们移到这里,但这根本不起作用。照原样,我收到此错误:

也添加 rules_python 也无济于事。

0 投票
1 回答
269 浏览

build - 如何从 BUILD 文件下载 Bazel 中的文件?

有没有办法直接从 BUILD 文件下载 Bazel 中的文件?我知道我可能可以使用wget和启用网络,但我正在寻找一种可以与bazel fetch.

我有一堆文件要下载,这些文件将被一个包消耗。使用在 monorepo 根目录中添加http_file()规则的标准方法感觉不对。WORKSPACE它将与包分离,它会污染一个完全不相关的文件。

0 投票
1 回答
202 浏览

bazel - 有没有办法在 Bazel 中有一个标签列表字典?

我正在尝试在Bazel中为我的公司使用的工具创建一组规则。有没有办法创建一个规则属性,它是一个标签列表的字典,其中字典的键是一个字符串?

例如,目标应如下所示:

注意:我知道我可以区分foobar通过将它们放在单独的目标中,然后让第三个目标依赖于两者,但宁愿它们都在同一个目标中。

0 投票
1 回答
1392 浏览

bazel - Bazel 获取外部依赖项的位置作为 py_binary 的命令行参数

我需要外部(或内部)依赖的路径将其作为参数传递给内部的函数。我们需要文件夹的位置,而不是特定文件。此外,有时,我们需要共享库所在文件夹的路径,由cc_library.

Python 文件

构建文件

0 投票
1 回答
1154 浏览

bazel - 为什么 Bazel run_shell 没有正确放置参数?

我有规则a

出于某种原因,我收到以下错误:

看起来 Bazel 没有正确解析参数。如您所见,实际的 bash 命令试图cp '' <src> <dst>

我也尝试过格式化复制命令本身,效果很好:

有谁知道问题是什么?

0 投票
0 回答
125 浏览

android - 尝试从配置了 bazel 的项目中调用本机函数时出现 java.lang.UnsatisfiedLinkError

我在我的 bazel 构建文件中创建了一个 cc_library 并在 android_binary 规则中添加了 deps

巴泽尔建造:

并将指定包中的库加载为

并将本机函数声明并调用为:

宣言:

函数调用

JNI文件函数声明及定义:

库成功加载,但函数调用抛出错误java.lang.UnsatisfiedLinkError

如何从我的 java 文件中调用本机 foo()?

0 投票
0 回答
26 浏览

bazel - 谁能详细说明如何在 C++ 规则中实现像 local_defines 这样的属性?

我正在开发一个自定义的 bazel 规则,我需要一个属性仅应用于目标,而不是它的依赖项。它应该与 C++ local_defines 相同。谁能提供一些关于如何实现它的想法?我需要提供者中的字典吗?

0 投票
1 回答
458 浏览

bazel - Bazel:在 genrule 中引用输出目录中的文件

我试图引用一个规则的输出,该规则嵌套在另一个规则的输出目录中genrule

例如,我使用rules_foreign_cc来构建 boost:

当我构建它时,我看到了输出:

Boost 工作正常,我可以在cc_library目标中引用它,并且二进制文件运行良好。

现在,我想引用一个 genrule 中的输出之一。我要引用的文件嵌套在boost/lib/目录中。我会期待类似的东西:$(location :boost/lib/libboost_program_options.so.1.72.0),但这不起作用。

引用目录中的输出的正确方法是什么?

0 投票
1 回答
997 浏览

java - 将 mvn 作为 bazel 构建中的工具运行

我的项目中有一个棘手的模块,除了 Maven,它(还)不能由任何东西构建。好消息是这个模块在我的项目中没有任何 Java 依赖项,它只生成一个.war文件,我需要将它移动到输出 zip 分发中的正确位置。

我想将构建迁移到 bazel,但我想在迁移的后期处理棘手的模块。

如何在我的 bazel 构建中运行 mvn 作为工具,让它生成 .war 文件?

  • Maven 期望从包含pom.xml
  • Maven 将输出写入输入文件树的子目录
  • 当 settings.xml 包含绝对路径时,Maven 是最快乐的(到 .war 的本地 maven 存储库,存储在 git 中)
  • Maven 使用 $HOME/.m2 进行缓存

我查看了 rules_foreign_cc,它围绕 cmake 创建了一个包装脚本。这是要走的路吗?https://github.com/bazelbuild/rules_foreign_cc/blob/8372f383cf7277a88762efe25d8cfee10ad27929/tools/build_defs/framework.bzl#L156