summaryrefslogtreecommitdiffstats
path: root/pkgs/games/ace-of-penguins
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2022-01-12 19:50:24 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2022-01-12 22:21:00 -0300
commit37aefe329d5a2761e5b5e72411fb3bea80396f11 (patch)
tree849fb30ada14187af16f4e435f8c18961ecc33ee /pkgs/games/ace-of-penguins
parent37cebc739a16a9e0fa763ecc307745cd98b87fcb (diff)
ace-of-penguins: init at 1.4
Plus patches!
Diffstat (limited to 'pkgs/games/ace-of-penguins')
-rw-r--r--pkgs/games/ace-of-penguins/default.nix78
-rw-r--r--pkgs/games/ace-of-penguins/fixup-miscompilations.patch80
2 files changed, 158 insertions, 0 deletions
diff --git a/pkgs/games/ace-of-penguins/default.nix b/pkgs/games/ace-of-penguins/default.nix
new file mode 100644
index 000000000000..fb15aedc1df8
--- /dev/null
+++ b/pkgs/games/ace-of-penguins/default.nix
@@ -0,0 +1,78 @@
+{ lib
+, stdenv
+, fetchurl
+, copyDesktopItems
+, libX11
+, libXpm
+, libpng
+, makeDesktopItem
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+ pname = "ace-of-penguins";
+ version = "1.4";
+
+ src = fetchurl {
+ url = "http://www.delorie.com/store/ace/ace-${version}.tar.gz";
+ hash = "sha256-H+47BTOSGkKHPAYj8z2HOgZ7HuxY8scMAUSRRueaTM4=";
+ };
+
+ patches = [
+ # Fixes a bunch of miscompilations in modern environments
+ ./fixup-miscompilations.patch
+ ];
+
+ nativeBuildInputs = [
+ copyDesktopItems
+ ];
+
+ buildInputs = [
+ libX11
+ libXpm
+ libpng
+ zlib
+ ];
+
+ desktopItems = let
+ generateItem = gameName: {
+ name = "${pname}-${gameName}";
+ exec = "${placeholder "out"}/bin/${gameName}";
+ comment = "Ace of Penguins ${gameName} Card Game";
+ desktopName = gameName;
+ genericName = gameName;
+ };
+ in
+ map (x: makeDesktopItem (generateItem x)) [
+ "canfield"
+ "freecell"
+ "golf"
+ "mastermind"
+ "merlin"
+ "minesweeper"
+ "pegged"
+ "penguins"
+ "solitaire"
+ "spider"
+ "taipedit"
+ "taipei"
+ "thornq"
+ ];
+
+ meta = with lib; {
+ homepage = "http://www.delorie.com/store/ace/";
+ description = "Solitaire games in X11";
+ longDescription = ''
+ The Ace of Penguins is a set of Unix/X solitaire games based on the ones
+ available for Windows(tm) but with a number of enhancements that my wife
+ says make my versions better :-)
+
+ The latest version includes clones of freecell, golf, mastermind, merlin,
+ minesweeper, pegged, solitaire, taipei (with editor!), and thornq (by
+ Martin Thornquist).
+ '';
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ AndersonTorres ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/games/ace-of-penguins/fixup-miscompilations.patch b/pkgs/games/ace-of-penguins/fixup-miscompilations.patch
new file mode 100644
index 000000000000..599b4a137d79
--- /dev/null
+++ b/pkgs/games/ace-of-penguins/fixup-miscompilations.patch
@@ -0,0 +1,80 @@
+--- ace-1.4/lib/xwin.c
++++ ace-1.4/lib/xwin.c
+@@ -89,10 +89,10 @@
+ /* Motif window hints */
+ typedef struct
+ {
+- unsigned flags;
+- unsigned functions;
+- unsigned decorations;
+- int inputMode;
++ unsigned long flags;
++ unsigned long functions;
++ unsigned long decorations;
++ long inputMode;
+ } PropMotifWmHints;
+
+ typedef PropMotifWmHints PropMwmHints;
+@@ -841,13 +841,13 @@
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
+ info_ptr = png_create_info_struct (png_ptr);
+
+- if (setjmp (png_ptr->jmpbuf)) {
++ if (setjmp (png_jmpbuf (png_ptr))) {
+ fprintf(stderr, "Invalid PNG image!\n");
+ return;
+ }
+
+ file_bytes = src->file_data;
+- png_set_read_fn (png_ptr, (voidp)&file_bytes, (png_rw_ptr)png_reader);
++ png_set_read_fn (png_ptr, (void *)&file_bytes, (png_rw_ptr)png_reader);
+
+ png_read_info (png_ptr, info_ptr);
+
+--- ace-1.4/lib/make-imglib.c
++++ ace-1.4/lib/make-imglib.c
+@@ -86,7 +86,7 @@
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
+ info_ptr = png_create_info_struct (png_ptr);
+
+- if (setjmp (png_ptr->jmpbuf)) {
++ if (setjmp (png_jmpbuf (png_ptr))) {
+ fclose (f);
+ continue;
+ }
+
+--- ace-1.4/lib/Makefile.am
++++ ace-1.4/lib/Makefile.am
+@@ -6,7 +6,7 @@
+ CLEANFILES = images.c images.d
+
+ INCLUDES = $(X_CFLAGS) @PDA@
+-AM_LDFLAGS = $(X_LIBS)
++AM_LDFLAGS = $(X_LIBS) -lpng -lz -lm
+
+ BUILD_CC = @BUILD_CC@
+ AR = @AR@
+
+--- ace-1.4/lib/xwin.c 2020-10-07 02:07:59.000000000 +0300
++++ ace-1.4/lib/xwin.c 2020-10-07 02:15:05.941784967 +0300
+@@ -55,7 +55,6 @@
+ { "-visual", OPTION_INTEGER, &visual_id },
+ { 0, 0, 0 }
+ };
+-OptionDesc *xwin_options = xwin_options_list;
+
+ Display *display=0;
+ int screen=0;
+--- ace-1.4/config.guess 2012-03-24 19:00:49.000000000 +0100
++++ ace-1.4/config.guess 2021-07-05 11:02:16.685843793 +0200
+@@ -882,6 +882,9 @@
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
+ exit ;;
++ aarch64*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+