games-arcade/tuxdash: Fix building with GCC 6
authorDavid Seifert <soap@gentoo.org>
Fri, 30 Dec 2016 07:33:50 +0000 (09:33 +0200)
committerDavid Seifert <soap@gentoo.org>
Fri, 30 Dec 2016 07:35:23 +0000 (09:35 +0200)
Gentoo-bug: 600084
* EAPI=6
* Remove games.eclass

Package-Manager: Portage-2.3.3, Repoman-2.3.1

games-arcade/tuxdash/files/tuxdash-0.8-fix-build-system.patch [new file with mode: 0644]
games-arcade/tuxdash/files/tuxdash-0.8-fix-c++14.patch [new file with mode: 0644]
games-arcade/tuxdash/files/tuxdash-0.8-fix-paths.patch [new file with mode: 0644]
games-arcade/tuxdash/tuxdash-0.8-r1.ebuild [new file with mode: 0644]

diff --git a/games-arcade/tuxdash/files/tuxdash-0.8-fix-build-system.patch b/games-arcade/tuxdash/files/tuxdash-0.8-fix-build-system.patch
new file mode 100644 (file)
index 0000000..9f861d9
--- /dev/null
@@ -0,0 +1,11 @@
+Fix build system to honour all user variables.
+
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,4 +1,4 @@
+ all:
+-      g++ main.cpp -Wall `/usr/bin/sdl-config --libs --cflags` -lSDL_ttf  -o ../TuxDash
++      $(CXX) main.cpp $(LDFLAGS) $(CXXFLAGS) $(CPPFLAGS) `/usr/bin/sdl-config --libs --cflags` -lSDL_ttf  -o ../tuxdash
+ static:
+-      g++ -static main.cpp -Wall `/usr/bin/sdl-config --cflags --static-libs` -lSDL_ttf -lfreetype -lz -o ../TuxDash
++      $(CXX) -static main.cpp $(LDFLAGS) $(CXXFLAGS) $(CPPFLAGS) `/usr/bin/sdl-config --cflags --static-libs` -lSDL_ttf -lfreetype -lz -o ../tuxdash
diff --git a/games-arcade/tuxdash/files/tuxdash-0.8-fix-c++14.patch b/games-arcade/tuxdash/files/tuxdash-0.8-fix-c++14.patch
new file mode 100644 (file)
index 0000000..b37f456
--- /dev/null
@@ -0,0 +1,101 @@
+Modernise C++ to avoid errors in C++14 mode.
+See also: https://bugs.gentoo.org/show_bug.cgi?id=600084
+
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -66,7 +66,7 @@
+ void writeconfig(const map& game_map) {
+       ofstream config((ostring)TuxHomeDirectory + "/config"); // open config file
+-      if(config == NULL) {    // error check
++      if(!config) {   // error check
+               cout << "Warning: Couldn't write to file " << (ostring)TuxHomeDirectory + "/config" << endl;
+               return;
+       }
+@@ -124,7 +124,7 @@
+ void readconfig(class map& game_map) {
+       ifstream config((ostring)TuxHomeDirectory + "/config"); // open config file
+-      if(config==0) { // error check
++      if(!config) {   // error check
+               cout << "Warning: Couldn't find configuration file " << (ostring)TuxHomeDirectory + "/config" << ". Using default values." << endl;
+               return;
+       }
+--- a/src/map.cpp
++++ b/src/map.cpp
+@@ -346,13 +346,13 @@
+       cout << "-- copy map --" << endl;               // print status message
+       ifstream in_file(path); // open source file
+-      if(in_file == 0) {      // error checking
++      if(!in_file) {  // error checking
+               cout << "Couldn't open sourcefile \"" << filename << "\"" << endl;
+               cout << endl << "-- error in copymap --" << endl;
+               return 1;
+       }
+-      if(out_file == 0) {     // error checking
++      if(!out_file) { // error checking
+               cout << "Couldn't open target file \"" << temp_path << "\" for writing " << endl;
+               cout << endl << "-- error in copymap --" << endl;
+               return 1;
+@@ -390,7 +390,7 @@
+               path = mapfolder;
+               path += filename;
+               file.open(path);        // open file
+-              if(file == NULL) {
++              if(!file) {
+                       cout << "map::savemap :  error while saving map to file '" << path << "'" << endl;
+                       return 1;
+               }
+@@ -402,7 +402,7 @@
+               path = savefolder;
+               path += filename;
+               file.open(path);        // open file
+-              if(file == NULL) {
++              if(!file) {
+                       cout << "map::savemap : error while saving game to file '" << path << "'" << endl;
+                       return 1;
+               }
+--- a/src/menu.cpp
++++ b/src/menu.cpp
+@@ -119,7 +119,7 @@
+ // add a selection box
+-class element* menu_mgm::add_box(int x, int y, const ostring& text, const ostring& value, bool selectable, int size, int xgroup, int ygroup, int max, int width, int height, unsigned char r, unsigned char g, unsigned char b, int value_type, bool dependency, char* depend) {
++class element* menu_mgm::add_box(int x, int y, const ostring& text, const ostring& value, bool selectable, int size, int xgroup, int ygroup, int max, int width, int height, unsigned char r, unsigned char g, unsigned char b, int value_type, bool dependency, const char* depend) {
+       class element& newone = add();
+       newone.value = value;
+       newone.posx = x;
+--- a/src/menu.h
++++ b/src/menu.h
+@@ -56,7 +56,7 @@
+               void check_custom_parameters(); // check if parameters are okay
+               ostring keytoa(SDLKey); // cast SDLKey to ASCII
+               class element* add_text(int, int, const ostring&, bool, int, int =-1, int =-1, unsigned char =0, unsigned char =0, unsigned char = 0, int = -1, int = -1);      // add a text element
+-              class element* add_box(int, int, const ostring&, const ostring&, bool, int, int, int, int, int, int, unsigned char, unsigned char, unsigned char, int = 0, bool =false, char* =0);      // add a box element
++              class element* add_box(int, int, const ostring&, const ostring&, bool, int, int, int, int, int, int, unsigned char, unsigned char, unsigned char, int = 0, bool =false, const char* =0);        // add a box element
+               class element* add_select(int, int, const ostring&, const ostring&, bool, int, int, int, const char* oneoftwo=0);       // add a select element
+               void draw_window();     // draw the current menu screen with all elements
+               void selection_mgm(char);       // process user input for menu navigation
+--- a/src/surface.cpp
++++ b/src/surface.cpp
+@@ -92,7 +92,7 @@
+       else file_tmp = file;
+       TTF_Font *font = TTF_OpenFont(file_tmp, size);
+-      SDL_Color color = {r, g, b, 0};
++      SDL_Color color = {(Uint8)r, (Uint8)g, (Uint8)b, 0};
+       area = TTF_RenderText_Solid(font, text, color);
+@@ -118,7 +118,7 @@
+       SDL_Surface* text_surface;
+       SDL_Rect temp;
+       TTF_Font *font_tmp = TTF_OpenFont(font, size);
+-      SDL_Color farbe = {r, g, b, 0};
++      SDL_Color farbe = {(Uint8)r, (Uint8)g, (Uint8)b, 0};
+       text_surface = TTF_RenderText_Solid(font_tmp, text, farbe);
+       TTF_CloseFont(font_tmp);
+       temp = pos;
diff --git a/games-arcade/tuxdash/files/tuxdash-0.8-fix-paths.patch b/games-arcade/tuxdash/files/tuxdash-0.8-fix-paths.patch
new file mode 100644 (file)
index 0000000..72cde9d
--- /dev/null
@@ -0,0 +1,45 @@
+Change paths for Gentoo's filesystem layout.
+
+--- a/config
++++ b/config
+@@ -1,11 +1,11 @@
+ # Fullscreen enable/disable
+-Fullscreen = 0
++Fullscreen = 1
+ # Width of screen in blocks
+ screenX = 21
+ # Height of screen in blocks
+ screenY = 16
+ # Theme Folder - path to a valid theme
+-theme = themes/original/
++theme = /usr/share/tuxdash/themes/original/
+ # Distance in X direction, before scrolling starts
+ scrolldistX = 3
+ # Distance in Y direction, before scrolling starts
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -340,9 +340,7 @@
+       // set tuxdash's config / working directory
+       char* HomeDirectory;
+-      char* CurrentDirectory;
+       HomeDirectory = getenv("HOME"); // get users home directory
+-      CurrentDirectory = getenv("PWD");       // get TuxDash's working directory
+       TuxHomeDirectory = new char[strlen(HomeDirectory)+strlen("/.tuxdash")+1];       // align space for the string containing the path to tuxdash's config directory
+       strcpy(TuxHomeDirectory, HomeDirectory);
+       strcat(TuxHomeDirectory, "/.tuxdash");
+@@ -355,12 +353,12 @@
+               }
+               else {
+                       mkdir((ostring)TuxHomeDirectory + "/themes", 0711);     // create the themes folder. The default themes are not copied there, but the folder is created for possible additional themes added by the player
+-                      chdir(CurrentDirectory);
++                      chdir("/usr/share/tuxdash");
+                       system((ostring)"cp -r maps savegames config " + TuxHomeDirectory);
+               }
+       }
+       cout << endl << " Using " << TuxHomeDirectory << " for configuration, map and savegame files" << endl;
+-      chdir(CurrentDirectory);
++      chdir("/usr/share/tuxdash");
+       // finished with check of working directory
+       int running=1, start, stop, framestart = time(0), frames=0, frame_count = 0;
diff --git a/games-arcade/tuxdash/tuxdash-0.8-r1.ebuild b/games-arcade/tuxdash/tuxdash-0.8-r1.ebuild
new file mode 100644 (file)
index 0000000..4e237fc
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit toolchain-funcs
+
+DESCRIPTION="A simple BoulderDash clone"
+HOMEPAGE="http://www.tuxdash.de/index.php?language=EN"
+SRC_URI="http://www.tuxdash.de/ressources/downloads/${PN}_src_${PV}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86 ~x86-fbsd"
+IUSE=""
+
+RDEPEND="
+       media-libs/libsdl[video]
+       media-libs/sdl-ttf"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.8-fix-build-system.patch
+       "${FILESDIR}"/${PN}-0.8-fix-c++14.patch
+       "${FILESDIR}"/${PN}-0.8-fix-paths.patch
+)
+
+src_prepare() {
+       default
+       rm -f GPL TuxDash || die
+}
+
+src_configure() {
+       tc-export CXX
+}
+
+src_compile() {
+       emake -C src
+}
+
+src_install() {
+       dobin tuxdash
+       einstalldocs
+
+       insinto /usr/share/${PN}
+       doins -r themes maps fonts savegames config
+}