【发布时间】:2020-07-01 01:40:07
【问题描述】:
我正在为 Haxe 创建一个 Bazel 扩展,虽然我在构建东西方面取得了一些初步成功,但我遇到了障碍,我不确定什么是正确的解决方法。
在 Haxe 中,如果您在 build.hxml 文件中声明对 Haxelib 的依赖关系,则在执行构建时,Haxe 编译器将从 Internet 获取该 Haxelib 并在本地安装它(如果您还没有它),使用一个名为“haxelib”的程序。似乎这个过程被 Bazel 沙箱阻止了,但我还没有找到很多关于沙箱如何工作的文档,如果这是预期的,以及是否有解决方法。我目前在 Windows 10 中工作;这是我得到的错误:
$ bazel build //:neko-lib --verbose_failures
INFO: Analyzed target //:neko-lib (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
ERROR: D:/repo/validation/BUILD:3:13: HaxeCompile neko/validation.n failed (Exit 1): haxe.exe failed: error executing command
cd C:/users/user/_bazel_user/s6xipia4/execroot/__main__
external/haxe_windows_amd64/haxe.exe bazel-out/x64_windows-fastbuild/bin/build.hxml
Execution platform: @local_config_platform//:host
Unix.Unix_error(21, "open_proc", "haxelib path hx3compat")
Target //:neko-lib failed to build
INFO: Elapsed time: 1.705s, Critical Path: 0.62s
INFO: 0 processes.
FAILED: Build did NOT complete successfully
hx3compat 是我要加载的 haxelib 的名称。错误 21 似乎是"is a directory",但我不确定实际抱怨的是什么。这是我正在使用的运行操作:
ctx.actions.run(
outputs = [out],
inputs = inputs,
executable = haxe_cmd,
arguments = [args],
env = env,
mnemonic = "HaxeCompile",
)
haxe_cmd 指向 haxe.exe 文件,而输入是:
- bazel-out/x64_windows-fastbuild/bin/build.hxml(我正在构建的构建文件)
- external/haxe_windows_amd64/haxe.exe
- external/haxe_windows_amd64/haxelib.exe
关于我可以尝试解决此问题的任何想法?
更新:我今天写了一条规则,运行有问题的命令 (haxelib path hx3compat) 并且有效,所以我认为这是调用该命令的错误 - 而不是命令本身。
【问题讨论】: