diff --git a/pkgs/games/crawl/crawl_purify.patch b/pkgs/games/crawl/crawl_purify.patch deleted file mode 100644 index 8650141744d6..000000000000 --- a/pkgs/games/crawl/crawl_purify.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/crawl-ref/source/util/find_font b/crawl-ref/source/util/find_font -index f8b576fd63..b95c21c0a1 100755 ---- a/crawl-ref/source/util/find_font -+++ b/crawl-ref/source/util/find_font -@@ -1,6 +1,6 @@ - #! /bin/sh - --FONTDIRS="/usr/share/fonts /usr/local/share/fonts /usr/*/lib/X11/fonts" -+FONTDIRS="${fontsPath}/share/fonts" - - name=$1 - [ "$name" ] || { echo "Usage: $0 " >&2; exit 100; } -@@ -11,6 +11,6 @@ name=$1 - for dir in $FONTDIRS; do - [ -d "$dir" ] && echo "$dir" - done -- } | xargs -I% find % \( -type f -o -type l \) -iname "$name" -print \ -+ } | xargs -I% find -L % \( -type f -o -type l \) -iname "$name" -print \ - | head -n1 - } 2>/dev/null -diff --git a/crawl-ref/source/windowmanager-sdl.cc b/crawl-ref/source/windowmanager-sdl.cc -index e29ccff507..9bf01e040a 100644 ---- a/crawl-ref/source/windowmanager-sdl.cc -+++ b/crawl-ref/source/windowmanager-sdl.cc -@@ -20,7 +20,7 @@ - # else - # include - # endif --# include -+# include - # if defined(USE_SOUND) && !defined(WINMM_PLAY_SOUNDS) - # include - # endif diff --git a/pkgs/games/crawl/default.nix b/pkgs/games/crawl/default.nix index fa409987ff81..37dd788d8296 100644 --- a/pkgs/games/crawl/default.nix +++ b/pkgs/games/crawl/default.nix @@ -1,38 +1,69 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, which, sqlite, lua5_1, perl, python3, zlib, pkg-config, ncurses -, dejavu_fonts, libpng, SDL2, SDL2_image, SDL2_mixer, libGLU, libGL, freetype, pngcrush, advancecomp -, tileMode ? false, enableSound ? tileMode, buildPackages - -# MacOS / Darwin builds -, darwin ? null +{ stdenv +, lib +, fetchFromGitHub +, fetchpatch +, which +, sqlite +, lua5_1 +, perl +, python3 +, zlib +, pkg-config +, ncurses +, dejavu_fonts +, libpng +, SDL2 +, SDL2_image +, SDL2_mixer +, libGLU +, libGL +, freetype +, pngcrush +, advancecomp +, tileMode ? false +, enableSound ? tileMode +, buildPackages + # MacOS / Darwin builds +, darwin }: stdenv.mkDerivation rec { pname = "crawl${lib.optionalString tileMode "-tiles"}"; - version = "0.29.0"; + version = "0.31.0"; src = fetchFromGitHub { owner = "crawl"; repo = "crawl"; rev = version; - sha256 = "sha256-SM8dSDV+88QGMqoFkITop1PHh9EakdgiV4tkXCw9pjM="; + hash = "sha256-06tVEduk3Y2VDsoOuI4nGjN8p+wGZT7wEU80nBSg+UU="; }; # Patch hard-coded paths and remove force library builds - patches = [ ./crawl_purify.patch ]; + postPatch = '' + substituteInPlace crawl-ref/source/util/find_font \ + --replace '/usr/share/fonts /usr/local/share/fonts /usr/*/lib/X11/fonts' '${fontsPath}/share/fonts' + substituteInPlace crawl-ref/source/windowmanager-sdl.cc \ + --replace 'SDL_image.h' 'SDL2/SDL_image.h' + ''; nativeBuildInputs = [ pkg-config which perl pngcrush advancecomp ]; # Still unstable with luajit buildInputs = [ lua5_1 zlib sqlite ncurses ] - ++ (with python3.pkgs; [ pyyaml ]) - ++ lib.optionals tileMode [ libpng SDL2 SDL2_image freetype libGLU libGL ] - ++ lib.optional enableSound SDL2_mixer - ++ (lib.optionals stdenv.isDarwin ( - assert (lib.assertMsg (darwin != null) "Must have darwin frameworks available for darwin builds"); - with darwin.apple_sdk.frameworks; [ - AppKit AudioUnit CoreAudio ForceFeedback Carbon IOKit OpenGL - ] - )); + ++ (with python3.pkgs; [ pyyaml ]) + ++ lib.optionals tileMode [ libpng SDL2 SDL2_image freetype libGLU libGL ] + ++ lib.optional enableSound SDL2_mixer + ++ (lib.optionals stdenv.isDarwin ( + with darwin.apple_sdk.frameworks; [ + AppKit + AudioUnit + CoreAudio + ForceFeedback + Carbon + IOKit + OpenGL + ] + )); preBuild = '' cd crawl-ref/source @@ -40,24 +71,43 @@ stdenv.mkDerivation rec { patchShebangs 'util' patchShebangs util/gen-mi-enum rm -rf contrib - ''; + mkdir -p $out/xdg-data + '' + + lib.optionalString tileMode "mv xdg-data/*_tiles.* $out/xdg-data" + + lib.optionalString (!tileMode) "mv xdg-data/*_console.* $out/xdg-data"; fontsPath = lib.optionalString tileMode dejavu_fonts; - makeFlags = [ "prefix=${placeholder "out"}" "FORCE_CC=${stdenv.cc.targetPrefix}cc" "FORCE_CXX=${stdenv.cc.targetPrefix}c++" "HOSTCXX=${buildPackages.stdenv.cc.targetPrefix}c++" - "FORCE_PKGCONFIG=y" - "SAVEDIR=~/.crawl" "sqlite=${sqlite.dev}" - "DATADIR=${placeholder "out"}" - ] ++ lib.optional tileMode "TILES=y" - ++ lib.optional enableSound "SOUND=y"; + makeFlags = [ + "prefix=${placeholder "out"}" + "FORCE_CC=${stdenv.cc.targetPrefix}cc" + "FORCE_CXX=${stdenv.cc.targetPrefix}c++" + "HOSTCXX=${buildPackages.stdenv.cc.targetPrefix}c++" + "FORCE_PKGCONFIG=y" + "SAVEDIR=~/.crawl" + "sqlite=${sqlite.dev}" + "DATADIR=${placeholder "out"}" + ] + ++ lib.optional tileMode "TILES=y" + ++ lib.optional enableSound "SOUND=y"; - postInstall = '' - ${lib.optionalString tileMode "mv $out/bin/crawl $out/bin/crawl-tiles"} - sed -i 's#/usr/games/##' debian/crawl${lib.optionalString tileMode "-tiles"}.desktop - install -m 444 -D debian/crawl${lib.optionalString tileMode "-tiles"}.desktop \ - $out/share/applications/crawl${lib.optionalString tileMode "-tiles"}.desktop - install -m 444 -D dat/tiles/stone_soup_icon-512x512.png $out/share/icons/hicolor/512x512/apps/crawl.png - ''; + postInstall = + lib.optionalString tileMode '' + mv $out/bin/crawl $out/bin/crawl-tiles + echo "Exec=crawl-tiles" >> $out/xdg-data/org.develz.Crawl_tiles.desktop + echo "Icon=crawl" >> $out/xdg-data/org.develz.Crawl_tiles.desktop + install -Dm444 $out/xdg-data/org.develz.Crawl_tiles.desktop -t $out/share/applications + install -Dm444 $out/xdg-data/org.develz.Crawl_tiles.appdata.xml -t $out/share/metainfo + '' + + + lib.optionalString (!tileMode) '' + echo "Exec=crawl" >> $out/xdg-data/org.develz.Crawl_console.desktop + echo "Icon=crawl" >> $out/xdg-data/org.develz.Crawl_console.desktop + install -Dm444 $out/xdg-data/org.develz.Crawl_console.desktop -t $out/share/applications + install -Dm444 $out/xdg-data/org.develz.Crawl_console.appdata.xml -t $out/share/metainfo + '' + + "install -Dm444 dat/tiles/stone_soup_icon-512x512.png $out/share/icons/hicolor/512x512/apps/crawl.png" + ; enableParallelBuilding = true;