问题标签 [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.
bazel - Bazel-如何获取目标的所有传递源
我需要编写一个规则来*.foo
压缩可执行文件的所有传递配置文件()(可以是自定义规则、java_binary 和 docker container_image)。
配置文件可以出现在srcs
可执行文件的任何属性的属性上(tars
、、、deps
等runtime_deps
)
这听起来应该很容易使用附加到我的规则的方面,但我在各种示例之间迷失了方向。
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 程序
bazel - Bazel 方面如何从 java_library 目标获取源文件列表?
有没有办法让方面从 java_library 目标获取JavaSourceInfoProvider ?源 jar 适用于我们的编译器,但要生成源调试信息,我们需要实际源文件的位置,而不是临时副本。
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。
maven - 获取 bazel 目标的依赖关系树
我正在尝试将我的maven
集成测试迁移到bazel
. 在运行时我面临一些问题。调试我想与maven dependency:tree
bazel 的依赖树进行比较。为了避免任何额外的依赖或检测我是否缺少一些依赖。
我们如何比较这些依赖关系(maven
vs bazel
)。有什么方法可以获取 bazel 目标的依赖树?
cmd - Bazel genrule 检查位置表达式是否扩展为无文件
我正在genrule
用 Bazel 写一个。我有一个文件,其中包含一个可能存在也可能不存在的文件夹。如果有,我想引用它,但如果没有,则忽略它。我如何在genrule
之前的 cmd 部分进行条件检查$(location my_file_that_may_or_may_not_exist)
?
当文件不存在时,我得到
$(location)
表达式扩展为无文件错误。这是意料之中的,所以我想避免它
bazel - 有没有办法以编程方式更改 Aspect 的私有属性?
说我有以下类似的东西。
有没有办法在 中或在调用时更改foo_aspect.attr._tool
的WORKSPACE
值foo_rule
?前者更可取。
作为版本和存储库来源的用例_tool
可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支只是为了对_tool
.
bazel - 在 bazel 方面的实现中,有没有办法获取工作区根目录的绝对文件系统路径?
我正在尝试在 bazel 方面实现clang 编译数据库的生成。看来这个clang文件的“目录”字段必须指定为绝对路径。现在,当我尝试使用 bazel 方面生成此文件时,所有相关的 bazel API 都会在工作区侧返回路径相对路径。
我的意思是“工作区根” ~/.cache/bazel/_bazel_<user>/<hash>/execroot/__main__
。
我想了两个技巧来完成这项工作:
- 使用
ctx.actions.run_shell
而不是ctx.actions.write
生成文件,shell 可以在其中PWD
使用$(realpath ../../../../../execroot/__main__)
.
我已经验证了它可以工作,但这肯定是不受欢迎的方法,因为 bazel 不能保证沙盒工作路径与工作区根目录的关系,因此很容易跨越 bazel 版本。
- 使用脚本生成文件。
这会将文件的生成分成两部分,因为所有编译命令信息仍然必须来自 bazel 方面,这使得维护起来很麻烦。
我想过但没有明显的方法使它起作用的另一种方法是以某种方式将__workspace_dir__
变量从WORKSPACE.bazel
文件传递到方面上下文,我无论如何都找不到这样做。
那么,有没有什么优雅的方法可以从方面实现上下文中获取这些信息呢?
bazel - 关于工具链中环境变量的问题
我正在尝试按照教程(链接到教程)在 bazel 3.7 上为 wllvm(整个程序 LLVM)开发工具链。我遇到的一个问题是我必须将环境变量(LLVM_COMPILER)传递给 wllvm。您能否在此处提供更多详细信息或具体示例?是否可以直接在中配置环境变量.bazelrc
?
非常感谢!
bazel - 如何在 bazel build 中获取每个规则的时间成本
我想在执行 bazel 构建时获得每个规则成本的时间。我在 bazel 中找到了方面,使用该功能我可以在日志文件中打印每个规则的完成时间。
但是,我发现在规则执行之后执行规则的方面,当规则开始执行时我无法获得。
那么有没有办法在执行之前扩展规则?