summary refs log tree commit diff
path: root/pkgs/games/zandronum
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/zandronum')
-rw-r--r--pkgs/games/zandronum/add_gitinfo.patch15
-rw-r--r--pkgs/games/zandronum/bin.nix83
-rw-r--r--pkgs/games/zandronum/default.nix27
-rw-r--r--pkgs/games/zandronum/dont_update_gitinfo.patch19
-rw-r--r--pkgs/games/zandronum/sqlite.nix26
-rw-r--r--pkgs/games/zandronum/zan_configure_impurity.patch65
6 files changed, 143 insertions, 92 deletions
diff --git a/pkgs/games/zandronum/add_gitinfo.patch b/pkgs/games/zandronum/add_gitinfo.patch
new file mode 100644
index 00000000000..4d8d7c83796
--- /dev/null
+++ b/pkgs/games/zandronum/add_gitinfo.patch
@@ -0,0 +1,15 @@
+diff -Naur blah/src/gitinfo.h blah2/src/gitinfo.h
+--- blah/src/gitinfo.h	1969-12-31 16:00:00.000000000 -0800
++++ blah2/src/gitinfo.h	2017-09-15 01:44:43.953562714 -0700
+@@ -0,0 +1,11 @@
++// dd3c3b57023f64cda84f09ed13e4c03a4ad2b920
++//
++// This file was automatically generated by the
++// updaterevision tool. Do not edit by hand.
++
++#define GIT_DESCRIPTION "ZA_3.0-0-dd3c3b57023f"
++#define GIT_HASH "dd3c3b57023f64cda84f09ed13e4c03a4ad2b920"
++#define GIT_TIME "2017-09-01 06:40:50 -0500"
++#define HG_REVISION_NUMBER 1504266050
++#define HG_REVISION_HASH_STRING "dd3c3b57023f"
++#define HG_TIME "170901-1140"
diff --git a/pkgs/games/zandronum/bin.nix b/pkgs/games/zandronum/bin.nix
deleted file mode 100644
index 4fa7ec1b045..00000000000
--- a/pkgs/games/zandronum/bin.nix
+++ /dev/null
@@ -1,83 +0,0 @@
-{ stdenv
-, atk
-, bzip2
-, cairo
-, fetchurl
-, fluidsynth
-, fontconfig
-, freetype
-, gdk_pixbuf
-, glib
-, gtk2
-, libjpeg_turbo
-, mesa_glu
-, mesa_noglu
-, openssl
-, pango
-, SDL
-, zlib
-, makeWrapper
-}:
-
-stdenv.mkDerivation rec {
-  name = "zandronum-2.1.2";
-
-  src = fetchurl {
-    url = "http://zandronum.com/downloads/zandronum2.1.2-linux-x86_64.tar.bz2";
-    sha256 = "1f5aw2m8c0bl3lrvi2k3rrzq3q9x1ikxnxxjgh3k9qvanfn7ykbk";
-  };
-
-  libPath = stdenv.lib.makeLibraryPath [
-    atk
-    bzip2
-    cairo
-    fluidsynth
-    fontconfig
-    freetype
-    gdk_pixbuf
-    glib
-    gtk2
-    libjpeg_turbo
-    mesa_glu
-    mesa_noglu
-    openssl
-    pango
-    SDL
-    stdenv.cc.cc
-    zlib
-  ];
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  phases = [ "unpackPhase" "installPhase" ];
-
-  sourceRoot = ".";
-
-  installPhase = ''
-    mkdir -p $out/bin
-    mkdir -p $out/share/zandronum
-    cp *.so *.pk3 zandronum zandronum-server $out/share/zandronum
-
-    patchelf \
-      --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
-      --set-rpath $libPath:$out/share/zandronum \
-      $out/share/zandronum/zandronum
-    patchelf \
-      --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
-      --set-rpath $libPath \
-      $out/share/zandronum/zandronum-server
-
-    # If we don't set absolute argv0, zandronum.wad file is not found.
-    makeWrapper $out/share/zandronum/zandronum $out/bin/zandronum
-    makeWrapper $out/share/zandronum/zandronum-server $out/bin/zandronum-server
-  '';
-
-  meta = {
-    homepage = http://zandronum.com/;
-    description = "Multiplayer oriented port, based off Skulltag, for Doom and Doom II by id Software. Binary version for online play";
-    maintainers = [ stdenv.lib.maintainers.lassulus ];
-    # Binary version has different version string than source code version.
-    license = stdenv.lib.licenses.unfreeRedistributable;
-    platforms = [ "x86_64-linux" ];
-  };
-}
diff --git a/pkgs/games/zandronum/default.nix b/pkgs/games/zandronum/default.nix
index 7b418559418..fd7113e3a53 100644
--- a/pkgs/games/zandronum/default.nix
+++ b/pkgs/games/zandronum/default.nix
@@ -1,31 +1,40 @@
 { stdenv, lib, fetchhg, cmake, pkgconfig, makeWrapper, callPackage
-, soundfont-fluid, SDL, mesa, bzip2, zlib, libjpeg, fluidsynth, openssl, sqlite-amalgamation, gtk2
+, soundfont-fluid, SDL, mesa, glew, bzip2, zlib, libjpeg, fluidsynth, openssl, gtk2, python3
 , serverOnly ? false
 }:
 
 let
   suffix = lib.optionalString serverOnly "-server";
   fmod = callPackage ./fmod.nix { };
