gnu: Add kobodeluxe.
* gnu/packages/games.scm (kobodeluxe): New variable. * gnu/packages/patches/kobodeluxe-paths.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.
This commit is contained in:
parent
91988aee12
commit
a56145e1fa
@ -610,6 +610,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 \
|
||||
|
@ -23,6 +23,7 @@
|
||||
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -2966,3 +2967,35 @@ 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"))))
|
||||
(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 graphical game
|
||||
for Un*x systems with X11.")
|
||||
(home-page "http://olofson.net/kobodl/")
|
||||
(license license:gpl2+)))
|
||||
|
17
gnu/packages/patches/kobodeluxe-const-charp-conversion.patch
Normal file
17
gnu/packages/patches/kobodeluxe-const-charp-conversion.patch
Normal file
@ -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
|
67
gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch
Normal file
67
gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch
Normal file
@ -0,0 +1,67 @@
|
||||
# Authhor: Damyan Ivanov <dmn@debian.org>
|
||||
# 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,
|
@ -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();
|
@ -0,0 +1,15 @@
|
||||
# Author: Damyan Ivanov <dmn@debian.org>
|
||||
# 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.
|
@ -0,0 +1,24 @@
|
||||
From: Emile CARRY <emile.carry@sequanux.org>
|
||||
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;
|
||||
}
|
||||
|
||||
|
40
gnu/packages/patches/kobodeluxe-paths.patch
Normal file
40
gnu/packages/patches/kobodeluxe-paths.patch
Normal file
@ -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", "./");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user