diff options
Diffstat (limited to 'pkgs/games/dwarf-fortress')
-rw-r--r-- | pkgs/games/dwarf-fortress/default.nix | 7 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/default.nix | 34 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/skip-ruby.patch | 16 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dfhack/use-system-libraries.patch | 94 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/dwarf-therapist/default.nix | 8 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/themes/cla.nix | 4 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/themes/phoebus.nix | 4 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/unfuck.nix | 5 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/default.nix | 11 | ||||
-rw-r--r-- | pkgs/games/dwarf-fortress/wrapper/dfhack.in | 2 |
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 "$@" |