From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Allan Webber Subject: Re: [PATCH] add kobodeluxe Date: Sun, 16 Oct 2016 20:58:30 -0500 Message-ID: <87h98bag8p.fsf@dustycloud.org> References: <87k2d7anh9.fsf@dustycloud.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bvxCM-00034C-79 for guix-devel@gnu.org; Sun, 16 Oct 2016 21:58:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bvxCI-000224-Pm for guix-devel@gnu.org; Sun, 16 Oct 2016 21:58:42 -0400 Received: from dustycloud.org ([50.116.34.160]:53242) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bvxCI-00021k-IC for guix-devel@gnu.org; Sun, 16 Oct 2016 21:58:38 -0400 In-reply-to: <87k2d7anh9.fsf@dustycloud.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Stephen Webber Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain Christopher Allan Webber writes: > I know Stephen, so I helped him put together this package, which is his > first. It's a long time favorite free software game. > > There were a lot of patches to Kobo Deluxe in Debian; we kept finding > that it wouldn't build without one or another of them, and we read the > summary of all of them and decided they were all probably worth > including. > > I think the package looks fine, but probably someone else should look it > over. If someone can give it an ACK, I'd love to merge it (or you can)! > > - Chris There was something I overlooked, mainly because we corrected it late in the patch... the automake file is missing some backslashes. I also changed some underscores to dashes in the patch filenames. New patch attached! --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-Add-kobodeluxe.patch Content-Transfer-Encoding: quoted-printable >From c8b122d8c7cf7a574bbbac66963ac355c64effc5 Mon Sep 17 00:00:00 2001 From: Stephen Webber Date: Sun, 16 Oct 2016 15:04:35 -0500 Subject: [PATCH] gnu: Add kobodeluxe. * gnu/packages/games.scm (kobodeluxe): New variable. * gnu/packages/patches/kobodeluxe_paths.patch: New file. * gnu/packages/patches/kobodeluxe-spelling.patch: New file. * gnu/packages/patches/kobodeluxe_enemies-pipe-decl.patch: New file. * gnu/packages/patches/kobodeluxe_const_charp_conversion.patch: New file. * gnu/packages/patches/kobodeluxe_manpage-minus-not-hyphen.patch: New fil= e. * gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch: New f= ile. * gnu/packages/patches/kobodeluxe_graphics_window-signed-char.patch: New = file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 7 +++ gnu/packages/games.scm | 34 +++++++++++ .../kobodeluxe-midicon-segmentation-fault.patch | 24 ++++++++ gnu/packages/patches/kobodeluxe-spelling.patch | 25 ++++++++ .../kobodeluxe_const_charp_conversion.patch | 17 ++++++ .../patches/kobodeluxe_enemies-pipe-decl.patch | 67 ++++++++++++++++= ++++++ .../kobodeluxe_graphics_window-signed-char.patch | 38 ++++++++++++ .../kobodeluxe_manpage-minus-not-hyphen.patch | 15 +++++ gnu/packages/patches/kobodeluxe_paths.patch | 40 +++++++++++++ 9 files changed, 267 insertions(+) create mode 100644 gnu/packages/patches/kobodeluxe-midicon-segmentation-= fault.patch create mode 100644 gnu/packages/patches/kobodeluxe-spelling.patch create mode 100644 gnu/packages/patches/kobodeluxe_const_charp_conversio= n.patch create mode 100644 gnu/packages/patches/kobodeluxe_enemies-pipe-decl.pat= ch create mode 100644 gnu/packages/patches/kobodeluxe_graphics_window-signe= d-char.patch create mode 100644 gnu/packages/patches/kobodeluxe_manpage-minus-not-hyp= hen.patch create mode 100644 gnu/packages/patches/kobodeluxe_paths.patch diff --git a/gnu/local.mk b/gnu/local.mk index 19dd9ae..ccdca77 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -621,6 +621,13 @@ dist_patch_DATA =3D \ %D%/packages/patches/jq-CVE-2015-8863.patch \ %D%/packages/patches/khmer-use-libraries.patch \ %D%/packages/patches/kmod-module-directory.patch \ + %D%/packages/patches/kobodeluxe_paths.patch + %D%/packages/patches/kobodeluxe-spelling.patch + %D%/packages/patches/kobodeluxe_enemies-pipe-decl.patch + %D%/packages/patches/kobodeluxe_const_charp_conversion.patch + %D%/packages/patches/kobodeluxe_manpage-minus-not-hyphen.patch + %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch + %D%/packages/patches/kobodeluxe_graphics_window-signed-char.patch %D%/packages/patches/laby-make-install.patch \ %D%/packages/patches/ldc-disable-tests.patch \ %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 2bb53e0..3fed38c 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -23,6 +23,7 @@ ;;; Copyright =C2=A9 2016 Alex Griffin ;;; Copyright =C2=A9 2016 Efraim Flashner ;;; Copyright =C2=A9 2016 Jan Nieuwenhuizen +;;; Copyright =C2=A9 2016 Steve Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -2994,3 +2995,36 @@ symbols, the game needs graphics to render the non= -euclidean world.") license:public-domain ; src/direntx.* license:zlib ; src/savepng.* license:gpl2+)))) ; remaining files + +(define-public kobodeluxe + (package + (name "kobodeluxe") + (version "0.5.1") + (source (origin + (method url-fetch) + (uri (string-append "http://olofson.net/kobodl/download/Ko= boDeluxe-" + version ".tar.bz2")) + (sha256 + (base32 + "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg")) + (patches (search-patches + "kobodeluxe_const_charp_conversion.patch" + "kobodeluxe_enemies-pipe-decl.patch" + "kobodeluxe_graphics_window-signed-char.patch" + "kobodeluxe_manpage-minus-not-hyphen.patch" + "kobodeluxe-midicon-segmentation-fault.patch" + "kobodeluxe_paths.patch" + "kobodeluxe-spelling.patch")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "CPPFLAGS=3D-I" + (assoc-ref %build-inputs "sdl-union") + "/include/SDL")))) + (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image))))) + (synopsis "Shooter with space station destruction") + (description + "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo for Un= *x +systems with X11.") + (home-page "http://olofson.net/kobodl/") + (license license:gpl2+))) diff --git a/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.p= atch b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch new file mode 100644 index 0000000..65ce259 --- /dev/null +++ b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch @@ -0,0 +1,24 @@ +From: Emile CARRY +Date: Wed, 6 Apr 2016 00:27:17 +0200 +Subject: midicon segmentation fault + +Debian-Bug: https://bugs.debian.org/819897 +Forwarded: no +--- + sound/a_midicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/a_midicon.c b/sound/a_midicon.c +index 57de3cf..ded2988 100644 +--- a/sound/a_midicon.c ++++ b/sound/a_midicon.c +@@ -120,8 +120,8 @@ static inline void __press(unsigned ch, unsigned key= ) + { + m[ch].next[key] =3D -1; + m[ch].prev[key] =3D m[ch].last; +- m[ch].next[m[ch].last] =3D (char)key; + m[ch].last =3D (char)key; ++ m[ch].next[m[ch].last] =3D (char)key; + } +=20 +=20 diff --git a/gnu/packages/patches/kobodeluxe-spelling.patch b/gnu/package= s/patches/kobodeluxe-spelling.patch new file mode 100644 index 0000000..21259cc --- /dev/null +++ b/gnu/packages/patches/kobodeluxe-spelling.patch @@ -0,0 +1,25 @@ +Description: two spelling fixes +Author: Damyan Ivanov + +--- a/graphics/sofont.cpp ++++ b/graphics/sofont.cpp +@@ -255,7 +255,7 @@ bool SoFont::load(SDL_Surface * FontSurf +=20 + if(!FontSurface) + { +- log_printf(ELOG, "SoFont recieved a NULL SDL_Surface\n"); ++ log_printf(ELOG, "SoFont received a NULL SDL_Surface\n"); + return false; + } + if(picture) +--- a/prefs.cpp ++++ b/prefs.cpp +@@ -161,7 +161,7 @@ void prefs_t::postload() +=20 + if((o_wait_msec !=3D 30) && !cmd_cheat) + { +- log_printf(ELOG, "'wait' is only avaliable in cheat mode!\n"); ++ log_printf(ELOG, "'wait' is only available in cheat mode!\n"); + o_wait_msec =3D 30; + } +=20 diff --git a/gnu/packages/patches/kobodeluxe_const_charp_conversion.patch= b/gnu/packages/patches/kobodeluxe_const_charp_conversion.patch new file mode 100644 index 0000000..a14ed4b --- /dev/null +++ b/gnu/packages/patches/kobodeluxe_const_charp_conversion.patch @@ -0,0 +1,17 @@ +Description: Avoid compilation error with gcc-4.4. + "const char* -> char*" conversion is fatal in that version +Origin: vendor, https://bugs.launchpad.net/ubuntu/+source/kobodeluxe/+bu= g/461373 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/kobodeluxe/+bug/46= 1373 +Bug-Debian: http://bugs.debian.org/552548 +Forwarded: http://www.freelists.org/post/olofsonprojects/kobodlpatch-com= pile-error-in-windowcpp-with-g44 +--- a/graphics/window.cpp ++++ b/graphics/window.cpp +@@ -398,7 +398,7 @@ void window_t::center_token_fxp(int _x,=20 + */ + if(token) + { +- char *tok =3D strchr(txt, token); ++ const char *tok =3D strchr(txt, token); + if(tok) + tokpos =3D tok-txt; + else diff --git a/gnu/packages/patches/kobodeluxe_enemies-pipe-decl.patch b/gn= u/packages/patches/kobodeluxe_enemies-pipe-decl.patch new file mode 100644 index 0000000..9510ed4 --- /dev/null +++ b/gnu/packages/patches/kobodeluxe_enemies-pipe-decl.patch @@ -0,0 +1,67 @@ +# Authhor: Damyan Ivanov +# Description: rename pipe2 symbol to pipe2_kbdl to avoid clashes with t= he one +# declared in system unistd.h +# Debian-Bug: 527705 +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/kobodel= uxe-failing-to-build-in-Debian-enemiesh75-error-const-enemy-kind-pipe2-re= declared-as-different-kind-of-symbol +--- a/enemies.h ++++ b/enemies.h +@@ -72,7 +72,7 @@ extern const enemy_kind bombdeto; + extern const enemy_kind cannon; + extern const enemy_kind pipe1; + extern const enemy_kind core; +-extern const enemy_kind pipe2; ++extern const enemy_kind pipe2_kbdl; + extern const enemy_kind rock; + extern const enemy_kind ring; + extern const enemy_kind enemy_m1; +@@ -430,7 +430,7 @@ inline int _enemy::realize() +=20 + inline int _enemy::is_pipe() + { +- return ((_state !=3D notuse) && ((ek =3D=3D &pipe1) || (ek =3D=3D &pip= e2))); ++ return ((_state !=3D notuse) && ((ek =3D=3D &pipe1) || (ek =3D=3D &pip= e2_kbdl))); + } +=20 +=20 +--- a/enemy.cpp ++++ b/enemy.cpp +@@ -755,10 +755,10 @@ void _enemy::move_core() +=20 + void _enemy::kill_core() + { +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); + enemies.make(&explosion4, CS2PIXEL(x), CS2PIXEL(y)); + sound.g_base_core_explo(x, y); + release(); +@@ -978,19 +978,19 @@ void _enemy::move_pipe2() + } + p ^=3D a; + if(p & U_MASK) +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); + if(p & R_MASK) +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); + if(p & D_MASK) +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); + if(p & L_MASK) +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); + manage.add_score(10); + release(); + } +=20 +=20 +-const enemy_kind pipe2 =3D { ++const enemy_kind pipe2_kbdl =3D { + 0, + &_enemy::make_pipe2, + &_enemy::move_pipe2, diff --git a/gnu/packages/patches/kobodeluxe_graphics_window-signed-char.= patch b/gnu/packages/patches/kobodeluxe_graphics_window-signed-char.patch new file mode 100644 index 0000000..b258b62 --- /dev/null +++ b/gnu/packages/patches/kobodeluxe_graphics_window-signed-char.patch @@ -0,0 +1,38 @@ +# This was created in responce to Debian bug #163979 +# Thing is, if you want to compant "-1" with a char value, +# you better make that char signed +--- kobodeluxe-0.5.1.orig/graphics/window.cpp ++++ kobodeluxe-0.5.1/graphics/window.cpp +@@ -331,7 +331,7 @@ + } +=20 +=20 +-void window_t::center_token(int _x, int _y, const char *txt, char token= ) ++void window_t::center_token(int _x, int _y, const char *txt, signed cha= r token) + { + center_token_fxp(PIXEL2CS(_x), PIXEL2CS(_y), txt, token); + } +@@ -374,7 +374,7 @@ + } +=20 +=20 +-void window_t::center_token_fxp(int _x, int _y, const char *txt, char t= oken) ++void window_t::center_token_fxp(int _x, int _y, const char *txt, signed= char token) + { + _x =3D CS2PIXEL((_x * xs + 128) >> 8); + _y =3D CS2PIXEL((_y * ys + 128) >> 8); +--- kobodeluxe-0.5.1.orig/graphics/window.h ++++ kobodeluxe-0.5.1/graphics/window.h +@@ -265,10 +265,10 @@ + void font(int fnt); + void string(int _x, int _y, const char *txt); + void center(int _y, const char *txt); +- void center_token(int _x, int _y, const char *txt, char token =3D 0); ++ void center_token(int _x, int _y, const char *txt, signed char token =3D= 0); + void string_fxp(int _x, int _y, const char *txt); + void center_fxp(int _y, const char *txt); +- void center_token_fxp(int _x, int _y, const char *txt, char token =3D = 0); ++ void center_token_fxp(int _x, int _y, const char *txt, signed char tok= en =3D 0); + int textwidth(const char *txt, int min =3D 0, int max =3D 255); + int textwidth_fxp(const char *txt, int min =3D 0, int max =3D 255); + int fontheight(); diff --git a/gnu/packages/patches/kobodeluxe_manpage-minus-not-hyphen.pat= ch b/gnu/packages/patches/kobodeluxe_manpage-minus-not-hyphen.patch new file mode 100644 index 0000000..34cab90 --- /dev/null +++ b/gnu/packages/patches/kobodeluxe_manpage-minus-not-hyphen.patch @@ -0,0 +1,15 @@ +# Author: Damyan Ivanov +# Description: convert a hyphen in kobodl manpage to a minus, which is w= hat is +# inttented here +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/patch-m= anpage-uses-hyphen-instead-of-a-minus-sign +--- a/kobodl.6 ++++ b/kobodl.6 +@@ -176,7 +176,7 @@ Video Mode. Default: 17200. + Enable Vertical Sync. Default: On. + .TP + .B \-videopages +-Number of Video Pages. Default: -1. ++Number of Video Pages. Default: \-1. + .TP + .B \-scalemode + Scaling Filter Mode. Default: 1. diff --git a/gnu/packages/patches/kobodeluxe_paths.patch b/gnu/packages/p= atches/kobodeluxe_paths.patch new file mode 100644 index 0000000..b54ab52 --- /dev/null +++ b/gnu/packages/patches/kobodeluxe_paths.patch @@ -0,0 +1,40 @@ +# Disable reading of configs, graphics, and data from the current direct= ory. +# So it's safe to run kobodeluxe from anywhere w/o worry about an attack= er +# feeding it bad data. +--- kobodeluxe-0.5.1.orig/kobo.cpp ++++ kobodeluxe-0.5.1/kobo.cpp +@@ -141,21 +141,21 @@ + * Graphics data + */ + /* Current dir; from within the build tree */ +- fmap->addpath("GFX", "./data/gfx"); ++ //fmap->addpath("GFX", "./data/gfx"); + /* Real data dir */ + fmap->addpath("GFX", "DATA>>gfx"); + /* Current dir */ +- fmap->addpath("GFX", "./gfx"); ++ //fmap->addpath("GFX", "./gfx"); +=20 + /* + * Sound data + */ + /* Current dir; from within the build tree */ +- fmap->addpath("SFX", "./data/sfx"); ++ //fmap->addpath("SFX", "./data/sfx"); + /* Real data dir */ + fmap->addpath("SFX", "DATA>>sfx"); + /* Current dir */ +- fmap->addpath("SFX", "./sfx"); ++ //fmap->addpath("SFX", "./sfx"); +=20 + /* + * Score files (user and global) +@@ -173,7 +173,7 @@ + /* System local */ + fmap->addpath("CONFIG", SYSCONF_DIR); + /* In current dir (last resort) */ +- fmap->addpath("CONFIG", "./"); ++ //fmap->addpath("CONFIG", "./"); + } +=20 +=20 --=20 2.1.4 --=-=-=--