about summary refs log tree commit diff
path: root/pkgs/games/dwarf-fortress
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/dwarf-fortress')
-rw-r--r--pkgs/games/dwarf-fortress/default.nix7
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/default.nix34
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch16
-rw-r--r--pkgs/games/dwarf-fortress/dfhack/use-system-libraries.patch94
-rw-r--r--pkgs/games/dwarf-fortress/dwarf-therapist/default.nix8
-rw-r--r--pkgs/games/dwarf-fortress/themes/cla.nix4
-rw-r--r--pkgs/games/dwarf-fortress/themes/phoebus.nix4
-rw-r--r--pkgs/games/dwarf-fortress/unfuck.nix5
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/default.nix11
-rw-r--r--pkgs/games/dwarf-fortress/wrapper/dfhack.in2
10 files changed, 56 insertions, 129 deletions
diff --git a/pkgs/games/dwarf-fortress/default.nix b/pkgs/games/dwarf-fortress/default.nix
index 64109279060a..d26258081fcb 100644
--- a/pkgs/games/dwarf-fortress/default.nix
+++ b/pkgs/games/dwarf-fortress/default.nix
@@ -7,11 +7,8 @@ let
   self = rec {
     dwarf-fortress-original = callPackage ./game.nix { };
 
-    dfhack = callPackage_i686 ./dfhack {
-      inherit (pkgsi686Linux.perlPackages) XMLLibXML XMLLibXSLT;
-      protobuf = with pkgsi686Linux; protobuf.override {
-        stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
-      };
+    dfhack = callPackage ./dfhack {
+      inherit (pkgs.perlPackages) XMLLibXML XMLLibXSLT;
     };
 
     dwarf-fortress-unfuck = callPackage ./unfuck.nix { };
diff --git a/pkgs/games/dwarf-fortress/dfhack/default.nix b/pkgs/games/dwarf-fortress/dfhack/default.nix
index 176971920071..74dddbe8df99 100644
--- a/pkgs/games/dwarf-fortress/dfhack/default.nix
+++ b/pkgs/games/dwarf-fortress/dfhack/default.nix
@@ -1,16 +1,23 @@
 { stdenv, fetchgit, cmake, writeScriptBin
 , perl, XMLLibXML, XMLLibXSLT
 , zlib
-, jsoncpp, protobuf, tinyxml
 }:
 
 let
-  dfVersion = "0.43.03";
-  version = "${dfVersion}-r1";
+  dfVersion = "0.43.05";
+  # version = "${dfVersion}-r1";
+  # rev = "refs/tags/${version}";
+  version = "${dfVersion}-alpha2";
+  rev = "13eb5e702beb6d8e40c0e17be64cda9a8d9d1efb";
+  sha256 = "18i8qfhhfnfrpa519akwagn73q2zns1pry2sdfag63vffxh60zr5";
 
-  rev = "refs/tags/${version}";
   # revision of library/xml submodule
-  xmlRev = "98cc1e01886aaea161d651cf97229ad08e9782b0";
+  xmlRev = "84f6e968a9ec5515f9dbef96b445e3fc83f83e8b";
+
+  arch =
+    if stdenv.system == "x86_64-linux" then "64"
+    else if stdenv.system == "i686-linux" then "32"
+    else throw "Unsupported architecture";
 
   fakegit = writeScriptBin "git" ''
     #! ${stdenv.shell}
@@ -35,17 +42,20 @@ in stdenv.mkDerivation rec {
   # Beware of submodules
   src = fetchgit {
     url = "https://github.com/DFHack/dfhack";
-    inherit rev;
-    sha256 = "0m5kqpaz0ypji4c32w0hhbsicvgvnjh56pqvq7af6pqqnyg1nzcx";
+    inherit rev sha256;
   };
 
-  patches = [ ./use-system-libraries.patch ];
+  patches = [ ./skip-ruby.patch ];
 
   nativeBuildInputs = [ cmake perl XMLLibXML XMLLibXSLT fakegit ];
-  # we can't use native Lua; upstream uses private headers
-  buildInputs = [ zlib jsoncpp protobuf tinyxml ];
+  # We don't use system libraries because dfhack needs old C++ ABI.
+  buildInputs = [ zlib ];
+
+  preBuild = ''
+    export LD_LIBRARY_PATH="$PWD/depends/protobuf:$LD_LIBRARY_PATH"
+  '';
 
-  cmakeFlags = [ "-DEXTERNAL_TINYXML=ON" ];
+  cmakeFlags = [ "-DDFHACK_BUILD_ARCH=${arch}" ];
 
   enableParallelBuilding = true;
 
@@ -55,7 +65,7 @@ in stdenv.mkDerivation rec {
     description = "Memory hacking library for Dwarf Fortress and a set of tools that use it";
     homepage = "https://github.com/DFHack/dfhack/";
     license = licenses.zlib;
-    platforms = [ "i686-linux" ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = with maintainers; [ robbinch a1russell abbradar ];
   };
 }
diff --git a/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch b/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch
new file mode 100644
index 000000000000..619060dc2534
--- /dev/null
+++ b/pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch
@@ -0,0 +1,16 @@
+diff -ru3 dfhack-ae59b4f/plugins/ruby/CMakeLists.txt dfhack-ae59b4f-new/plugins/ruby/CMakeLists.txt
+--- dfhack-ae59b4f/plugins/ruby/CMakeLists.txt	1970-01-01 03:00:01.000000000 +0300
++++ dfhack-ae59b4f-new/plugins/ruby/CMakeLists.txt	2016-11-23 15:29:09.907286546 +0300
+@@ -1,3 +1,4 @@
++IF(FALSE)
+ IF (APPLE)
+     SET(RUBYLIB ${CMAKE_CURRENT_SOURCE_DIR}/osx${DFHACK_BUILD_ARCH}/libruby.dylib)
+     SET(RUBYLIB_INSTALL_NAME "libruby.dylib")
+@@ -48,6 +49,7 @@
+             "482c1c418f4ee1a5f04203eee1cda0ef")
+     ENDIF()
+ ENDIF()
++ENDIF()
+ 
+ IF (APPLE OR UNIX)
+     SET(RUBYAUTOGEN ruby-autogen-gcc.rb)
diff --git a/pkgs/games/dwarf-fortress/dfhack/use-system-libraries.patch b/pkgs/games/dwarf-fortress/dfhack/use-system-libraries.patch
deleted file mode 100644
index e33fec9f87ec..000000000000
--- a/pkgs/games/dwarf-fortress/dfhack/use-system-libraries.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 956edfc..fb0e6bc 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -160,8 +160,6 @@ ELSEIF(MSVC)
-   SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od")
- ENDIF()
- 
--# use shared libraries for protobuf
--ADD_DEFINITIONS(-DPROTOBUF_USE_DLLS)
- ADD_DEFINITIONS(-DLUA_BUILD_AS_DLL)
- 
- if(APPLE)
-@@ -182,10 +180,8 @@ else()
-     set(ZLIB_ROOT /usr/lib/i386-linux-gnu)
- endif()
- find_package(ZLIB REQUIRED)
--include_directories(depends/protobuf)
- include_directories(depends/lua/include)
- include_directories(depends/md5)
--include_directories(depends/jsoncpp)
- 
- # Support linking against external tinyxml
- # If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml"
-diff --git a/depends/CMakeLists.txt b/depends/CMakeLists.txt
-index d8442b1..b47dc2a 100644
---- a/depends/CMakeLists.txt
-+++ b/depends/CMakeLists.txt
-@@ -1,7 +1,6 @@
- #list depends here.
- add_subdirectory(lua)
- add_subdirectory(md5)
--add_subdirectory(protobuf)
- 
- # Don't build tinyxml if it's being externally linked against.
- if(NOT TinyXML_FOUND)
-@@ -9,7 +8,6 @@ if(NOT TinyXML_FOUND)
- endif()
- 
- add_subdirectory(tthread)
--add_subdirectory(jsoncpp)
- # build clsocket static and only as a dependency. Setting those options here overrides its own default settings.
- OPTION(CLSOCKET_SHARED "Build clsocket lib as shared." OFF)
- OPTION(CLSOCKET_DEP_ONLY "Build for use inside other CMake projects as dependency." ON)
-diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
-index d3e3480..5d4b572 100644
---- a/library/CMakeLists.txt
-+++ b/library/CMakeLists.txt
-@@ -223,10 +223,10 @@ LIST(APPEND PROJECT_SOURCES ${PROJECT_PROTO_SRCS})
- 
- ADD_CUSTOM_COMMAND(
-     OUTPUT ${PROJECT_PROTO_SRCS} ${PROJECT_PROTO_HDRS}
--    COMMAND protoc-bin -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/
-+    COMMAND protoc -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/
-             --cpp_out=dllexport_decl=DFHACK_EXPORT:${CMAKE_CURRENT_SOURCE_DIR}/proto/
-             ${PROJECT_PROTOS}
--    DEPENDS protoc-bin ${PROJECT_PROTOS}
-+    DEPENDS ${PROJECT_PROTOS}
- )
- 
- # Merge headers into sources
-diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
-index c24b940..afeb888 100644
---- a/plugins/CMakeLists.txt
-+++ b/plugins/CMakeLists.txt
-@@ -47,11 +47,11 @@ STRING(REPLACE ".proto" ".pb.h" PROJECT_PROTO_HDRS "${PROJECT_PROTOS}")
- 
- ADD_CUSTOM_COMMAND(
-     OUTPUT ${PROJECT_PROTO_SRCS} ${PROJECT_PROTO_HDRS}
--    COMMAND protoc-bin -I=${dfhack_SOURCE_DIR}/library/proto/
-+    COMMAND protoc -I=${dfhack_SOURCE_DIR}/library/proto/
-                        -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/
-             --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/proto/
-             ${PROJECT_PROTOS}
--    DEPENDS protoc-bin ${PROJECT_PROTOS}
-+    DEPENDS ${PROJECT_PROTOS}
- )
- add_custom_target(generate_proto DEPENDS ${PROJECT_PROTO_SRCS} ${PROJECT_PROTO_HDRS})
- 
-diff --git a/plugins/stockpiles/CMakeLists.txt b/plugins/stockpiles/CMakeLists.txt
-index 713c3d6..dd2d4cb 100644
---- a/plugins/stockpiles/CMakeLists.txt
-+++ b/plugins/stockpiles/CMakeLists.txt
-@@ -33,8 +33,8 @@ LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS})
- #Generate sources from our proto files and store them in the source tree
- ADD_CUSTOM_COMMAND(
- OUTPUT ${PROJECT_PROTO_SRCS} ${PROJECT_PROTO_HDRS}
--COMMAND protoc-bin -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/ --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/proto/ ${PROJECT_PROTOS}
--DEPENDS protoc-bin ${PROJECT_PROTOS}
-+COMMAND protoc -I=${CMAKE_CURRENT_SOURCE_DIR}/proto/ --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/proto/ ${PROJECT_PROTOS}
-+DEPENDS ${PROJECT_PROTOS}
- )
- 
- IF(WIN32)
diff --git a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
index c13bfd4d3f2d..57610fb1c1c8 100644
--- a/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
+++ b/pkgs/games/dwarf-fortress/dwarf-therapist/default.nix
@@ -26,11 +26,11 @@ stdenv.mkDerivation rec {
     rm $out/bin/dwarftherapist
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Tool to manage dwarves in in a running game of Dwarf Fortress";
-    maintainers = with stdenv.lib.maintainers; [ the-kenny abbradar ];
-    license = stdenv.lib.licenses.mit;
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = with maintainers; [ the-kenny abbradar ];
+    license = licenses.mit;
+    platforms = platforms.linux;
     homepage = "https://github.com/splintermind/Dwarf-Therapist";
   };
 }