+  sqlite = callPackage ./sqlite.nix { };
 
 # FIXME: drop binary package when upstream fixes their protocol versioning
 in stdenv.mkDerivation {
-  name = "zandronum${suffix}-2.1.2";
+  name = "zandronum${suffix}-3.0";
 
   src = fetchhg {
     url = "https://bitbucket.org/Torr_Samaho/zandronum-stable";
-    rev = "a3663b0061d5";
-    sha256 = "0qwsnbwhcldwrirfk6hpiklmcj3a7dzh6pn36nizci6pcza07p56";
+    rev = "dd3c3b57023f";
+    sha256 = "1f8pd8d2zjwdp6v9anp9yrkdbfhd2mp7svmnna0jiqgxjw6wkyls";
   };
 
+  # zandronum tries to download sqlite now when running cmake, don't let it
+
+  # it also needs the current mercurial revision info embedded in gitinfo.h
+  # otherwise, the client will fail to connect to servers because the
+  # protocol version doesn't match.
+
+  patches = [ ./zan_configure_impurity.patch ./add_gitinfo.patch ./dont_update_gitinfo.patch ];
+
   # I have no idea why would SDL and libjpeg be needed for the server part!
   # But they are.
-  buildInputs = [ openssl bzip2 zlib SDL libjpeg ]
-             ++ lib.optionals (!serverOnly) [ mesa fmod fluidsynth gtk2 ];
+  buildInputs = [ openssl bzip2 zlib SDL libjpeg sqlite ]
+             ++ lib.optionals (!serverOnly) [ mesa glew fmod fluidsynth gtk2 ];
 
-  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
+  nativeBuildInputs = [ cmake pkgconfig makeWrapper python3 ];
 
   preConfigure = ''
-    ln -s ${sqlite-amalgamation}/* sqlite/
+    ln -s ${sqlite}/* sqlite/
     sed -ie 's| restrict| _restrict|g' dumb/include/dumb.h \
                                        dumb/src/it/*.c
   '' + lib.optionalString serverOnly ''
@@ -53,7 +62,7 @@ in stdenv.mkDerivation {
        $out/lib/zandronum
 
     # For some reason, while symlinks work for binary version, they don't for source one.
-    makeWrapper $out/lib/zandronum/zandronum${suffix} $out/bin/zandronum${suffix}
+    makeWrapper $out/lib/zandronum/zandronum${suffix} $out/bin/zandronum${suffix} --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH:${fluidsynth}/lib"
   '';
 
   postFixup = lib.optionalString (!serverOnly) ''
diff --git a/pkgs/games/zandronum/dont_update_gitinfo.patch b/pkgs/games/zandronum/dont_update_gitinfo.patch
new file mode 100644
index 00000000000..d6dd3a58f45
--- /dev/null
+++ b/pkgs/games/zandronum/dont_update_gitinfo.patch
@@ -0,0 +1,19 @@
+diff -r dd3c3b57023f src/CMakeLists.txt
+--- a/src/CMakeLists.txt	Fri Sep 01 06:40:50 2017 -0500
++++ b/src/CMakeLists.txt	Fri Sep 15 01:46:34 2017 -0700
+@@ -636,15 +636,6 @@
+	add_definitions( -DBACKPATCH )
+ endif( BACKPATCH )
+
+-# Update gitinfo.h
+-
+-get_target_property( UPDATEREVISION_EXE updaterevision LOCATION )
+-
+-add_custom_target( revision_check ALL
+-	COMMAND ${UPDATEREVISION_EXE} src/gitinfo.h
+-	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+-	DEPENDS updaterevision )
+-
+ # Libraries ZDoom needs
+
+ message( STATUS "Fluid synth libs: ${FLUIDSYNTH_LIBRARIES}" )
diff --git a/pkgs/games/zandronum/sqlite.nix b/pkgs/games/zandronum/sqlite.nix
new file mode 100644
index 00000000000..35fcb4a0eec
--- /dev/null
+++ b/pkgs/games/zandronum/sqlite.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation {
+  name = "sqlite-zandronum-3.0";
+
+  src = fetchurl {
+    url = "https://www.sqlite.org/2017/sqlite-autoconf-3180000.tar.gz";
+    sha256 = "0p5cx7nbjxk7glcm277ypi5w4gv144qazw79ql47svlpccj62mrp";
+  };
+
+  phases = [ "unpackPhase" "buildPhase" ];
+
+  buildPhase = ''
+    mkdir -p $out
+    cp sqlite3.c $out/
+    cp sqlite3.h $out/
+    cp sqlite3ext.h $out/
+  '';
+
+  meta = {
+    homepage = http://www.sqlite.org/;
+    description = "A single C code file, named sqlite3.c, that contains all C code for the core SQLite library and the FTS3 and RTREE extensions";
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ lib.maintainers.lassulus ];
+  };
+}
diff --git a/pkgs/games/zandronum/zan_configure_impurity.patch b/pkgs/games/zandronum/zan_configure_impurity.patch
new file mode 100644
index 00000000000..0cf7150502e
--- /dev/null
+++ b/pkgs/games/zandronum/zan_configure_impurity.patch
@@ -0,0 +1,65 @@
+diff -r 6d5130e4ae52 sqlite/CMakeLists.txt
+--- a/sqlite/CMakeLists.txt	Sun Sep 10 18:53:00 2017 +0200
++++ b/sqlite/CMakeLists.txt	Fri Sep 15 00:12:11 2017 -0700
+@@ -1,62 +1,5 @@
+ cmake_minimum_required( VERSION 2.4 )
+
+-# [BB/EP] Download SQLite archive and extract the sources if necessary.
+-set( ZAN_SQLITE_VERSION 3180000 ) # SQL version 3.18.0
+-set( ZAN_SQLITE_YEAR 2017 )
+-set( ZAN_SQLITE_SHA1 "74559194e1dd9b9d577cac001c0e9d370856671b" )
+-set( ZAN_SQLITE_DOWNLOAD_NAME "sqlite-autoconf-${ZAN_SQLITE_VERSION}" )
+-set( ZAN_SQLITE_TEMP_ARCHIVE "${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}.tar.gz" )
+-set( ZAN_SQLITE_HASHED_ARCHIVE "${CMAKE_CURRENT_SOURCE_DIR}/sqlite-${ZAN_SQLITE_SHA1}.tar.gz" )
+-
+-if( IS_DIRECTORY ${ZAN_SQLITE_HASHED_ARCHIVE} OR IS_SYMLINK ${ZAN_SQLITE_HASHED_ARCHIVE} )
+-	message( FATAL_ERROR "SQLite: ${ZAN_SQLITE_HASHED_ARCHIVE} must be a valid file.\n"
+-				"SQLite: Please remove it and try again." )
+-elseif( NOT EXISTS ${ZAN_SQLITE_HASHED_ARCHIVE} )
+-
+-	if( IS_DIRECTORY ${ZAN_SQLITE_TEMP_ARCHIVE} OR IS_SYMLINK ${ZAN_SQLITE_TEMP_ARCHIVE} )
+-		message( FATAL_ERROR "SQLite: ${ZAN_SQLITE_TEMP_ARCHIVE} must be a valid file.\n"
+-					"SQLite: Please remove it and try again." )
+-	endif()
+-	message( STATUS "SQLite: downloading the archive..." )
+-
+-	file( DOWNLOAD https://www.sqlite.org/${ZAN_SQLITE_YEAR}/${ZAN_SQLITE_DOWNLOAD_NAME}.tar.gz ${ZAN_SQLITE_TEMP_ARCHIVE}
+-			SHOW_PROGRESS
+-			STATUS ZAN_SQLITE_DOWNLOAD_STATUS )
+-
+-	# Report any problem if present and abort immediately.
+-	list( GET ZAN_SQLITE_DOWNLOAD_STATUS 0 ZAN_SQLITE_DOWNLOAD_ERROR_CODE )
+-	if( ZAN_SQLITE_DOWNLOAD_ERROR_CODE )
+-		list( GET ZAN_SQLITE_DOWNLOAD_STATUS 1 ZAN_SQLITE_DOWNLOAD_ERROR_MESSAGE )
+-		message( FATAL_ERROR "SQLite: download failed. Reason: ${ZAN_SQLITE_DOWNLOAD_ERROR_MESSAGE}" )
+-	endif()
+-
+-	# Check the hash. Abort immediately if it's not valid (something is wrong with the download)
+-	file( SHA1 ${ZAN_SQLITE_TEMP_ARCHIVE} ZAN_SQLITE_CURRENT_SHA1 )
+-	if( NOT ZAN_SQLITE_CURRENT_SHA1 STREQUAL ZAN_SQLITE_SHA1 )
+-		message( FATAL_ERROR "SQLite: download failed. The downloaded file has a different hash:\n"
+-					"SQLite:    valid:      ${ZAN_SQLITE_SHA1}\n"
+-					"SQLite:    downloaded: ${ZAN_SQLITE_CURRENT_SHA1}" )
+-	endif()
+-
+-	message( STATUS "SQLite: saving the source files into the 'sqlite' directory." )
+-
+-	# Rename the archive.
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E rename ${ZAN_SQLITE_TEMP_ARCHIVE} ${ZAN_SQLITE_HASHED_ARCHIVE} )
+-
+-	# Extract the archive.
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ZAN_SQLITE_HASHED_ARCHIVE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
+-
+-	# Copy the required files.
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3.c ${CMAKE_CURRENT_SOURCE_DIR} )
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3.h ${CMAKE_CURRENT_SOURCE_DIR} )
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME}/sqlite3ext.h ${CMAKE_CURRENT_SOURCE_DIR} )
+-
+-	# Remove the extracted folder.
+-	execute_process( COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_SOURCE_DIR}/${ZAN_SQLITE_DOWNLOAD_NAME} )
+-
+-	message( STATUS "SQLite: done." )
+-endif()
+-
+ add_library( sqlite3 sqlite3.c )
+ target_link_libraries( sqlite3 ${CMAKE_DL_LIBS} )