Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bazel “巴泽尔给予”;打开“程序”;运行嵌入式命令时出现错误21_Bazel_Haxe - Fatal编程技术网

Bazel “巴泽尔给予”;打开“程序”;运行嵌入式命令时出现错误21

Bazel “巴泽尔给予”;打开“程序”;运行嵌入式命令时出现错误21,bazel,haxe,Bazel,Haxe,我正在为Haxe创建一个Bazel扩展,虽然我在构建方面取得了一些初步的成功,但我遇到了一个障碍,我不确定正确的解决方法是什么 在Haxe中,如果您在build.hxml文件中声明对Haxelib的依赖关系,则在执行构建时,Haxe编译器将从internet获取该Haxelib,并使用名为“Haxelib”的程序在本地安装它(如果您还没有)。这个过程似乎被Bazel沙箱阻止了,但是我还没有找到很多关于沙箱如何工作的文档,如果这是预期的,以及是否有解决方法。我目前在Windows10中工作;这是我

我正在为Haxe创建一个Bazel扩展,虽然我在构建方面取得了一些初步的成功,但我遇到了一个障碍,我不确定正确的解决方法是什么

在Haxe中,如果您在build.hxml文件中声明对Haxelib的依赖关系,则在执行构建时,Haxe编译器将从internet获取该Haxelib,并使用名为“Haxelib”的程序在本地安装它(如果您还没有)。这个过程似乎被Bazel沙箱阻止了,但是我还没有找到很多关于沙箱如何工作的文档,如果这是预期的,以及是否有解决方法。我目前在Windows10中工作;这是我得到的错误:

$ 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似乎是正确的,但我不确定到底是什么在抱怨。以下是我正在使用的运行操作:

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(我正在构建的构建文件)
  • 外部/haxe\u windows\u amd64/haxe.exe
  • 外部/haxe_windows_amd64/haxelib.exe
有什么想法可以让我绕过这个问题吗


更新:我今天写了一条规则,运行有问题的命令(
haxelib path hx3compat
),因此,我认为这是调用该命令时出现的错误,而不是命令本身。

我得到的特定错误-
Unix error 21
-是由Bazel创建的shell没有COMSPEC环境变量引起的:有关详细信息,请参阅和。通过
--action\u env=COMSPEC
命令行将该变量添加到环境中,使我克服了该错误。但是,由Haxe进程生成的命令shell无法处理符号链接,因此在尝试访问Bazel引入的目录时遇到了很多麻烦,因此我认为通过此路径使用Haxe最终会失败。不过为了记录在案,我能够让haxelib命令本身通过haxe进程运行,所以这个问题的答案是确保设置了COMSPEC变量。

Damn!你试过了吗?它由HaxeLib的前维护者编写,避免HaxeLib,引入构建约定,并提供可复制的构建。我听说过Lix,但实际上没有尝试过。看起来很合适;实际上,我在OOTB Haxe上取得了更大的成功——它仍然有点不成熟,但我可以进行编译。我一直在努力使用Haxe编写polygot代码库更容易。与简单的FFI包装器WRT单元测试相比,Haxe节省了时间,但如果构建系统处理容器,它将非常有用。在别处讨论?hi@indolering.com....