diff --git a/pkgs/games/dwarf-fortress/themes/cla.nix b/pkgs/games/dwarf-fortress/themes/cla.nix
index 3933d62b1d38..d5b6ac6c6865 100644
--- a/pkgs/games/dwarf-fortress/themes/cla.nix
+++ b/pkgs/games/dwarf-fortress/themes/cla.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   name = "cla-theme-${version}";
-  version = "43.04-v23";
+  version = "43.05-v23";
 
   src = fetchFromGitHub {
     owner = "DFgraphics";
     repo = "CLA";
     rev = version;
-    sha256 = "0a88jkcli9iq0prg5w0xh1cyms0b7dnc9rdahn7wy7fyakyp7s27";
+    sha256 = "1i74lyz7mpfrvh5g7rajxldhw7zddc2kp8f6bgfr3hl5l8ym5ci9";
   };
 
   installPhase = ''
diff --git a/pkgs/games/dwarf-fortress/themes/phoebus.nix b/pkgs/games/dwarf-fortress/themes/phoebus.nix
index 01ae192e75e6..57f00e89b998 100644
--- a/pkgs/games/dwarf-fortress/themes/phoebus.nix
+++ b/pkgs/games/dwarf-fortress/themes/phoebus.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   name = "phoebus-theme-${version}";
-  version = "43.03";
+  version = "43.05c";
 
   src = fetchFromGitHub {
     owner = "DFgraphics";
     repo = "Phoebus";
     rev = version;
-    sha256 = "1mga5w3mks3bm6qch7azffr51g3q26za7hnas4qmxfs3m56bjav7";
+    sha256 = "0wiz9rd5ypibgh8854h5n2xwksfxylaziyjpbp3p1rkm3r7kr4fd";
   };
 
   installPhase = ''
