about summary refs log tree commit diff
path: root/pkgs/games/dwarf-fortress/dfhack
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/dwarf-fortress/dfhack')
-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
3 files changed, 38 insertions, 106 deletions
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)