diff --git a/games/KoboDeluxe/02_paths.patch b/games/KoboDeluxe/02_paths.patch new file mode 100644 index 0000000000..b54ab52ded --- /dev/null +++ b/games/KoboDeluxe/02_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/games/KoboDeluxe/KoboDeluxe.SlackBuild b/games/KoboDeluxe/KoboDeluxe.SlackBuild index 8e63396d60..0e0dfc5425 100644 --- a/games/KoboDeluxe/KoboDeluxe.SlackBuild +++ b/games/KoboDeluxe/KoboDeluxe.SlackBuild @@ -2,27 +2,29 @@ # Slackware build script for Kobo Deluxe -# Written by Rubén Llorente +# Written by Rubén Llorente +# Updated and maintained by B. Watson -# This script is of public domain. It can be distributed, modified and used as desired. - -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. +# 20230804 bkw, BUILD=2: +# - take over maintenance. +# - relicense as WTFPL. +# - install binary stripped. +# - add patch from Debian to allow the game to be unpaused. apparently +# this has been broken at least since Slackware 15.0 released, +# maybe even before that. +# - include upstream's icons in the package (and remove ours). +# - update .desktop file. +# - mention Bosconian in the README, since this game is basically a +# remake of it with a few enhancements. +# - fix typos and grammar in man page, and extend the CONTROLS section. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=KoboDeluxe VERSION=${VERSION:-0.5.1} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -34,9 +36,6 @@ if [ -z "$ARCH" ]; then esac fi -# If the variable PRINT_PACKAGE_NAME is set, then this script will report what -# the name of the created package would be, and then exit. This information -# could be useful to other scripts. if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 @@ -66,20 +65,29 @@ rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT $PKG/install cd $TMP rm -rf $PRGNAM-$VERSION -tar xvjf $CWD/$PRGNAM-$VERSION.tar.bz2 -cp -t $TMP $CWD/kobodeluxe-0.5.1-glibc2.10.patch $CWD/kobodeluxe-gcc-4.3.patch +tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 cd $PRGNAM-$VERSION +tar xvf icons.tar.gz chown -R root:root . -find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ - -o -perm 511 \) -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} + -# This patches are incuded to fix compilation bugs. -# I want to thank the Arch comunity for making them availible. -patch -p0 <$TMP/kobodeluxe-0.5.1-glibc2.10.patch -patch -p0 <$TMP/kobodeluxe-gcc-4.3.patch +# These patches are incuded to fix compilation bugs. +# I want to thank the Arch community for making them availible. +patch -p0 < $CWD/kobodeluxe-0.5.1-glibc2.10.patch +patch -p0 < $CWD/kobodeluxe-gcc-4.3.patch + +# 20230804 bkw: patch from Debian. Without this, the game starts +# up in Paused mode, and cannot be unpaused. +patch -p1 < $CWD/ignore-appinputfocus.patch + +# 20230804 bkw: another Debian patch, prevents the game from looking +# in the current directory for data. +patch -p1 < $CWD/02_paths.patch + +# 20230804 bkw: fix typos/grammar and document the pause and screenshot +# keystrokes. +patch -p1 < $CWD/manpagefix.diff CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ @@ -95,18 +103,25 @@ CXXFLAGS="$SLKCFLAGS" \ --build=$ARCH-slackware-linux make -make install DESTDIR=$PKG +make install-strip DESTDIR=$PKG +gzip -9 $PKG/usr/man/man*/* -find $PKG/usr/man -type f -exec gzip -9 {} \; -for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done +# 20230804 bkw: upstream included prescaled icons in icons.tar.gz. +for i in icons/KDE/icons/*; do + size="$( basename $i )" + dir=$PKG/usr/share/icons/hicolor/$size/apps + mkdir -p $dir + cp -a $i/kobodl.png $dir +done mkdir -p $PKG/usr/share/{applications,pixmaps} -cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop +ln -s ../icons/hicolor/48x48/apps/kobodl.png $PKG/usr/share/pixmaps -mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a COPYING README* ChangeLog TODO $PKG/usr/doc/$PRGNAM-$VERSION -cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION +mkdir -p $PKGDOC +cp -a COPYING README* ChangeLog TODO $PKGDOC +cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh diff --git a/games/KoboDeluxe/KoboDeluxe.desktop b/games/KoboDeluxe/KoboDeluxe.desktop index 89e3254379..07a99e8435 100644 --- a/games/KoboDeluxe/KoboDeluxe.desktop +++ b/games/KoboDeluxe/KoboDeluxe.desktop @@ -1,7 +1,14 @@ [Desktop Entry] -Name=Kobo Deluxe -GenericName=Kobo Deluxe, a retro arcade-style game -Exec=kobodl -Icon=KoboDeluxe Type=Application +Name=Kobo Deluxe +Name[nl]=Kobo Deluxe +Comment=Destroy enemy bases in space +Comment[nl]=Schiet vijandelijke bases in de ruimte kapot +Comment[fr]=Détruire des bases ennemies dans l'espace +GenericName=Arcade Game +GenericName[nl]=Arcadespel +GenericName[fr]=Jeu d'Arcade +Exec=/usr/games/kobodl +Icon=kobodl +Terminal=false Categories=Game;ArcadeGame; diff --git a/games/KoboDeluxe/KoboDeluxe.info b/games/KoboDeluxe/KoboDeluxe.info index d91d1f1063..10bf6d73f6 100644 --- a/games/KoboDeluxe/KoboDeluxe.info +++ b/games/KoboDeluxe/KoboDeluxe.info @@ -6,5 +6,5 @@ MD5SUM="cb5dcdaf07ccad18a921058138dedc4a" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" -MAINTAINER="Rubén Llorente" -EMAIL="porting@use.startmail.com" +MAINTAINER="B. Watson" +EMAIL="urchlay@slackware.uk" diff --git a/games/KoboDeluxe/KoboDeluxe.png b/games/KoboDeluxe/KoboDeluxe.png deleted file mode 100644 index 617d0216e2..0000000000 Binary files a/games/KoboDeluxe/KoboDeluxe.png and /dev/null differ diff --git a/games/KoboDeluxe/README b/games/KoboDeluxe/README index 1572e09af6..b168dc7a61 100644 --- a/games/KoboDeluxe/README +++ b/games/KoboDeluxe/README @@ -1,6 +1,11 @@ +KoboDeluxe (2d space shooting game) + Kobo is a game based on Xkobo. It is a 2D scrolling shooting game where you must destroy every enemy starbase you find in each stage, while avoiding being taken down by their defenses, the enemy ships, the asteroids... -Tons of good old arcade endless action. +Gameplay is very similar to the classic arcade game Bosconian, from +1981. + +The executable and man page are called "kobodl". diff --git a/games/KoboDeluxe/doinst.sh b/games/KoboDeluxe/doinst.sh index ef0cf43a90..65c7e2eeb9 100644 --- a/games/KoboDeluxe/doinst.sh +++ b/games/KoboDeluxe/doinst.sh @@ -1,3 +1,9 @@ if [ -x /usr/bin/update-desktop-database ]; then - /usr/bin/update-desktop-database usr/share/applications &> /dev/null + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1 + fi fi diff --git a/games/KoboDeluxe/ignore-appinputfocus.patch b/games/KoboDeluxe/ignore-appinputfocus.patch new file mode 100644 index 0000000000..90a6a403c8 --- /dev/null +++ b/games/KoboDeluxe/ignore-appinputfocus.patch @@ -0,0 +1,17 @@ +Description: ignore SDL_ACTIVEEVENT with SDL_APPINPUTFOCUS flag + These events seem to come all the time, causing a pause which can't be + unpaused +Bug-Debian: https://bugs.debian.org/909244 +Author: Reiner Herrmann + +--- a/kobo.cpp ++++ b/kobo.cpp +@@ -1691,7 +1691,7 @@ void kobo_gfxengine_t::frame() + break; + case SDL_ACTIVEEVENT: + // Any type of focus loss should activate pause mode! +- if(!ev.active.gain) ++ if(!ev.active.gain && ev.active.state != SDL_APPINPUTFOCUS) + km.pause_game(); + break; + case SDL_QUIT: diff --git a/games/KoboDeluxe/manpagefix.diff b/games/KoboDeluxe/manpagefix.diff new file mode 100644 index 0000000000..2d9e9deab0 --- /dev/null +++ b/games/KoboDeluxe/manpagefix.diff @@ -0,0 +1,120 @@ +diff -Naur KoboDeluxe-0.5.1/kobodl.6 KoboDeluxe-0.5.1.patched/kobodl.6 +--- KoboDeluxe-0.5.1/kobodl.6 2007-12-26 15:15:10.000000000 -0500 ++++ KoboDeluxe-0.5.1.patched/kobodl.6 2023-08-04 18:04:07.069016990 -0400 +@@ -1,14 +1,14 @@ +-.TH KOBODL 6 "26 December 2007" ++.TH KOBODL 6 "4 August 2023" 0.5.1 SlackBuilds.org + .SH NAME +-kobodl - Kobo Deluxe, an enhanced version of the scrolling game XKobo ++kobodl \- Kobo Deluxe, an enhanced version of the scrolling game XKobo + .SH SYNOPSIS + .B kobodl + [ + .I options + ] + .SH DESCRIPTION +-Kobo Deluxe is a 3'rd person scrolling 2D shooter with a simple and responsive +-control system - which you'll need to tackle the tons of enemy ships that shoot ++Kobo Deluxe is a 3rd person scrolling 2D shooter with a simple and responsive ++control system \- which you'll need to tackle the tons of enemy ships that shoot + at you, chase you, circle around you shooting, or even launch other ships at + you, while you're trying to destroy the labyrinth shaped bases. There are 50 + action packed levels with smoothly increasing difficulty, and different +@@ -31,10 +31,15 @@ + .SH CONTROLS + The ship can be controlled with the keyboard, or optionally a mouse or + joystick. With the keyboard, the arrow keys move the ship (two keys for +-diagonals), and the shift and ctrl keys shoots. The numeric key pad can also be ++diagonals), and the Shift or Ctrl key shoots. The numeric key pad can also be + used; the usual 2/4/6/8 (arrows), and also 1/3/7/9 for single key diagonals. +-Escape enters the meny system, from where it is possible to change settings, ++Escape enters the menu system, from where it is possible to change settings, + start a new game or exit the game. ++.P ++During gameplay, you can press P or the Pause key to pause/unpause the game. ++PrintScreen or SysRq saves a screenshot of the game to a file in the current ++directory named \fBscreenXX.bmp\fR, where the \fBXX\fR is a number from 00 ++to 99. + .SH OPTIONS + Note that all relevant options can be also configured in the config file, + which can be edited directly, or using the options menus in the game. +@@ -70,7 +75,7 @@ + Always Fire. Default: Off. + .TP + .B \-[no]mousecapture +-In-game Mouse Capture. Default: On. ++In\-game Mouse Capture. Default: On. + .TP + .B \-scrollradar + Radar Scroll Mode. Default: 2. +@@ -130,7 +135,7 @@ + Sound Effects Volume. Default: 100. + .TP + .B \-music_vol +-In-Game Music Volume. Default: 30. ++In\-Game Music Volume. Default: 30. + .TP + .B \-reverb + Reverb Level. Default: 100. +@@ -176,7 +181,7 @@ + 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. +@@ -200,13 +205,13 @@ + Contrast. Default: 100. + .TP + .B \-files +-Specify the root path of the game. Default: "" ++Specify the root path of the game. Default: "/usr/share/kobo-deluxe" + .TP + .B \-gfx +-Specify the path to the game's graphics data. Default: "" ++Specify the path to the game's graphics data. Default: "/usr/share/kobo-deluxe/gfx" + .TP + .B \-sfx +-Specify the path to the game's sound data. Default: "" ++Specify the path to the game's sound data. Default: "/usr/share/kobo-deluxe/sfx" + .TP + .B \-scores + Specify the path to the game's score files. Default: "" +@@ -285,11 +290,15 @@ + (Not saved!) Print options for 'man'. Default: Off. + .SH FILES + .TP ++.B /var/games/kobo-deluxe/scores/ ++High score files are stored here. These are binary files, ++not human\-readable; use the \fB\-hiscores\fR option to view them. ++.TP + .B ~/.kobodlrc +-The per-user configuration file for Kobo Deluxe. ++The per\-user configuration file for Kobo Deluxe. + .SH AUTHORS + Originally written by +-Akira Higuchi (a-higuti@math.hokudai.ac.jp), XKobo was turned into Kobo ++Akira Higuchi (a\-higuti@math.hokudai.ac.jp), XKobo was turned into Kobo + Deluxe by David Olofson + .SH THANKS + Thanks, in no particular order, to... +@@ -364,7 +373,7 @@ + .P + Copyright (C) 1997 Masanao Izumo + .P +-Copyright (C) 1999-2001 Simon Peter ++Copyright (C) 1999\-2001 Simon Peter + .P + Copyright (C) 2002 Florian Schulze + .P +@@ -372,7 +381,7 @@ + .P + Copyright (C) 2005 Erik Auerswald + .P +-Copyright (c) 1999-2007 David Olofson ++Copyright (c) 1999\-2007 David Olofson + .P + \fBKobo Deluxe\fP is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License. diff --git a/games/KoboDeluxe/slack-desc b/games/KoboDeluxe/slack-desc index 2bd324112d..a69f49e676 100644 --- a/games/KoboDeluxe/slack-desc +++ b/games/KoboDeluxe/slack-desc @@ -6,14 +6,14 @@ # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| -KoboDeluxe: KoboDeluxe (Simple space shooting game) +KoboDeluxe: KoboDeluxe (2d space shooting game) KoboDeluxe: -KoboDeluxe: Kobo is a game based in Xkobo. It is a 2D scrolling shooting -KoboDeluxe: game where you must destroy every enemy starbase you find in -KoboDeluxe: each stage, while avoiding being taken down by their defenses, -KoboDeluxe: the enemy ships, the asteroids... -KoboDeluxe: -KoboDeluxe: Tons of good old arcade endless action. +KoboDeluxe: Kobo is a game based on Xkobo. It is a 2D scrolling shooting game +KoboDeluxe: where you must destroy every enemy starbase you find in each stage, +KoboDeluxe: while avoiding being taken down by their defenses, the enemy ships, +KoboDeluxe: the asteroids... KoboDeluxe: +KoboDeluxe: Gameplay is very similar to the classic arcade game Bosconian, from +KoboDeluxe: 1981. KoboDeluxe: KoboDeluxe: