问题标签 [bazel-aspect]

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 回答
768 浏览

bazel - Bazel-如何获取目标的所有传递源

我需要编写一个规则来*.foo压缩可执行文件的所有传递配置文件()(可以是自定义规则、java_binary 和 docker container_image)。
配置文件可以出现在srcs可执行文件的任何属性的属性上(tars、、、depsruntime_deps

这听起来应该很容易使用附加到我的规则的方面,但我在各种示例之间迷失了方向。

0 投票
1 回答
592 浏览

bazel - 读取扩展文件“intellij_info_bundled.bzl”时出错

我们正在尝试创建一个也使用 Spark 的 Scala 项目,但我们在读取扩展文件“intellij_info_bundled.bzl”时遇到问题:没有这样的包“@intellij_aspect//”:在 C:/users// 中找不到 WORKSPACE 文件_bazel_user/i45wuf6d/external/intellij_aspect。Intellij 中是否缺少某些内容?

斯卡拉文件

包 src.main.scala

} }

构建文件

工作空间

来自控制台的命令和错误

命令:C:\ProgramData\chocolatey\bin\bazel.exe build --tool_tag=ijwb:IDEA:community --keep_going --curses=no --color=yes --experimental_ui=no --progress_in_terminal_title=no --aspects =@intellij_aspect//:intellij_info_bundled.bzl%intellij_info_aspect --override_repository=intellij_aspect=C:\Users\ADMIN.IdeaIC2017.3\config\plugins\ijwb\aspect --output_groups=intellij-compile-java,intellij-compile-py - //...:全部

信息:加载完成。正在分析...错误:读取扩展文件“intellij_info_bundled.bzl”时遇到错误:没有这样的包“@intellij_aspect//”:在 C:/users/admin/appdata/local/temp/_bazel_sandhya/criyrv6d/ 中找不到 WORKSPACE 文件外部/intellij_aspect。信息:找到 3 个目标...警告:无法为前缀“bazel-”创建一个或多个便捷符号链接:无法创建符号链接 bazel-out -> C:/users/admin/appdata/local/temp/_bazel_sandhya/criyrv6d /execroot/scala_example/bazel-out:无法创建联结(名称=C:\users\admin\scalaprojects\example1\bazel-out,目标=C:\users\admin\appdata\local\temp_bazel_sandhya\criyrv6d\execroot\scala_example \bazel-out): 错误: src/main/native/windows/file-jni.cc(86): nativeCreateJunction(C:\users\admin\scalaprojects\example1\bazel-out, C:

无法创建符号链接 bazel-out -> C:/users/admin/appdata/local/temp/_bazel_sandhya/criyrv6d/execroot/scala_example/bazel-out: 无法创建连接 (name=C:\users\admin\scalaprojects\example1 \bazel-out, target=C:\users\admin\appdata\local\temp_bazel_sandhya\criyrv6d\execroot\scala_example\bazel-out): 错误: src/main/native/windows/file-jni.cc(86): nativeCreateJunction(C:\users\admin\scalaprojects\example1\bazel-out,C:\users\admin\appdata\local\temp_bazel_sandhya\criyrv6d\execroot\scala_example\bazel-out):错误:src/main/native/windows /file.cc(128): CreateJunction(\?\C:\users\admin\scalaprojects\example1\bazel-out): 当文件已经存在时无法创建文件。. 信息:正在构建... 错误:命令成功,但并未分析所有目标。信息:经过时间:18.108 秒,关键路径:0.05 秒

这只是一个示例 Helloworld 程序

0 投票
1 回答
171 浏览

bazel - Bazel 方面如何从 java_library 目标获取源文件列表?

有没有办法让方面从 java_library 目标获取JavaSourceInfoProvider ?源 jar 适用于我们的编译器,但要生成源调试信息,我们需要实际源文件的位置,而不是临时副本。

0 投票
1 回答
1111 浏览

java - 如何在 bazel 构建中调试 java_library 规则?

我挖掘了选项和源代码,但仍然不确定如何调试 bazel 构建,特别是 java。

