guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] add kobodeluxe


From: Stephen Webber
Subject: Re: [PATCH] add kobodeluxe
Date: Mon, 17 Oct 2016 22:49:58 -0500

Thank you both for the warm welcome and feedback :)

I've attached a patch that builds upon Chris's changes.

Changed:
spelling patch - removed
description - "game" now included in description
patch names - use dashes consistently (thank you Chris)

Unchanged:
whitespace warnings - these are due to an intersection of the git patch format and the tabular convention within Kobodeluxe's code
user profile - postponed until someone with security expertise can modify

Patches originate from:
https://packages.debian.org/sid/games/kobodeluxe (parent page)
http://http.debian.net/debian/pool/main/k/kobodeluxe/kobodeluxe_0.5.1-8.debian.tar.xz (direct link)

If any future changes are necessary, please let me know :)

On Mon, Oct 17, 2016 at 11:41 AM, Kei Kebreau <address@hidden> wrote:
Christopher Allan Webber <address@hidden> writes:

>> On Sun, Oct 16, 2016 at 9:06 PM, Kei Kebreau <address@hidden> wrote:
>>> When I applied the patch, git complained about trailing whitespace; a
>>> trivial fix.
>
> Those whitespace "errors" were in the original patches we borrowed from
> Debian, and weren't on any of the lines that patch in new code.
> Nonetheless the patches seem to apply fine without them, so here's an
> adjusted patch that fixes that.  (It also fixes the commit line, since I
> forgot to change the underscores to hyphens there in my last patch!)
>
>  - Chris
>
> From 62bf271a6907bd5b0ec73662bc3f92c64aafa229 Mon Sep 17 00:00:00 2001
> From: Stephen Webber <address@hidden>
> 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 file.
> * gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch: New file.
> * 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-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 +++++
>  .../kobodeluxe-midicon-segmentation-fault.patch    | 24 ++++++++
>  gnu/packages/patches/kobodeluxe-paths.patch        | 40 +++++++++++++
>  gnu/packages/patches/kobodeluxe-spelling.patch     | 25 ++++++++
>  9 files changed, 267 insertions(+)
>  create mode 100644 gnu/packages/patches/kobodeluxe-const-charp-conversion.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-graphics-window-signed-char.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-paths.patch
>  create mode 100644 gnu/packages/patches/kobodeluxe-spelling.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 19dd9ae..a358939 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -621,6 +621,13 @@ dist_patch_DATA =                                                \
>    %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..7c43f84 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -23,6 +23,7 @@
>  ;;; Copyright © 2016 Alex Griffin <address@hidden>
>  ;;; Copyright © 2016 Efraim Flashner <address@hidden>
>  ;;; Copyright © 2016 Jan Nieuwenhuizen <address@hidden>
> +;;; Copyright © 2016 Steve Webber <address@hidden>
>  ;;;
>  ;;; 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/KoboDeluxe-"
> +                                  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=-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-const-charp-conversion.patch b/gnu/packages/patches/kobodeluxe-const-charp-conversion.patch
> new file mode 100644
> index 0000000..8386cf8
> --- /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/+bug/461373
> +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/kobodeluxe/+bug/461373
> +Bug-Debian: http://bugs.debian.org/552548
> +Forwarded: http://www.freelists.org/post/olofsonprojects/kobodlpatch-compile-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,
> +              */
> +             if(token)
> +             {
> +-                    char *tok = strchr(txt, token);
> ++                    const char *tok = strchr(txt, token);
> +                     if(tok)
> +                             tokpos = tok-txt;
> +                     else
> diff --git a/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch
> new file mode 100644
> index 0000000..05cd884
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch
> @@ -0,0 +1,67 @@
> +# Authhor: Damyan Ivanov <address@hidden>
> +# Description: rename pipe2 symbol to pipe2_kbdl to avoid clashes with the one
> +#              declared in system unistd.h
> +# Debian-Bug: 527705
> +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/kobodeluxe-failing-to-build-in-Debian-enemiesh75-error-const-enemy-kind-pipe2-redeclared-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()
> +
> + inline int _enemy::is_pipe()
> + {
> +-    return ((_state != notuse) && ((ek == &pipe1) || (ek == &pipe2)));
> ++    return ((_state != notuse) && ((ek == &pipe1) || (ek == &pipe2_kbdl)));
> + }
> +
> +
> +--- a/enemy.cpp
> ++++ b/enemy.cpp
> +@@ -755,10 +755,10 @@ void _enemy::move_core()
> +
> + 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 ^= 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();
> + }
> +
> +
> +-const enemy_kind pipe2 = {
> ++const enemy_kind pipe2_kbdl = {
> +     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..d626618
> --- /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 @@
> + }
> +
> +
> +-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 char token)
> + {
> +     center_token_fxp(PIXEL2CS(_x), PIXEL2CS(_y), txt, token);
> + }
> +@@ -374,7 +374,7 @@
> + }
> +
> +
> +-void window_t::center_token_fxp(int _x, int _y, const char *txt, char token)
> ++void window_t::center_token_fxp(int _x, int _y, const char *txt, signed char token)
> + {
> +     _x = CS2PIXEL((_x * xs + 128) >> 8);
> +     _y = 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 = 0);
> ++    void center_token(int _x, int _y, const char *txt, signed char token = 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 = 0);
> ++    void center_token_fxp(int _x, int _y, const char *txt, signed char token = 0);
> +     int textwidth(const char *txt, int min = 0, int max = 255);
> +     int textwidth_fxp(const char *txt, int min = 0, int max = 255);
> +     int fontheight();
> diff --git a/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch 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 <address@hidden>
> +# Description: convert a hyphen in kobodl manpage to a minus, which is what is
> +#              inttented here
> +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/patch-manpage-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-midicon-segmentation-fault.patch b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch
> new file mode 100644
> index 0000000..3348348
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch
> @@ -0,0 +1,24 @@
> +From: Emile CARRY <address@hidden>
> +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] = -1;
> +     m[ch].prev[key] = m[ch].last;
> +-    m[ch].next[m[ch].last] = (char)key;
> +     m[ch].last = (char)key;
> ++    m[ch].next[m[ch].last] = (char)key;
> + }
> +
> +
> diff --git a/gnu/packages/patches/kobodeluxe-paths.patch b/gnu/packages/patches/kobodeluxe-paths.patch
> new file mode 100644
> index 0000000..87c7b3a
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-paths.patch
> @@ -0,0 +1,40 @@
> +# Disable reading of configs, graphics, and data from the current directory.
> +# So it's safe to run kobodeluxe from anywhere w/o worry about an attacker
> +# 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");
> +
> +     /*
> +      * 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");
> +
> +     /*
> +      * 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", "./");
> + }
> +
> +
> diff --git a/gnu/packages/patches/kobodeluxe-spelling.patch b/gnu/packages/patches/kobodeluxe-spelling.patch
> new file mode 100644
> index 0000000..cca1629
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-spelling.patch
> @@ -0,0 +1,25 @@
> +Description: two spelling fixes
> +Author: Damyan Ivanov <address@hidden>
> +
> +--- a/graphics/sofont.cpp
> ++++ b/graphics/sofont.cpp
> +@@ -255,7 +255,7 @@ bool SoFont::load(SDL_Surface * FontSurf
> +
> +     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()
> +
> +     if((o_wait_msec != 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 = 30;
> +     }
> +

Less whitespace errors, but the patches apply to the kobodeluxe source
code just fine. But other than what Ludovic brought up and my
nitpicking, the patch looks good. :-)

Attachment: 0001-gnu-Add-kobodeluxe.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]