微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nixos mkDerivation godot 单声道版本C# 支持

如何解决nixos mkDerivation godot 单声道版本C# 支持

我在 nixos 20.09 上尝试构建 godot-3.2.3-stable 并支持 C#。

我正在按照 godot docs 上的说明进行操作,该说明指出首先必须启用单声道模块,然后生成单声道胶水。我尝试使 NixOS/nixpkgs 存储库的 default.nix 适应我的需求,但失败了。

我尝试的是首先生成 godot 文档中提到的胶水,然后使用 C# 支持进行编译。

with import <nixpkgs> {};

let options = {
  pulseaudio = true;
};`

in 
stdenv.mkDerivation rec {
  name = "tools_";
  version = "3.2.3";

  src = ./godot-3.2.3-stable.tar.gz;

  nativeBuildInputs = with pkgs; [ pkg-config ];
  buildInputs = with pkgs; [ scons mono6 msbuild dotnetPackages.Nuget xorg.libX11 xorg.libXcursor
                             xorg.libXinerama xorg.libXrandr xorg.libXrender xorg.libXi xorg.libXext 
                             xorg.libXfixes freetype openssl alsaLib libpulseaudio libglu zlib yasm
                            ];

  patches = [
    ./pkg_config_additions.patch
    ./dont_clobber_environment.patch
  ];

  enableParallelBuilding = true;

  sconsFlags = "target=release_debug platform=x11 tools=yes module_mono_enabled=yes mono_glue=no";
  preConfigure = ''
    sconsFlags+=" ${lib.concatStringsSep " " (lib.mapAttrsToList (k: v: "${k}=${builtins.toJSON v}") options)}"
  '';

  outputs = [ "out" ];

  installPhase = ''
    mkdir -p "$out/bin"
    cp bin/godot.* $out/bin/godot
  '';

}

但是如果我用 nix-build 运行它,我会得到错误

Checking for `thread_local` support... supported
Mono root directory not found. Using pkg-config instead
/nix/store/vnyfysaya7sblgdyvqjkrjbrb0cy11jf-bash-4.4-p23/bin/sh: pkg-config: command not found
OSError: 'pkg-config monosgen-2 --libs-only-L' exited 127:
  File "/build/godot-3.2.3-stable/SConstruct",line 617:
    sconscript("modules/SCsub")
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Script/sconscript.py",line 661:
    return method(*args,**kw)
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Script/sconscript.py",line 598:
    return _sconscript(self.fs,*files,**subst_kw)
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Script/sconscript.py",line 287:
    exec(compile(scriptdata,scriptname,'exec'),call_stack[-1].globals)
  File "/build/godot-3.2.3-stable/modules/SCsub",line 21:
    sconscript(name + "/SCsub")  # Built-in.
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Script/sconscript.py",call_stack[-1].globals)
  File "/build/godot-3.2.3-stable/modules/mono/SCsub",line 34:
    mono_configure.configure(env,env_mono)
  File "/build/godot-3.2.3-stable/modules/mono/build_scripts/mono_configure.py",line 351:
    tmpenv.ParseConfig("pkg-config monosgen-2 --libs-only-L")
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Environment.py",line 1612:
    return function(self,self.backtick(command))
  File "/nix/store/ypb1lsl610mw3s76p232hjmnhwakjb06-scons-4.0.1/lib/python3.8/site-packages/SCons/Environment.py",line 599:
    raise OSError("'%s' exited %d" % (command,status))
builder for '/nix/store/acpp99hr7q92a7j1bk2nga00n4v8za7z-tools_.drv' Failed with exit code 2
error: build of '/nix/store/acpp99hr7q92a7j1bk2nga00n4v8za7z-tools_.drv' Failed

对不起,我完全迷失在那里,因为这是我试图构建的第一个推导。我已经搜索nixpkgs manual 但无法解决我的问题。可能是因为我不确定我在寻找什么。我也在问自己这是否会起作用,因为 godot 文档指出在生成胶水后必须:

### Build binaries normally
# Editor
scons p=x11 target=release_debug tools=yes module_mono_enabled=yes

而且我不知道我是否可以简单地使用适当的 sconsFlags 重新运行上述推导,或者我是否以及如何简单地编写一个完成相同工作的文件

如果有人能帮助我并指出我正确的方向,这样我至少会知道我到底要搜索什么,我将非常感激。提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。