summary refs log tree commit diff
path: root/pkgs/games/exult
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-07-22 14:51:05 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-07-22 15:12:21 +0200
commit9c53065b61c5779711a1b1b6f081858fae7eb593 (patch)
tree8dcf1e3dd97ca0b0dc68e86b61b32a286f8d5044 /pkgs/games/exult
parentee39b4e82ed3109601c9072a42923ae82c9fb7cd (diff)
downloadnixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar.gz
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar.bz2
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar.lz
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar.xz
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.tar.zst
nixpkgs-9c53065b61c5779711a1b1b6f081858fae7eb593.zip
exult: Update to 1.4.9rc1
Diffstat (limited to 'pkgs/games/exult')
-rw-r--r--pkgs/games/exult/64bits.patch21
-rw-r--r--pkgs/games/exult/arch.patch123
-rw-r--r--pkgs/games/exult/default.nix57
3 files changed, 146 insertions, 55 deletions
diff --git a/pkgs/games/exult/64bits.patch b/pkgs/games/exult/64bits.patch
deleted file mode 100644
index 49c67cd2f05..00000000000
--- a/pkgs/games/exult/64bits.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ru exult-1.2-orig/usecode/useval.cc exult-1.2/usecode/useval.cc
---- exult-1.2-orig/usecode/useval.cc	2004-05-23 07:07:11.000000000 +0200
-+++ exult-1.2/usecode/useval.cc	2008-06-25 17:27:15.000000000 +0200
-@@ -464,7 +464,7 @@
- 		if (buflen < 5)
- 			return -1;
- 		*ptr++ = type;
--		Write4(ptr, (int)value.ptr);
-+		Write4(ptr, 0);
- 		break;
- 	case string_type:
- 		{
-@@ -525,7 +525,7 @@
- 	case pointer_type:
- 		if (buflen < 5)
- 			return false;
--		value.ptr = (Game_object*)Read4(ptr); //DON'T dereference this pointer!
-+		value.ptr = 0; //DON'T dereference this pointer!
- 		// Maybe add a new type "serialized_pointer" to prevent "accidents"?
- 		return true;
- 	case string_type:
diff --git a/pkgs/games/exult/arch.patch b/pkgs/games/exult/arch.patch
new file mode 100644
index 00000000000..70de34184a2
--- /dev/null
+++ b/pkgs/games/exult/arch.patch
@@ -0,0 +1,123 @@
+diff -aur exult-1.4.9rc1.orig/desktop/exult.desktop exult-1.4.9rc1/desktop/exult.desktop
+--- exult-1.4.9rc1.orig/desktop/exult.desktop	2008-07-11 05:41:06.000000000 +0600
++++ exult-1.4.9rc1/desktop/exult.desktop	2012-05-19 13:15:30.616084585 +0600
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Exult
+ Comment=Exult Ultima 7 Engine
+ Exec=exult
+-Icon=exult.png
++Icon=exult
+ Terminal=false
+ Type=Application
+-Categories=Application;Game;RolePlaying;
++Categories=Game;RolePlaying;
+diff -aur exult-1.4.9rc1.orig/files/databuf.h exult-1.4.9rc1/files/databuf.h
+--- exult-1.4.9rc1.orig/files/databuf.h	2010-03-10 09:07:05.000000000 +0500
++++ exult-1.4.9rc1/files/databuf.h	2012-05-19 12:50:16.856076030 +0600
+@@ -18,6 +18,7 @@
+ #define DATA_H
+ 
+ #include <cstdio>
++#include <cstddef>
+ #include <cstring>
+ #include <cassert>
+ #include <fstream>
+diff -aur exult-1.4.9rc1.orig/files/U7obj.h exult-1.4.9rc1/files/U7obj.h
+--- exult-1.4.9rc1.orig/files/U7obj.h	2010-02-25 07:52:07.000000000 +0500
++++ exult-1.4.9rc1/files/U7obj.h	2012-05-19 12:50:35.916076137 +0600
+@@ -26,6 +26,7 @@
+ #include <string>
+ #include <vector>
+ #include <cstring>
++#include <cstddef>
+ #include "common_types.h"
+ #include "utils.h"
+ 
+diff -aur exult-1.4.9rc1.orig/imagewin/manip.h exult-1.4.9rc1/imagewin/manip.h
+--- exult-1.4.9rc1.orig/imagewin/manip.h	2010-08-29 20:26:00.000000000 +0600
++++ exult-1.4.9rc1/imagewin/manip.h	2012-05-19 13:02:45.159413596 +0600
+@@ -319,7 +319,7 @@
+ 	static uintD copy(uintS src)
+ 	{
+ 		unsigned int r, g, b;
+-		split_source(src,r,g,b);
++		ManipBaseSrc<color_s,color_d>::split_source(src,r,g,b);
+ 		return ManipBaseDest<color_d>::rgb(r,g,b);
+ 	}
+ 	static void copy(uintD& dest, uintS src)
+diff -aur exult-1.4.9rc1.orig/istring.h exult-1.4.9rc1/istring.h
+--- exult-1.4.9rc1.orig/istring.h	2005-06-07 15:55:39.000000000 +0600
++++ exult-1.4.9rc1/istring.h	2012-05-19 13:01:14.886079750 +0600
+@@ -162,19 +162,19 @@
+ 
+ 	_Myt& operator+=(const _Myt& _Right)
+ 		{	// append _Right
+-		append(_Right);
++		this->append(_Right);
+ 		return (*this);
+ 		}
+ 
+ 	_Myt& operator+=(const _Elem *_Ptr)
+ 		{	// append [_Ptr, <null>)
+-		append(_Ptr);
++		this->append(_Ptr);
+ 		return (*this);
+ 		}
+ 
+ 	_Myt& operator+=(_Elem _Ch)
+ 		{	// append 1 * _Ch
+-		append(static_cast<size_type>(1), _Ch);
++		this->append(static_cast<size_type>(1), _Ch);
+ 		return (*this);
+ 		}
+ 
+diff -aur exult-1.4.9rc1.orig/shapes/pngio.cc exult-1.4.9rc1/shapes/pngio.cc
+--- exult-1.4.9rc1.orig/shapes/pngio.cc	2010-02-15 18:48:11.000000000 -0200
++++ exult-1.4.9rc1/shapes/pngio.cc	2013-09-22 20:56:37.809763588 -0300
+@@ -26,6 +26,7 @@
+ #ifdef HAVE_CONFIG_H
+ #  include <config.h>
+ #endif
++#include <string.h>
+ 
+ #ifdef HAVE_PNG_H
+ 
+@@ -79,7 +80,7 @@
+ 		}
+ 					// Allocate info. structure.
+ 	png_infop info = png_create_info_struct(png);
+-	if (setjmp(png->jmpbuf))	// Handle errors.
++	if (setjmp(png_jmpbuf(png)))	// Handle errors.
+ 		{
+ 		png_destroy_read_struct(&png, &info, 0);
+ 		fclose(fp);
+@@ -208,7 +209,7 @@
+ 		}
+ 					// Allocate info. structure.
+ 	png_infop info = png_create_info_struct(png);
+-	if (setjmp(png->jmpbuf))	// Handle errors.
++	if (setjmp(png_jmpbuf(png)))	// Handle errors.
+ 		{
+ 		png_destroy_write_struct(&png, &info);
+ 		fclose(fp);
+@@ -306,7 +307,7 @@
+ 		}
+ 					// Allocate info. structure.
+ 	png_infop info = png_create_info_struct(png);
+-	if (setjmp(png->jmpbuf))	// Handle errors.
++	if (setjmp(png_jmpbuf(png)))	// Handle errors.
+ 		{
+ 		png_destroy_read_struct(&png, &info, 0);
+ 		fclose(fp);
+@@ -395,7 +396,7 @@
+ 		}
+ 					// Allocate info. structure.
+ 	png_infop info = png_create_info_struct(png);
+-	if (setjmp(png->jmpbuf))	// Handle errors.
++	if (setjmp(png_jmpbuf(png)))	// Handle errors.
+ 		{
+ 		png_destroy_write_struct(&png, &info);
+ 		fclose(fp);
+
diff --git a/pkgs/games/exult/default.nix b/pkgs/games/exult/default.nix
index e784cc109f5..a79b6f8d5d8 100644
--- a/pkgs/games/exult/default.nix
+++ b/pkgs/games/exult/default.nix
@@ -1,56 +1,45 @@
-{stdenv, fetchurl, SDL, SDL_mixer, zlib, libpng, unzip}:
+{ stdenv, fetchurl, pkgconfig, SDL, libogg, libvorbis, zlib, unzip }:
 
 let
 
   # Digital recordings of the music on an original Roland MT-32.  So
   # we don't need actual MIDI playback capability.
-  musicFiles =
-    [ (fetchurl {
-        url = mirror://sourceforge/exult/U7MusicOGG_1of2.zip;
-        md5 = "7746d1a9164fd67509107797496553bf";
-      })
-      (fetchurl {
-        url = mirror://sourceforge/exult/U7MusicOGG_2of2.zip;
-        md5 = "cdae5956d7c52f35e90317913a660123";
-      })
-    ];
+  audio = fetchurl {
+    url = mirror://sourceforge/exult/exult_audio.zip;
+    sha256 = "0s5wvgy9qja06v38g0qwzpaw76ff96vzd6gb1i3lb9k4hvx0xqbj";
+  };
 
 in
 
-stdenv.mkDerivation {
-  name = "exult-1.2";
-  
+stdenv.mkDerivation rec {
+  name = "exult-1.4.9rc1";
+
   src = fetchurl {
-    url = mirror://sourceforge/exult/exult-1.2.tar.gz;
-    md5 = "0fc88dee74a91724d25373ba0a8670ba";
+    url = "mirror://sourceforge/exult/${name}.tar.gz";
+    sha256 = "0a03a2l3ji6h48n106d4w55l8v6lni1axniafnvvv5c5n3nz5bgd";
   };
 
-  # Patches for building on x86_64 and gcc 4.x.
-  patches = [
-    (fetchurl {
-      url = "http://www.rocklinux.net/sources/package/stf/exult/exult-gcc4.patch";
-      sha256 = "1jlikxcpsi3yfchan3jbyi66fcyr18m7kfmsa946lwh3kzckszm7";
-    })
+  configureFlags = "--disable-tools";
 
-    # From http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/games-engines/exult/files/exult-1.2-64bits.patch?rev=1.1
-    ./64bits.patch
-  ];
+  patches =
+    [ # Arch Linux patch set.
+      ./arch.patch
+    ];
+
+  buildInputs = [ pkgconfig SDL libogg libvorbis zlib unzip ];
 
-  buildInputs = [SDL SDL_mixer zlib libpng unzip];
-  
-  NIX_CFLAGS_COMPILE = "-I${SDL_mixer}/include/SDL";
+  enableParallelBuilding = true;
 
   postInstall =
     ''
       mkdir -p $out/share/exult/music
-      for i in $musicFiles; do
-          unzip -o -d $out/share/exult/music $i
-      done
-    '';
-  
+      unzip -o -d $out/share/exult ${audio}
+      chmod 644 $out/share/exult/*.flx
+    ''; # */
+
   meta = {
     homepage = http://exult.sourceforge.net/;
     description = "A reimplementation of the Ultima VII game engine";
-    maintainers = [stdenv.lib.maintainers.eelco];
+    maintainers = [ stdenv.lib.maintainers.eelco ];
   };
 }