diff --git a/pkgs/games/dwarf-fortress/unfuck.nix b/pkgs/games/dwarf-fortress/unfuck.nix
index 89000115f4ab..4b71b4377050 100644
--- a/pkgs/games/dwarf-fortress/unfuck.nix
+++ b/pkgs/games/dwarf-fortress/unfuck.nix
@@ -30,11 +30,14 @@ stdenv.mkDerivation {
 
   enableParallelBuilding = true;
 
+  # Breaks dfhack because of inlining.
+  hardeningDisable = [ "fortify" ];
+
   passthru.dfVersion = "0.43.05";
 
   meta = with stdenv.lib; {
     description = "Unfucked multimedia layer for Dwarf Fortress";
-    homepage = https://github.com/svenstaro/dwarf_fortress_unfuck;
+    homepage = "https://github.com/svenstaro/dwarf_fortress_unfuck";
     license = licenses.free;
     platforms = platforms.linux;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/games/dwarf-fortress/wrapper/default.nix b/pkgs/games/dwarf-fortress/wrapper/default.nix
index 5493cdb3faf6..15b51631b33b 100644
--- a/pkgs/games/dwarf-fortress/wrapper/default.nix
+++ b/pkgs/games/dwarf-fortress/wrapper/default.nix
@@ -17,17 +17,12 @@ let
 
   env = buildEnv {
     name = "dwarf-fortress-env-${dwarf-fortress-original.dfVersion}";
+
     paths = pkgs;
+    pathsToLink = [ "/" "/hack" ];
     ignoreCollisions = true;
+
     postBuild = lib.optionalString enableDFHack ''
-      # #4621
-      if [ -L "$out/hack" ]; then
-        rm $out/hack
-        mkdir $out/hack
-        for i in ${dfhack}/hack/*; do
-          ln -s $i $out/hack
-        done
-      fi
       rm $out/hack/symbols.xml
       substitute ${dfhack}/hack/symbols.xml $out/hack/symbols.xml \
         --replace $(cat ${dwarf-fortress-original}/hash.md5.orig) \
diff --git a/pkgs/games/dwarf-fortress/wrapper/dfhack.in b/pkgs/games/dwarf-fortress/wrapper/dfhack.in
index d53769ca4b61..c8d8d287403b 100644
--- a/pkgs/games/dwarf-fortress/wrapper/dfhack.in
+++ b/pkgs/games/dwarf-fortress/wrapper/dfhack.in
@@ -8,4 +8,4 @@ done
 
 cd "$DF_DIR"
 LD_LIBRARY_PATH="$env_dir/hack/libs:$env_dir/hack:$LD_LIBRARY_PATH" \
-  LD_PRELOAD=$env_dir/hack/libdfhack.so exec $env_dir/libs/Dwarf_Fortress "$@"
+  LD_PRELOAD="$env_dir/hack/libdfhack.so:$LD_PRELOAD" exec $env_dir/libs/Dwarf_Fortress "$@"