summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2019-06-02 01:03:08 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-06-13 13:59:58 +0200
commit3745909dc9f810844d169e5e2089707df8174462 (patch)
tree16af2bc6a598ab40eaa6de35e9a162d580cb7bba
parent47f2168b6fabb105565526b2a1243eeeb13008fe (diff)
gnu: Add ri-li.
* gnu/packages/games.scm (ri-li): New variable. * gnu/packages/patches/ri-li-modernize_cpp.patch: New file. * gnu/local.mk (dist_patch_DATA): Reference patch.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/games.scm70
-rw-r--r--gnu/packages/patches/ri-li-modernize_cpp.patch391
3 files changed, 462 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 7f3fcae07e..81de156cf2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1239,6 +1239,7 @@ dist_patch_DATA = \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
%D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
+ %D%/packages/patches/ri-li-modernize_cpp.patch \
%D%/packages/patches/ripperx-missing-file.patch \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \
%D%/packages/patches/rtags-separate-rct.patch \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 7a433a0bfd..86bdf99a32 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -7385,3 +7385,73 @@ full of enemies that can hurt it, obstacles and food to be eaten. The goal of
the game is to stay alive and collect prizes. The robot program conveniently
may be written in a plain text file in the Scheme programming language.")
(license license:gpl3+)))
+
+(define-public ri-li
+ (package
+ (name "ri-li")
+ (version "2.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/ri-li/"
+ "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
+ "Ri-li-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
+ ;; Taken from
+ ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
+ ;; It doesn't build otherwise.
+ (patches (search-patches "ri-li-modernize_cpp.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Remove "gentoo" subdirectory from Makefile, as it is
+ ;; missing a make file and generates a build failure.
+ (add-after 'configure 'fix-build
+ (lambda _
+ (substitute* "Makefile"
+ ((" gentoo") ""))
+ #t))
+ (add-after 'install 'install-desktop-file
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (apps (string-append out "/share/applications"))
+ (pixmaps (string-append out "/share/pixmaps")))
+ (for-each (lambda (f) (install-file f pixmaps))
+ (find-files "data" "\\.(png|ico)$"))
+ (mkdir-p apps)
+ (with-output-to-file (string-append apps "/ri-li.desktop")
+ (lambda _
+ (format #t
+ "[Desktop Entry]~@
+ Name=Ri-li~@
+ Exec=~a/bin/Ri_li~@
+ Icon=~a/Ri-li-icon-32x32.png~@
+ Categories=Game;ArcadeGame;~@
+ Keywords=toy;train;wooden;snake-like;engine;~@
+ Comment=a toy simulator game~@
+ Comment[de]=Ein Spiel mit einem kleinen Zug~@
+ Comment[fr]=un jeu de petit train~@
+ Comment[ro_RO]=un joc cu un tren de jucărie~@
+ Terminal=false~@
+ Type=Application~%"
+ out pixmaps))))
+ #t))
+ (add-after 'install-desktop-file 'remove-spurious-files
+ ;; Delete redundant files already installed somewhere else.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each delete-file
+ (find-files (string-append out "/share/Ri-li")
+ "\\.(png|ico)|COPYING"))
+ #t))))))
+ (inputs
+ `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
+ (home-page "http://www.ri-li.org")
+ (synopsis "Toy train simulation game")
+ (description "Ri-li is a game in which you drive a wooden toy
+steam locomotive across many levels and collect all the coaches to
+win.")
+ ;; The project is dual-licensed GPL2+ and GPL3+.
+ (license (list license:gpl2+ license:gpl3+))))
diff --git a/gnu/packages/patches/ri-li-modernize_cpp.patch b/gnu/packages/patches/ri-li-modernize_cpp.patch
new file mode 100644
index 0000000000..3d076afb39
--- /dev/null
+++ b/gnu/packages/patches/ri-li-modernize_cpp.patch
@@ -0,0 +1,391 @@
+diff -r -u Ri-li-2.0.1.orig/src/audio.cc Ri-li-2.0.1/src/audio.cc
+--- Ri-li-2.0.1.orig/src/audio.cc 2012-01-22 00:40:56.928609371 -0800
++++ Ri-li-2.0.1/src/audio.cc 2012-01-22 00:28:33.360636539 -0800
+@@ -22,8 +22,8 @@
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+
+ #include "audio.h"
+ #include "utils.h"
+@@ -57,7 +57,7 @@
+ char PathFile[512];
+
+ if(Mix_OpenAudio(22050,AUDIO_S16,1,1024)) {
+- cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<endl;
++ std::cerr <<"Enable to init Sound card ! "<<SDL_GetError()<<std::endl;
+ return false;
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/ecran.cc Ri-li-2.0.1/src/ecran.cc
+--- Ri-li-2.0.1.orig/src/ecran.cc 2007-11-02 04:48:16.000000000 -0700
++++ Ri-li-2.0.1/src/ecran.cc 2012-01-22 00:13:54.422798653 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <math.h>
+diff -r -u Ri-li-2.0.1.orig/src/editeur.cc Ri-li-2.0.1/src/editeur.cc
+--- Ri-li-2.0.1.orig/src/editeur.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/editeur.cc 2012-01-22 00:28:59.632635579 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+@@ -374,7 +374,7 @@
+
+ // Sauve le niveau
+ if(Niveau.Save()==false) {
+- cerr <<"ERREUR Saving levels!"<<endl;
++ std::cerr <<"ERREUR Saving levels!"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/jeux.cc Ri-li-2.0.1/src/jeux.cc
+--- Ri-li-2.0.1.orig/src/jeux.cc 2007-11-02 04:48:17.000000000 -0700
++++ Ri-li-2.0.1/src/jeux.cc 2012-01-22 00:14:08.422798143 -0800
+@@ -25,10 +25,10 @@
+ #include <windows.h>
+ #endif
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include <SDL/SDL.h>
+
+diff -r -u Ri-li-2.0.1.orig/src/loco.cc Ri-li-2.0.1/src/loco.cc
+--- Ri-li-2.0.1.orig/src/loco.cc 2007-11-02 04:48:18.000000000 -0700
++++ Ri-li-2.0.1/src/loco.cc 2012-01-22 00:14:17.878797797 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "preference.h"
+ #include "loco.h"
+diff -r -u Ri-li-2.0.1.orig/src/main.cc Ri-li-2.0.1/src/main.cc
+--- Ri-li-2.0.1.orig/src/main.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/main.cc 2012-01-22 00:29:40.080634136 -0800
+@@ -23,8 +23,8 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <string.h>
++#include <iostream>
++#include <string>
+ #include <SDL/SDL.h>
+ #include <SDL/SDL_mixer.h>
+
+@@ -115,7 +115,7 @@
+
+ // Initilise SDL
+ if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE) < 0 ) {
+- cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<endl;
++ std::cerr <<"Impossible d'initialiser SDL:"<<SDL_GetError()<<std::endl;
+ exit(-1);
+ }
+ // Ferme le programme correctement quant quit
+@@ -125,7 +125,7 @@
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -145,7 +145,7 @@
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+ // Change le nom de la fenetre
+diff -r -u Ri-li-2.0.1.orig/src/menu.cc Ri-li-2.0.1/src/menu.cc
+--- Ri-li-2.0.1.orig/src/menu.cc 2007-11-02 04:48:19.000000000 -0700
++++ Ri-li-2.0.1/src/menu.cc 2012-01-22 00:30:04.752633198 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include "preference.h"
+ #include "menu.h"
+ #include "sprite.h"
+@@ -92,7 +92,7 @@
+ // Teste la resolution video
+ sdlVideoInfo=(SDL_VideoInfo*)SDL_GetVideoInfo();
+ if(sdlVideoInfo->vfmt->BitsPerPixel==8) {
+- cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<endl;
++ std::cerr <<"Impossible d'utiliser 8bits pour la vidéo !"<<std::endl;
+ exit(-1);
+ }
+
+@@ -112,7 +112,7 @@
+ if(Pref.FullScreen) vOption|=SDL_FULLSCREEN;
+ sdlVideo=SDL_SetVideoMode(800,600,sdlVideoInfo->vfmt->BitsPerPixel,vOption);
+ if(sdlVideo==NULL) {
+- cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<endl;
++ std::cerr <<"Impossible de passer dans le mode vidéo 800x600 !"<<std::endl;
+ exit(-1);
+ }
+
+diff -r -u Ri-li-2.0.1.orig/src/mouse.cc Ri-li-2.0.1/src/mouse.cc
+--- Ri-li-2.0.1.orig/src/mouse.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/mouse.cc 2012-01-22 00:14:36.438797120 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "mouse.h"
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/sprite.cc Ri-li-2.0.1/src/sprite.cc
+--- Ri-li-2.0.1.orig/src/sprite.cc 2007-11-02 04:48:20.000000000 -0700
++++ Ri-li-2.0.1/src/sprite.cc 2012-01-22 00:30:43.640631779 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+ #include <math.h>
+ #include "sprite.h"
+ #include "preference.h"
+@@ -84,7 +84,7 @@
+ strcpy(PathFile,Langue[Pref.Langue]);
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<endl;
++ std::cerr <<"Impossible de trouver "<<Langue[Pref.Langue]<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -128,7 +128,7 @@
+ // *** Charge le fichier des langues ***
+ // *************************************
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'language.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'language.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -163,7 +163,7 @@
+ strcpy(PathFile,"sprites.dat");
+ GetPath(PathFile);
+ if(FileExiste(PathFile)==false) {
+- cerr <<"Impossible de trouver 'sprites.dat'"<<endl;
++ std::cerr <<"Impossible de trouver 'sprites.dat'"<<std::endl;
+ return false;
+ }
+ L=ChargeFichier(PathFile,Buf);
+@@ -352,7 +352,7 @@
+ Image[i]=SDL_CreateRGBSurface((Dim[i].bpp-3)*SDL_SRCALPHA,Dim[i].L,Dim[i].H,Dim[i].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[i].bpp-3));
+ if(Image[i]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+
+@@ -486,7 +486,7 @@
+ Image[0]=SDL_CreateRGBSurface((Dim[0].bpp-3)*SDL_SRCALPHA,Dim[0].L,Dim[0].H,Dim[0].bpp*8,
+ 0xff,0xff00,0xff0000,0xff000000*(Dim[0].bpp-3));
+ if(Image[0]<=NULL) {
+- cerr <<"Impossible de créer une Surface SDL!"<<endl;
++ std::cerr <<"Impossible de créer une Surface SDL!"<<std::endl;
+ return false;
+ }
+ return true;
+diff -r -u Ri-li-2.0.1.orig/src/tableau.cc Ri-li-2.0.1/src/tableau.cc
+--- Ri-li-2.0.1.orig/src/tableau.cc 2007-11-02 04:48:21.000000000 -0700
++++ Ri-li-2.0.1/src/tableau.cc 2012-01-22 00:14:50.710796598 -0800
+@@ -21,7 +21,7 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "preference.h"
+diff -r -u Ri-li-2.0.1.orig/src/utils.cc Ri-li-2.0.1/src/utils.cc
+--- Ri-li-2.0.1.orig/src/utils.cc 2007-11-02 04:48:22.000000000 -0700
++++ Ri-li-2.0.1/src/utils.cc 2012-01-22 00:31:30.944630051 -0800
+@@ -21,10 +21,10 @@
+ // with this program; if not, write to the Free Software Foundation, Inc.,
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <string>
+
+ #ifdef WINDOWS
+ #include <windows.h>
+@@ -77,7 +77,7 @@
+
+ file=fopen(Path,"r");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return -1;
+ }
+@@ -93,7 +93,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ fclose(file);
+ return -1;
+ }
+@@ -104,7 +104,7 @@
+ while(Compt>1024) {
+ AfficheChargeur();
+ if( fread(Po,1,1024,file) != 1024 ) {
+- cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR de lecture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fread");
+ fclose(file);
+ delete [] Buf;
+@@ -131,13 +131,13 @@
+
+ file=_lopen(Path,OF_READ);
+ if(file==-1) {
+- cerr <<"Impossible d'ouvrir "<<Path<<endl;
++ std::cerr <<"Impossible d'ouvrir "<<Path<<std::endl;
+ exit(-1);
+ }
+
+ long L=(long)_llseek(file,0,SEEK_END);
+ if(L==-1) {
+- cerr <<"Impossible de trouver la longueur du fichier"<<endl;
++ std::cerr <<"Impossible de trouver la longueur du fichier"<<std::endl;
+ perror("lseek");
+ _lclose(file);
+ return -1;
+@@ -146,7 +146,7 @@
+
+ Buf=new unsigned char [L+1];
+ if(Buf==NULL) {
+- cerr <<"ERREUR: Memoire insuffisante!"<<endl;
++ std::cerr <<"ERREUR: Memoire insuffisante!"<<std::endl;
+ _lclose(file);
+ return -1;
+ }
+@@ -169,14 +169,14 @@
+
+ file=fopen(Path,"w");
+ if(!file) {
+- cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible d'ouvrir '"<<Path<<"'"<<std::endl;
+ perror("fopen");
+ return false;
+ }
+
+ while(L>512) {
+ if( fwrite(Buf,1,512,file) != 512 ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -187,7 +187,7 @@
+
+ if(L>0) {
+ if( fwrite(Buf,1,(size_t)L,file) != (size_t)L ) {
+- cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR d'ecriture du fichier '"<<Path<<"'"<<std::endl;
+ perror("fwrite");
+ fclose(file);
+ return false;
+@@ -208,7 +208,7 @@
+
+ file=_lcreat(Path,0);
+ if(!file) {
+- cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<endl;
++ std::cerr <<"ERREUR: Impossible de créer le fichier '"<<Path<<"'"<<std::endl;
+ return false;
+ }
+
+@@ -216,7 +216,7 @@
+ _lclose(file);
+
+ if(Lec!=L) {
+- cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<endl;
++ std::cerr <<"Problème d'ecriture du fichier '"<<Path<<"' ecris="<<Lec<<" au lieux de ="<<L<<std::endl;
+ return false;
+ }
+
+@@ -250,7 +250,7 @@
+ sprintf(Path,"/usr/share/games/Ri-li/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Provi<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Provi<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -266,7 +266,7 @@
+ sprintf(Path,"PROGDIR:%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif
+@@ -282,7 +282,7 @@
+ sprintf(Path,"Ri-li.app/Contents/Resources/%s",Provi);
+ if(FileExiste(Path)) return;
+
+- cerr <<"Impossible de trouver le fichier '"<<Path<<endl;
++ std::cerr <<"Impossible de trouver le fichier '"<<Path<<std::endl;
+ exit(-1);
+ }
+ #endif