From 728a13271e62715f5f44ad4353dc4223e1114aa1 Mon Sep 17 00:00:00 2001 From: Mitsuhiro Nakamura Date: Mon, 22 Jan 2018 00:01:17 +0900 Subject: [PATCH 1/4] cataclysm-dda{,-git}: build on Darwin --- pkgs/games/cataclysm-dda/default.nix | 14 ++++++++++---- pkgs/games/cataclysm-dda/git.nix | 13 +++++++++---- pkgs/top-level/all-packages.nix | 8 ++++++-- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix index b46114ec62b..65ed964ba99 100644 --- a/pkgs/games/cataclysm-dda/default.nix +++ b/pkgs/games/cataclysm-dda/default.nix @@ -1,5 +1,5 @@ { fetchFromGitHub, stdenv, makeWrapper, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf, -SDL2_mixer, freetype, gettext }: +SDL2_mixer, freetype, gettext, Cocoa }: stdenv.mkDerivation rec { version = "0.C"; @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper pkgconfig ]; - buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ]; + buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ] + ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa ]; postPatch = '' patchShebangs . @@ -26,7 +27,12 @@ stdenv.mkDerivation rec { -i src/{crafting,skill,weather_data,melee,vehicle,overmap,iuse_actor}.cpp ''; - makeFlags = "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1"; + makeFlags = [ + "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1" + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + "NATIVE=osx CLANG=1" + "OSX_MIN=10.6" # SDL for macOS only supports deploying on 10.6 and above + ]; postInstall = '' wrapProgram $out/bin/cataclysm-tiles \ @@ -64,6 +70,6 @@ stdenv.mkDerivation rec { homepage = http://en.cataclysmdda.com/; license = licenses.cc-by-sa-30; maintainers = [ maintainers.skeidel ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/games/cataclysm-dda/git.nix b/pkgs/games/cataclysm-dda/git.nix index 0437a1b130f..7d79b134786 100644 --- a/pkgs/games/cataclysm-dda/git.nix +++ b/pkgs/games/cataclysm-dda/git.nix @@ -1,5 +1,5 @@ { fetchFromGitHub, stdenv, makeWrapper, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf, -SDL2_mixer, freetype, gettext }: +SDL2_mixer, freetype, gettext, CoreFoundation, Cocoa }: stdenv.mkDerivation rec { version = "2017-12-09"; @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper pkgconfig ]; - buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ]; + buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ] + ++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Cocoa ]; postPatch = '' patchShebangs . @@ -26,7 +27,11 @@ stdenv.mkDerivation rec { -i src/{crafting,skill,weather_data,melee,vehicle,overmap,iuse_actor}.cpp ''; - makeFlags = "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1"; + makeFlags = [ + "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1" + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + "NATIVE=osx CLANG=1" + ]; postInstall = '' wrapProgram $out/bin/cataclysm-tiles \ @@ -65,6 +70,6 @@ stdenv.mkDerivation rec { ''; homepage = http://en.cataclysmdda.com/; license = licenses.cc-by-sa-30; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 25fb245eb9e..bd344003e53 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18139,9 +18139,13 @@ with pkgs; bzflag = callPackage ../games/bzflag { }; - cataclysm-dda = callPackage ../games/cataclysm-dda { }; + cataclysm-dda = callPackage ../games/cataclysm-dda { + inherit (darwin.apple_sdk.frameworks) Cocoa; + }; - cataclysm-dda-git = callPackage ../games/cataclysm-dda/git.nix { }; + cataclysm-dda-git = callPackage ../games/cataclysm-dda/git.nix { + inherit (darwin.apple_sdk.frameworks) CoreFoundation Cocoa; + }; chessdb = callPackage ../games/chessdb { }; From 7287a9e91d9702fbec8899e7f6ffad7551a0f269 Mon Sep 17 00:00:00 2001 From: Mitsuhiro Nakamura Date: Mon, 22 Jan 2018 12:19:27 +0900 Subject: [PATCH 2/4] cataclysm-dda{,-git}: create app launcher on Darwin --- pkgs/games/cataclysm-dda/default.nix | 21 +++++++++++++++++++-- pkgs/games/cataclysm-dda/git.nix | 11 +++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix index 65ed964ba99..c5e17473b49 100644 --- a/pkgs/games/cataclysm-dda/default.nix +++ b/pkgs/games/cataclysm-dda/default.nix @@ -1,5 +1,5 @@ { fetchFromGitHub, stdenv, makeWrapper, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf, -SDL2_mixer, freetype, gettext, Cocoa }: +SDL2_mixer, freetype, gettext, Cocoa, libicns }: stdenv.mkDerivation rec { version = "0.C"; @@ -12,7 +12,8 @@ stdenv.mkDerivation rec { sha256 = "03sdzsk4qdq99qckq0axbsvg1apn6xizscd8pwp5w6kq2fyj5xkv"; }; - nativeBuildInputs = [ makeWrapper pkgconfig ]; + nativeBuildInputs = [ makeWrapper pkgconfig ] + ++ stdenv.lib.optionals stdenv.isDarwin [ libicns ]; buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ] ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa ]; @@ -34,9 +35,25 @@ stdenv.mkDerivation rec { "OSX_MIN=10.6" # SDL for macOS only supports deploying on 10.6 and above ]; + postBuild = '' + # iconutil on macOS is not available in nixpkgs + png2icns data/osx/AppIcon.icns data/osx/AppIcon.iconset/* + ''; + postInstall = '' wrapProgram $out/bin/cataclysm-tiles \ --add-flags "--datadir $out/share/" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + app=$out/Applications/Cataclysm.app + install -D -m 444 data/osx/Info.plist -t $app/Contents + install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources + mkdir $app/Contents/MacOS + launcher=$app/Contents/MacOS/Cataclysm.sh + cat << SCRIPT > $launcher + #!/bin/sh + $out/bin/cataclysm-tiles + SCRIPT + chmod 555 $launcher ''; # Disable, possible problems with hydra diff --git a/pkgs/games/cataclysm-dda/git.nix b/pkgs/games/cataclysm-dda/git.nix index 7d79b134786..3162f2ecb25 100644 --- a/pkgs/games/cataclysm-dda/git.nix +++ b/pkgs/games/cataclysm-dda/git.nix @@ -36,6 +36,17 @@ stdenv.mkDerivation rec { postInstall = '' wrapProgram $out/bin/cataclysm-tiles \ --add-flags "--datadir $out/share/cataclysm-dda/" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + app=$out/Applications/Cataclysm.app + install -D -m 444 data/osx/Info.plist -t $app/Contents + install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources + mkdir $app/Contents/MacOS + launcher=$app/Contents/MacOS/Cataclysm.sh + cat << SCRIPT > $launcher + #!/bin/sh + $out/bin/cataclysm-tiles + SCRIPT + chmod 555 $launcher ''; # https://hydra.nixos.org/build/65193254 From d77ce49c757cf3fab9cabc465509c728afdb31f9 Mon Sep 17 00:00:00 2001 From: Mitsuhiro Nakamura Date: Mon, 22 Jan 2018 19:45:12 +0900 Subject: [PATCH 3/4] cataclysm-dda{,-git}: fix locale directory PREFIX/share/locale should be searched for translations not only on Linux. --- pkgs/games/cataclysm-dda/default.nix | 2 ++ pkgs/games/cataclysm-dda/git.nix | 2 ++ .../patches/fix_locale_dir.patch | 20 +++++++++++++++++++ .../patches/fix_locale_dir_git.patch | 20 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 pkgs/games/cataclysm-dda/patches/fix_locale_dir.patch create mode 100644 pkgs/games/cataclysm-dda/patches/fix_locale_dir_git.patch diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix index c5e17473b49..6ab2b4449b9 100644 --- a/pkgs/games/cataclysm-dda/default.nix +++ b/pkgs/games/cataclysm-dda/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ] ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa ]; + patches = [ ./patches/fix_locale_dir.patch ]; + postPatch = '' patchShebangs . sed -i Makefile \ diff --git a/pkgs/games/cataclysm-dda/git.nix b/pkgs/games/cataclysm-dda/git.nix index 3162f2ecb25..264dc8b65a0 100644 --- a/pkgs/games/cataclysm-dda/git.nix +++ b/pkgs/games/cataclysm-dda/git.nix @@ -17,6 +17,8 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ] ++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Cocoa ]; + patches = [ ./patches/fix_locale_dir_git.patch ]; + postPatch = '' patchShebangs . sed -i Makefile \ diff --git a/pkgs/games/cataclysm-dda/patches/fix_locale_dir.patch b/pkgs/games/cataclysm-dda/patches/fix_locale_dir.patch new file mode 100644 index 00000000000..775a8ec6007 --- /dev/null +++ b/pkgs/games/cataclysm-dda/patches/fix_locale_dir.patch @@ -0,0 +1,20 @@ +diff --git a/src/translations.cpp b/src/translations.cpp +index 6520cfe..49f7b2c 100644 +--- a/src/translations.cpp ++++ b/src/translations.cpp +@@ -72,15 +72,11 @@ void set_language(bool reload_options) + + // Step 2. Bind to gettext domain. + const char *locale_dir; +-#ifdef __linux__ + if (!FILENAMES["base_path"].empty()) { + locale_dir = std::string(FILENAMES["base_path"] + "share/locale").c_str(); + } else { + locale_dir = "lang/mo"; + } +-#else +- locale_dir = "lang/mo"; +-#endif // __linux__ + + bindtextdomain("cataclysm-dda", locale_dir); + bind_textdomain_codeset("cataclysm-dda", "UTF-8"); diff --git a/pkgs/games/cataclysm-dda/patches/fix_locale_dir_git.patch b/pkgs/games/cataclysm-dda/patches/fix_locale_dir_git.patch new file mode 100644 index 00000000000..c3140af03c8 --- /dev/null +++ b/pkgs/games/cataclysm-dda/patches/fix_locale_dir_git.patch @@ -0,0 +1,20 @@ +diff --git a/src/translations.cpp b/src/translations.cpp +index 3a86291..e6c5f84 100644 +--- a/src/translations.cpp ++++ b/src/translations.cpp +@@ -176,15 +176,11 @@ void set_language() + + // Step 2. Bind to gettext domain. + std::string locale_dir; +-#if (defined __linux__ || (defined MACOSX && !defined TILES)) + if( !FILENAMES["base_path"].empty() ) { + locale_dir = FILENAMES["base_path"] + "share/locale"; + } else { + locale_dir = "lang/mo"; + } +-#else +- locale_dir = "lang/mo"; +-#endif // __linux__ + + const char *locale_dir_char = locale_dir.c_str(); + bindtextdomain( "cataclysm-dda", locale_dir_char ); From cf8cd83effe519c0bfc121cd4e3b62dc60cad3fa Mon Sep 17 00:00:00 2001 From: Mitsuhiro Nakamura Date: Mon, 22 Jan 2018 23:06:35 +0900 Subject: [PATCH 4/4] cataclysm-dda: build the icon only on Darwin --- pkgs/games/cataclysm-dda/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix index 6ab2b4449b9..550d557e57e 100644 --- a/pkgs/games/cataclysm-dda/default.nix +++ b/pkgs/games/cataclysm-dda/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { "OSX_MIN=10.6" # SDL for macOS only supports deploying on 10.6 and above ]; - postBuild = '' + postBuild = stdenv.lib.optionalString stdenv.isDarwin '' # iconutil on macOS is not available in nixpkgs png2icns data/osx/AppIcon.icns data/osx/AppIcon.iconset/* '';