diff options
Diffstat (limited to 'pkgs/games')
-rw-r--r-- | pkgs/games/build-support/build-game.nix | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/pkgs/games/build-support/build-game.nix b/pkgs/games/build-support/build-game.nix index 46ed83df..5117b330 100644 --- a/pkgs/games/build-support/build-game.nix +++ b/pkgs/games/build-support/build-game.nix @@ -4,6 +4,8 @@ assert withPulseAudio -> libpulseaudio != null; { buildInputs ? [] , nativeBuildInputs ? [] +, preUnpack ? "" +, setSourceRoot ? "" , installCheckPhase ? "" , runtimeDependencies ? [] , ... @@ -16,6 +18,23 @@ stdenv.mkDerivation ({ file ./setup-hooks/auto-patchelf.sh ] ++ nativeBuildInputs; + preUnpack = preUnpack + '' + mkdir "$name" + pushd "$name" &> /dev/null + ''; + + # Try to evade tarbombs + setSourceRoot = '' + popd &> /dev/null + '' + lib.optionalString (setSourceRoot == "") '' + unpackedFiles="$(find "$name" -mindepth 1 -maxdepth 1 -print)" + if [ $(echo "$unpackedFiles" | wc -l) -gt 1 ]; then + sourceRoot="$name" + else + sourceRoot="$name/''${unpackedFiles##*/}" + fi + ''; + runtimeDependencies = let deps = lib.optional withPulseAudio libpulseaudio ++ runtimeDependencies; in map (dep: dep.lib or dep) deps; @@ -45,5 +64,6 @@ stdenv.mkDerivation ({ dontStrip = true; dontPatchELF = true; } // removeAttrs attrs [ - "buildInputs" "nativeBuildInputs" "installCheckPhase" "runtimeDependencies" + "buildInputs" "nativeBuildInputs" "preUnpack" "setSourceRoot" + "installCheckPhase" "runtimeDependencies" ]) |