1

私は nixos 20.09 を使用しており、C# をサポートする godot-3.2.3-stable をビルドしようとしています。

godot docsの指示に従っています。これには、最初に mono モジュールを有効にしてから mono-glue を生成する必要があると記載されています。NixOS/nixpkgs リポジトリのdefault.nixを自分のニーズに合わせようとしましたが、失敗しました。

私が試みたのは、最初に godot docs に記載されているような接着剤を生成し、次に 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", 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/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 のマニュアルを検索しましたが、問題を解決できませんでした。おそらく、私が何を探しているのか正確にはわからないという事実が原因です。また、godot docs には、接着剤を生成した後、

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

そして、適切なsconsFlagsを使用して上記の派生を単純に再実行できるかどうか、または同じジョブを実行する1つのファイルを単純に書き込むことができるかどうか、およびその方法がわかりません。

誰かが私を助けて正しい方向に向けることができれば、少なくとも私が正確に何を検索しなければならないかを知ることができれば、とても感謝しています. 前もって感謝します。

4

0 に答える 0