也有人知道我如何更改 bazel,在本地构建它并在构建时使用它来验证。我找到了 bazel 调用: exec -a "$0" "${BAZEL_REAL}" "$@"

其中 BAZEL_REAL 是二进制文件:/usr/local/Cellar/bazel/0.15.2/libexec/bin/bazel-real

但这并没有详细解释它是如何开始的以及我如何调试它......

就像在构建我的代码时可以跳入和调试 com.google.devtools.build.lib.bazel.rules.java.BazelJavaLibraryRule 一样吗?就像我用 Maven 构建代码一样,我可以做 mvnDebug。

0 投票
1 回答
3319 浏览

maven - 获取 bazel 目标的依赖关系树

我正在尝试将我的maven集成测试迁移到bazel. 在运行时我面临一些问题。调试我想与maven dependency:treebazel 的依赖树进行比较。为了避免任何额外的依赖或检测我是否缺少一些依赖。

我们如何比较这些依赖关系(mavenvs bazel)。有什么方法可以获取 bazel 目标的依赖树?

0 投票
0 回答
329 浏览

cmd - Bazel genrule 检查位置表达式是否扩展为无文件

我正在genrule用 Bazel 写一个。我有一个文件,其中包含一个可能存在也可能不存在的文件夹。如果有,我想引用它,但如果没有,则忽略它。我如何在genrule之前的 cmd 部分进行条件检查$(location my_file_that_may_or_may_not_exist)

当文件不存在时,我得到 $(location)表达式扩展为无文件错误。这是意料之中的,所以我想避免它

0 投票
1 回答
127 浏览

bazel - 有没有办法以编程方式更改 Aspect 的私有属性?

说我有以下类似的东西。

有没有办法在 中或在调用时更改foo_aspect.attr._toolWORKSPACEfoo_rule?前者更可取。

作为版本和存储库来源的用例_tool可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支只是为了对_tool.

0 投票
0 回答
338 浏览

bazel - 在 bazel 方面的实现中,有没有办法获取工作区根目录的绝对文件系统路径?

我正在尝试在 bazel 方面实现clang 编译数据库的生成。看来这个clang文件的“目录”字段必须指定为绝对路径。现在,当我尝试使用 bazel 方面生成此文件时,所有相关的 bazel API 都会在工作区侧返回路径相对路径。

我的意思是“工作区根” ~/.cache/bazel/_bazel_<user>/<hash>/execroot/__main__

我想了两个技巧来完成这项工作:

  1. 使用ctx.actions.run_shell而不是ctx.actions.write生成文件,shell 可以在其中PWD使用$(realpath ../../../../../execroot/__main__).

我已经验证了它可以工作,但这肯定是不受欢迎的方法,因为 bazel 不能保证沙盒工作路径与工作区根目录的关系,因此很容易跨越 bazel 版本。

  1. 使用脚本生成文件。

这会将文件的生成分成两部分,因为所有编译命令信息仍然必须来自 bazel 方面,这使得维护起来很麻烦。

我想过但没有明显的方法使它起作用的另一种方法是以某种方式将__workspace_dir__变量从WORKSPACE.bazel文件传递到方面上下文,我无论如何都找不到这样做。

那么,有没有什么优雅的方法可以从方面实现上下文中获取这些信息呢?

0 投票
1 回答
60 浏览

bazel - 关于工具链中环境变量的问题

我正在尝试按照教程(链接到教程)在 bazel 3.7 上为 wllvm(整个程序 LLVM)开发工具链。我遇到的一个问题是我必须将环境变量(LLVM_COMPILER)传递给 wllvm。您能否在此处提供更多详细信息或具体示例?是否可以直接在中配置环境变量.bazelrc

非常感谢!

0 投票
1 回答
48 浏览

bazel - 如何在 bazel build 中获取每个规则的时间成本

我想在执行 bazel 构建时获得每个规则成本的时间。我在 bazel 中找到了方面,使用该功能我可以在日志文件中打印每个规则的完成时间。

但是,我发现在规则执行之后执行规则的方面,当规则开始执行时我无法获得。

那么有没有办法在执行之前扩展规则?