Gentoo Archives: gentoo-commits

From: Patrice Clement <monsieurp@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: games-arcade/savagewheels/, games-arcade/savagewheels/files/
Date: Tue, 03 May 2016 13:39:08
Message-Id: 1462281820.ef86f45bb93769a83d51e01ea6990ce9be60ed1b.monsieurp@gentoo
1 commit: ef86f45bb93769a83d51e01ea6990ce9be60ed1b
2 Author: Nicholas Vinson <nvinson234 <AT> gmail <DOT> com>
3 AuthorDate: Sun Apr 3 00:25:32 2016 +0000
4 Commit: Patrice Clement <monsieurp <AT> gentoo <DOT> org>
5 CommitDate: Tue May 3 13:23:40 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ef86f45b
7
8 games-arcade/savagewheels: New ebuild.
9
10 This will add savagewheels-1.6.0.
11
12 Package-Manager: portage-2.2.28
13 Closes: https://github.com/gentoo/gentoo/pull/1290
14
15 Signed-off-by: Patrice Clement <monsieurp <AT> gentoo.org>
16
17 games-arcade/savagewheels/Manifest | 2 +
18 .../files/savagewheels-1.6.0-cmakelists.txt.patch | 128 ++++++++
19 .../files/savagewheels-1.6.0-linux_dirs.patch | 359 +++++++++++++++++++++
20 games-arcade/savagewheels/files/savagewheels.in | 42 +++
21 games-arcade/savagewheels/metadata.xml | 18 ++
22 .../savagewheels/savagewheels-1.6.0.ebuild | 86 +++++
23 6 files changed, 635 insertions(+)
24
25 diff --git a/games-arcade/savagewheels/Manifest b/games-arcade/savagewheels/Manifest
26 new file mode 100644
27 index 0000000..f6d4749
28 --- /dev/null
29 +++ b/games-arcade/savagewheels/Manifest
30 @@ -0,0 +1,2 @@
31 +DIST savagewheels-1.6.0.tar.gz 593352 SHA256 c127eb37fd6b591ff579fa70b989afada1f20c6c63924583ff653d4efe7712fe SHA512 20622b1472d0c9dbf35250ab2334e4f84cabcb72c328a2a728fdbd113bc4b156a7fc2028ef51cd994dabbd27777d5eb07574295b393e9e81db31770a2f5e901f WHIRLPOOL 699c4ca19fd29c6e66bd3ef806b3e4bc19e787bba8c85428ad6e2701cac489b908fc74b6b3ce91e1ff1bc0306b3fd5ffccb52b743bbc1fb16da9ebef5a4d1b83
32 +DIST savagewheels-gamedata-1.4.0.tar.gz 13183072 SHA256 01fd7b9e122ff7d62363cbe3fd73d63de27bd48e40572e65ac9bb0d60bbad6ad SHA512 102214e18edb911b168e41999d239e3070255720f250e8ea640d365b3f7fc4c772cbf322f4558ba6c05fd56d904613c758918e25712e89eb2aca3e948c26fc65 WHIRLPOOL baafc5fe81a450ead511f4059cfe54a1e570cf8038af647c585678d2f15af0ac8f1cb8973767c8f646796748fbb1d4246d224ca2c916ee4ff5d1f516b4b4064f
33
34 diff --git a/games-arcade/savagewheels/files/savagewheels-1.6.0-cmakelists.txt.patch b/games-arcade/savagewheels/files/savagewheels-1.6.0-cmakelists.txt.patch
35 new file mode 100644
36 index 0000000..eef00f9
37 --- /dev/null
38 +++ b/games-arcade/savagewheels/files/savagewheels-1.6.0-cmakelists.txt.patch
39 @@ -0,0 +1,128 @@
40 +--- savagewheels-1.6.0/CMakeLists.txt.old 2016-04-02 16:45:40.416146450 -0700
41 ++++ savagewheels-1.6.0/CMakeLists.txt 2016-04-02 16:57:14.930931857 -0700
42 +@@ -9,22 +9,33 @@ set(APP_VER_PATCH "0")
43 +
44 + ### check for required libs
45 + find_package(SDL REQUIRED)
46 +
47 + ### Install targets (see: http://www.cmake.org/Wiki/CMake_RPATH_handling)
48 +-if (NOT INSTALL_DIR)
49 +- set(INSTALL_DIR "./")
50 ++if (UNIX)
51 ++ include (GNUInstallDirs)
52 ++else()
53 ++ if (NOT INSTALL_DIR)
54 ++ set(INSTALL_DIR "./")
55 ++ endif()
56 ++ set(CMAKE_INSTALL_BINDIR "${INSTALL_DIR}")
57 ++ set(CMAKE_INSTALL_SBINDIR "${INSTALL_DIR}")
58 ++ set(CMAKE_INSTALL_LIBEXECDIR "${INSTALL_DIR}")
59 ++ set(CMAKE_INSTALL_SYSCONFDIR "${INSTALL_DIR}")
60 ++ set(CMAKE_INSTALL_SHAREDSTATEDIR "${INSTALL_DIR}")
61 ++ set(CMAKE_INSTALL_LOCALSTATEDIR "${INSTALL_DIR}")
62 ++ set(CMAKE_INSTALL_LIBDIR "${INSTALL_DIR}")
63 ++ set(CMAKE_INSTALL_INCLUDEDIR "${INSTALL_DIR}")
64 ++ set(CMAKE_INSTALL_OLDINCLUDEDIR "${INSTALL_DIR}")
65 ++ set(CMAKE_INSTALL_DATAROOTDIR "${INSTALL_DIR}")
66 ++ set(CMAKE_INSTALL_DATADIR "${INSTALL_DIR}")
67 ++ set(CMAKE_INSTALL_INFODIR "${INSTALL_DIR}")
68 ++ set(CMAKE_INSTALL_LOCALEDIR "${INSTALL_DIR}")
69 ++ set(CMAKE_INSTALL_MANDIR "${INSTALL_DIR}")
70 ++ set(CMAKE_INSTALL_DOCDIR "${INSTALL_DIR}")
71 + endif()
72 +
73 +-# when building, don't use the install RPATH already
74 +-# (but later on when installing)
75 +-SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
76 +-
77 +-# add the automatically determined parts of the RPATH
78 +-SET(CMAKE_INSTALL_RPATH "${INSTALL_DIR}/")
79 +-SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
80 +-
81 + ### sources
82 + include_directories(src/)
83 + include_directories(tinyxml/)
84 +
85 + set(
86 +@@ -113,11 +124,11 @@ if (SOUND STREQUAL "NO")
87 + message(STATUS "Found SOUND=NO option. Compiling without sound support!")
88 + elseif(SOUND STREQUAL "FMOD")
89 + # FModEx API
90 +
91 + # check if path to FMod is defined
92 +- if(NOT DEFINED ${FMOD_PATH})
93 ++ if(NOT DEFINED FMOD_PATH)
94 + set(FMOD_PATH "${CMAKE_CURRENT_SOURCE_DIR}/libs/fmod/api")
95 + endif()
96 +
97 + add_definitions(-I${FMOD_PATH}/inc)
98 + link_directories(${FMOD_PATH}/lib)
99 +@@ -164,17 +175,19 @@ elseif(SOUND STREQUAL "FMOD")
100 + else()
101 + message(STATUS "Found FModEx lib at ${FMOD_LIBRARY}. Found FModEx DLL at ${FMOD_LIBRARY_SO_PATH}.")
102 +
103 + add_definitions(-DWITH_FMOD)
104 +
105 +- add_custom_command(TARGET savagewheels POST_BUILD
106 +- COMMAND ${CMAKE_COMMAND} -E copy_if_different
107 +- ${FMOD_LIBRARY_SO_PATH}
108 +- $<TARGET_FILE_DIR:savagewheels>)
109 +-
110 +- INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${FMOD_SO_NAME}"
111 +- DESTINATION ${INSTALL_DIR})
112 ++ if (WIN32)
113 ++ add_custom_command(TARGET savagewheels POST_BUILD
114 ++ COMMAND "${CMAKE_COMMAND}" -E copy_if_different
115 ++ "${FMOD_LIBRARY_SO_PATH}"
116 ++ "$<TARGET_FILE_DIR:savagewheels>")
117 ++
118 ++ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${FMOD_SO_NAME}"
119 ++ DESTINATION "${INSTALL_DIR}")
120 ++ endif()
121 + endif()
122 +
123 + else()
124 + # SDL_mixer API
125 + find_package(SDL_mixer REQUIRED)
126 +@@ -234,19 +247,36 @@ endif()
127 + ### Configure compile time header file
128 + configure_file (
129 + "${PROJECT_SOURCE_DIR}/Config.h.in"
130 + "${PROJECT_SOURCE_DIR}/src/Config.h")
131 +
132 +-INSTALL(TARGETS savagewheels RUNTIME DESTINATION ${INSTALL_DIR})
133 +-INSTALL(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/run.sh" DESTINATION ${INSTALL_DIR})
134 ++
135 ++INSTALL(TARGETS savagewheels RUNTIME DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}")
136 ++if (WIN32 AND NOT UNIX)
137 ++ INSTALL(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/run.sh" DESTINATION "${INSTALL_DIR}")
138 ++else()
139 ++ configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/savagewheels.in"
140 ++ "${CMAKE_CURRENT_BINARY_DIR}/savagewheels.sh"
141 ++ @ONLY)
142 ++ INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/savagewheels.sh"
143 ++ DESTINATION "${CMAKE_INSTALL_BINDIR}" RENAME savagewheels)
144 ++endif()
145 ++
146 + INSTALL(FILES
147 + "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
148 + "${CMAKE_CURRENT_SOURCE_DIR}/HISTORY"
149 + "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
150 ++ "${CMAKE_CURRENT_SOURCE_DIR}/bin/LICENSE.mikmod.txt"
151 ++ "${CMAKE_CURRENT_SOURCE_DIR}/bin/Readme.html"
152 ++ "${CMAKE_CURRENT_SOURCE_DIR}/bin/README-SDL_mixer.txt"
153 ++ "${CMAKE_CURRENT_SOURCE_DIR}/bin/README-SDL.txt"
154 +- DESTINATION ${INSTALL_DIR})
155 ++ DESTINATION "${CMAKE_INSTALL_DOCDIR}")
156 +-INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/"
157 +- DESTINATION ${INSTALL_DIR}
158 ++INSTALL(FILES
159 ++ "${CMAKE_CURRENT_SOURCE_DIR}/bin/bindings.xml"
160 ++ DESTINATION "${CMAKE_INSTALL_DATADIR}")
161 ++INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin/help"
162 ++ DESTINATION "${CMAKE_INSTALL_DOCDIR}/help"
163 + PATTERN "debug.html" EXCLUDE
164 + PATTERN "pref" EXCLUDE)
165 +
166 + ### build a CPack driven installer package
167 + include (InstallRequiredSystemLibraries)
168
169 diff --git a/games-arcade/savagewheels/files/savagewheels-1.6.0-linux_dirs.patch b/games-arcade/savagewheels/files/savagewheels-1.6.0-linux_dirs.patch
170 new file mode 100644
171 index 0000000..b407657
172 --- /dev/null
173 +++ b/games-arcade/savagewheels/files/savagewheels-1.6.0-linux_dirs.patch
174 @@ -0,0 +1,359 @@
175 +--- savagewheels-1.6.0/src/Main.cpp.old 2016-04-14 21:18:38.115071742 -0700
176 ++++ savagewheels-1.6.0/src/Main.cpp 2016-04-14 22:01:42.375422000 -0700
177 +@@ -43,10 +43,17 @@
178 + * Alpha Release: 29.06.2003
179 + */
180 +
181 + #include "Main.h"
182 +
183 ++const char *sys_datadir;
184 ++const char *usr_cfgdir;
185 ++const char *usr_datadir;
186 ++
187 ++char *ART_FILE;
188 ++char *BINDINGS_FILE;
189 ++
190 + int main( int argc, char *argv[] )
191 + {
192 + bool hardware_support = true;
193 + /*
194 + * Start the game in a window by default.
195 +@@ -57,16 +64,92 @@ int main( int argc, char *argv[] )
196 + * Linux Note: Running the game in fullscreen would sometimes crash the gfx manager.
197 + * This is probably due to some video drivers. I was so far able to reproduce it on
198 + * ATI Mobility type of video cards.
199 + */
200 + bool fullscreen = false;
201 ++ String tmp;
202 +
203 + #ifdef LINUX_BUILD
204 ++ sys_datadir = getenv("SAVAGEWHEELS_SYS_DATADIR");
205 ++ if (sys_datadir == NULL)
206 ++ {
207 ++ fprintf(stderr, "SAVAGEWHEELS_SYS_DATADIR not set.\n");
208 ++ return 1;
209 ++ }
210 ++ sys_datadir = strdup(sys_datadir);
211 ++
212 ++ usr_cfgdir = getenv("SAVAGEWHEELS_USR_CONFDIR");
213 ++ if (usr_cfgdir == NULL)
214 ++ {
215 ++ fprintf(stderr, "SAVAGEWHEELS_USR_CONFDIR not set.\n");
216 ++ return 1;
217 ++ }
218 ++ usr_cfgdir = strdup(usr_cfgdir);
219 ++
220 ++ usr_datadir = getenv("SAVAGEWHEELS_USR_DATADIR");
221 ++ if (usr_datadir == NULL)
222 ++ {
223 ++ fprintf(stderr, "SAVAGEWHEELS_USR_DATADIR not set.\n");
224 ++ return 1;
225 ++ }
226 ++ usr_datadir = strdup(usr_datadir);
227 ++
228 ++ if (sys_datadir == NULL || usr_cfgdir == NULL || usr_datadir == NULL)
229 ++ {
230 ++ fprintf(stderr, "Insufficient memory. Execution aborted.\n");
231 ++ return 1;
232 ++ }
233 ++
234 + setenv("SDL_VIDEO_CENTERED", "1", 1);
235 + #else
236 ++ sys_datadir = usr_cfgdir = usr_datadir = "./";
237 + _putenv("SDL_VIDEO_CENTERED=1");
238 + #endif
239 ++ int len;
240 ++ len = snprintf(NULL, 0, "%s/graphics/gfxdata.kdf", sys_datadir);
241 ++ if (len < 0)
242 ++ {
243 ++ fprintf(stderr,
244 ++ "Unable to store '%s/graphics/gfxdata.kdf': %s\n",
245 ++ sys_datadir, strerror(errno));
246 ++ return 1;
247 ++ }
248 ++ if (len == INT_MAX)
249 ++ {
250 ++ fprintf(stderr, "Unable to store '%s/graphics/gfxdata.kdf': "
251 ++ "Path too log\n", sys_datadir);
252 ++ return 1;
253 ++ }
254 ++ ART_FILE = new (std::nothrow) char[len + 1];
255 ++ if (ART_FILE == NULL)
256 ++ {
257 ++ fprintf(stderr, "Insufficent memory. Execution aborted.\n");
258 ++ return 1;
259 ++ }
260 ++ sprintf(ART_FILE, "%s/graphics/gfxdata.kdf", sys_datadir);
261 ++
262 ++ len = snprintf(NULL, 0, "%s/bindings.xml", usr_cfgdir);
263 ++ if (len < 0)
264 ++ {
265 ++ fprintf(stderr,
266 ++ "Unable to store '%s/bindings.xml': %s\n", usr_cfgdir,
267 ++ strerror(errno));
268 ++ return 1;
269 ++ }
270 ++ if (len == INT_MAX)
271 ++ {
272 ++ fprintf(stderr, "Unable to store '%s/bindings.xml': "
273 ++ "Path too log\n", usr_cfgdir);
274 ++ return 1;
275 ++ }
276 ++ BINDINGS_FILE = new (std::nothrow) char[len + 1];
277 ++ if (BINDINGS_FILE == NULL)
278 ++ {
279 ++ fprintf(stderr, "Insufficent memory. Execution aborted.\n");
280 ++ return 1;
281 ++ }
282 ++ sprintf(BINDINGS_FILE, "%s/bindings.xml", usr_cfgdir);
283 +
284 + if (argc > 1) {
285 + for (int i = 1; i < argc; i++) {
286 + if (!strncmp(argv[i], "-wnd", 4)) {
287 + fullscreen = false;
288 +@@ -104,11 +187,12 @@
289 +
290 + /*
291 + * Load & Start Game
292 + */
293 +
294 +- OpenLog("debug.html");
295 ++ tmp = String(usr_datadir).append("/debug.html");
296 ++ OpenLog(tmp.c_str());
297 +
298 + CGame game;
299 + game.Execute(fullscreen, hardware_support);
300 + game.Close();
301 +
302 +--- savagewheels-1.6.0/src/Main.h.old 2016-04-14 21:20:27.443522441 -0700
303 ++++ savagewheels-1.6.0/src/Main.h 2016-04-14 21:56:22.449964486 -0700
304 +@@ -35,10 +35,11 @@
305 + #include <cstdlib>
306 + #include <cmath>
307 + #include <cstdarg>
308 + #include <cassert>
309 + #include <exception>
310 ++#include <cerrno>
311 +
312 + #include <ctime>
313 + #include <sys/stat.h>
314 + #include <sys/types.h>
315 + #include <sys/timeb.h>
316 +@@ -84,12 +85,10 @@
317 +
318 + // --- version
319 + #include "Config.h"
320 +
321 + // --- global game defines
322 +-#define ART_FILE "graphics/gfxdata.kdf"
323 +-#define BINDINGS_FILE "bindings.xml"
324 + #define LOAD_OK (-1)
325 + #define LOAD_FAILED (0)
326 + #define HRESULT(x) ( (x) == NULL : LOAD_OK ? LOAD_FAILED )
327 + #define NLPTR_SURF 0 //((SDL_Surface *)NULL)
328 +
329 +@@ -100,10 +99,16 @@
330 + #endif
331 +
332 + typedef std::string String;
333 + typedef std::ostringstream OutputSStream;
334 +
335 ++extern const char *sys_datadir;
336 ++extern const char *usr_cfgdir;
337 ++extern const char *usr_datadir;
338 ++
339 ++extern char *ART_FILE;
340 ++extern char *BINDINGS_FILE;
341 + //#include "pstdint.h" // portable types
342 + #include "Utils.h"
343 + #include "CKdf.h"
344 + #include "CSdl.h"
345 + #include "CSwv_module.h"
346 +--- savagewheels-1.6.0/src/Utils.cpp.old 2016-04-15 19:28:21.757879157 -0700
347 ++++ savagewheels-1.6.0/src/Utils.cpp 2016-04-15 19:28:28.478786779 -0700
348 +@@ -261,11 +261,11 @@ inline String GetFormattedTime()
349 + bool OpenLog ( const char* filename )
350 + {
351 + String time( GetFormattedTime() );
352 +
353 + // open debug file
354 +- debug_file.open ( "debug.html", std::ios::out ); //ios::ate );
355 ++ debug_file.open ( filename, std::ios::out ); //ios::ate );
356 + if ( ! debug_file.good() )
357 + return false;
358 +
359 + debug_file << "<html><head><title>Savage Wheels Log File</title></head><body><h1>Savage Wheels V" << VER_MAJ << "." << VER_MIN << " - Log File</h1>";
360 + debug_file << "<hr/><pre>";
361 +--- savagewheels-1.6.0/src/CGame.cpp.old 2016-04-15 20:43:37.479330001 -0700
362 ++++ savagewheels-1.6.0/src/CGame.cpp 2016-04-15 21:04:48.044721904 -0700
363 +@@ -116,10 +116,11 @@ void CGame::Close()
364 + ///////////////////////////////////////////////////////////////////////
365 + bool CGame::LoadGame()
366 + {
367 + char buf[255];
368 + int i = 0;
369 ++ String tmp (sys_datadir);
370 +
371 + AppendToLog( LOG_DASH );
372 + AppendToLog("Loading Game...");
373 +
374 + // global screen rect
375 +@@ -161,11 +162,14 @@ bool CGame::LoadGame()
376 + srand( (unsigned)SDL_GetTicks() );
377 +
378 + UpdateSplash(); // UPDATESPLASH...
379 +
380 + // search for vehicles
381 +- if ( Swv.SearchAndLoad( "autos" ) != SWV_SUCCESS ) return false;
382 ++ tmp.resize(strlen(sys_datadir));
383 ++ tmp.append("/autos");
384 ++ if ( Swv.SearchAndLoad( tmp.c_str() ) != SWV_SUCCESS )
385 ++ return false;
386 +
387 + // check for vehicle number
388 + if ( Swv.GetVehicles() < 4 )
389 + {
390 + AppendToLog( "Not enough vehicles in the /auto dir!" );
391 +--- savagewheels-1.6.0/src/CSdl.cpp.old 2016-04-16 16:00:56.600502348 -0700
392 ++++ savagewheels-1.6.0/src/CSdl.cpp 2016-04-16 16:01:16.152226435 -0700
393 +@@ -1298,13 +1298,10 @@
394 + return NULL;
395 + #else
396 +
397 + SDL_Surface *sdl_surf = NULL;
398 +
399 +- char filename_buf[255];
400 +- sprintf( filename_buf, "../%s", filename );
401 +-
402 + if ( ( sdl_surf = SDL_LoadBMP( filename_buf )) == NULL )
403 + {
404 + LOG("...failed to load graphics from : " << filename_buf );
405 + return NULL;
406 + }
407 +--- savagewheels-1.6.0/src/CSounds.cpp.old 2016-04-16 16:06:43.887600441 -0700
408 ++++ savagewheels-1.6.0/src/CSounds.cpp 2016-04-16 16:17:44.729332218 -0700
409 +@@ -46,22 +46,39 @@
410 + // Name: Initialize()
411 + // Desc: Load all ingame sounds
412 + //////////////////////////////////////////////////////////////////////
413 + bool CSounds::Initialize( CSdl *pSdl )
414 + {
415 +- ASSERT( _sdl != NULL );
416 ++ ASSERT( pSdl != NULL );
417 + this->_sdl = pSdl;
418 +
419 + #if defined(WITH_FMOD) || defined(WITH_SDLMIXER)
420 ++ String tmp (sys_datadir);
421 +
422 +-#define LOAD_SOUND( container, name, buffered ) if ( (sounds[container] = _sdl->LoadSound( name, buffered )) == -1 ) { \
423 +- LOG( "Failed to load " << name << " ! "); \
424 +- return false; }
425 ++#define LOAD_SOUND( container, name, buffered) \
426 ++ do { \
427 ++ tmp.append("/").append(name); \
428 ++ sounds[container] = \
429 ++ _sdl->LoadSound( tmp.c_str(), buffered ); \
430 ++ if ( sounds[container] == -1 ) { \
431 ++ LOG( "Failed to load " << name << " ! " ); \
432 ++ return false; \
433 ++ } \
434 ++ tmp.resize(strlen(sys_datadir)); \
435 ++ } while(0)
436 +
437 +-#define LOAD_MUSIC( container, name ) if ( (music[container] = _sdl->LoadSound( name, false, true )) == -1 ) { \
438 +- LOG( "Failed to load music " << name << " ! "); \
439 +- return false; }
440 ++#define LOAD_MUSIC( container, name) \
441 ++ do { \
442 ++ tmp.append("/").append(name); \
443 ++ music[container] = \
444 ++ _sdl->LoadSound( tmp.c_str(), false, true ); \
445 ++ if ( music[container] == -1 ) { \
446 ++ LOG( "Failed to load music " << name << " ! " ); \
447 ++ return false; \
448 ++ } \
449 ++ tmp.resize(strlen(sys_datadir)); \
450 ++ } while(0)
451 +
452 + LOAD_SOUND( SND_CRASHLIGHT1, "sound/crash3.wav", true );
453 + LOAD_SOUND( SND_CRASHLIGHT2, "sound/crash2.wav", true );
454 + LOAD_SOUND( SND_CRASHLIGHT3, "sound/crash1.wav", true );
455 + LOAD_SOUND( SND_EXPLOSION1, "sound/exp.wav", true );
456 +--- savagewheels-1.6.0/src/CSwv_module.cpp.old 2016-04-16 20:58:04.366973388 -0700
457 ++++ savagewheels-1.6.0/src/CSwv_module.cpp 2016-04-16 20:58:13.026851358 -0700
458 +@@ -204,12 +204,10 @@ int CSwv_module::Load( char *filename, S
459 + // DBG("pos: " << swv_file->pfiles[i].pos
460 + // << " size (KB): " << swv_file->pfiles[i].length
461 + // << " name: " << swv_file->pfiles[i].filename);
462 + // }
463 +
464 +- // set module filename
465 +- sprintf( swv_file->filename, "%s", filename );
466 +
467 + if ( fp != NULL )
468 + fclose( fp );
469 +
470 + return SWV_SUCCESS;
471 +--- savagewheels-1.6.0/src/CSdl.cpp.old 2016-04-16 21:02:07.680544534 -0700
472 ++++ savagewheels-1.6.0/src/CSdl.cpp 2016-04-16 21:06:59.400432874 -0700
473 +@@ -1336,12 +1336,25 @@ SDL_Surface* CSdl::LoadBitmap( const cha
474 + SDL_Surface* CSdl::LoadBitmap( const char *filename, int32_t file_offset, Uint32 file_size, Uint32 color_key, Uint16 alpha_value )
475 + {
476 + SDL_Surface *sdl_surf = NULL; // temp surface
477 + FILE *fp = NULL; // file pointer
478 + SDL_RWops *sdl_rw = NULL; // sdl_read_write_operations
479 ++ String tmp;
480 +
481 +- if ( ( fp = fopen( filename, "rb")) == NULL )
482 ++#ifdef LINUX_BUILD
483 ++ if ( filename[0] != '/' )
484 ++ {
485 ++ tmp = String(sys_datadir).append("/autos/").append(filename);
486 ++ }
487 ++ else
488 ++ {
489 ++ tmp = String(filename);
490 ++ }
491 ++#else
492 ++ tmp = String(filename);
493 ++#endif
494 ++ if ( ( fp = fopen( tmp.c_str(), "rb")) == NULL )
495 + {
496 + LOG("...failed to open file : " << filename );
497 + return NULL;
498 + }
499 +
500 +--- savagewheels-1.6.0/src/CMainMenu.cpp.old 2016-04-16 22:13:23.442523534 -0700
501 ++++ savagewheels-1.6.0/src/CMainMenu.cpp 2016-04-16 22:13:17.701605381 -0700
502 +@@ -1121,12 +1121,13 @@ void CMainMenu::SaveSettings()
503 + if ( _game == NULL )
504 + return;
505 +
506 + FILE *fp = NULL;
507 + char header[3] = { 'S', 'W', 'P' };
508 ++ String strPref(String(usr_cfgdir) + "/pref");
509 +
510 +- if ( ( fp = fopen( "pref", "wb" ) ) == NULL )
511 ++ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )
512 + {
513 + AppendToLog( "Error writing to /pref file !" );
514 + return;
515 + }
516 +
517 +--- savagewheels-1.6.0/src/CMainMenu.cpp.old 2016-04-17 07:38:09.417653268 -0700
518 ++++ savagewheels-1.6.0/src/CMainMenu.cpp 2016-04-17 07:38:24.277437113 -0700
519 +@@ -1167,12 +1168,13 @@ void CMainMenu::SaveSettings()
520 + void CMainMenu::LoadSettings()
521 + {
522 + FILE *fp = NULL;
523 + char header[3];
524 + bool success = true;
525 ++ String strPref(String(usr_cfgdir) + "/pref");
526 +
527 +- if ( ( fp = fopen( "pref", "rb" ) ) == NULL )
528 ++ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )
529 + {
530 + AppendToLog( "Error opening /pref file !" );
531 + success = false;
532 + }
533 +
534
535 diff --git a/games-arcade/savagewheels/files/savagewheels.in b/games-arcade/savagewheels/files/savagewheels.in
536 new file mode 100644
537 index 0000000..c1b4c68
538 --- /dev/null
539 +++ b/games-arcade/savagewheels/files/savagewheels.in
540 @@ -0,0 +1,42 @@
541 +#!/bin/sh
542 +
543 +export SAVAGEWHEELS_SYS_DATADIR="${SAVAGEWHEELS_SYS_DATADIR-@CMAKE_INSTALL_DATADIR@}"
544 +export SAVAGEWHEELS_LIBEXECDIR="${SAVAGEWHEELS_LIBEXECDIR-@CMAKE_INSTALL_LIBEXECDIR@}"
545 +export SAVAGEWHEELS_USR_CONFDIR="${SAVAGEWHEELS_USR_CONFDIR-${HOME}/.config/savagewheels}"
546 +export SAVAGEWHEELS_USR_DATADIR="${SAVAGEWHEELS_USR_DATADIR-${HOME}/.local/share/savagewheels}"
547 +
548 +if [ ! -d ${SAVAGEWHEELS_USR_CONFDIR} ]; then
549 + if [ -e ${SAVAGEWHEELS_USR_CONFDIR} ]; then
550 + printf "${SAVAGEWHEELS_USR_CONFDIR} exists but is not a directory.\n" >&2
551 + printf " Please remove.\n" >&2
552 + exit 1
553 + fi
554 + mkdir -p ${SAVAGEWHEELS_USR_CONFDIR}
555 + if [ $? -ne 0 ]; then
556 + printf "Failed to create ${SAVAGEWHEELS_USR_CONFDIR}\n" >&2
557 + exit 1
558 + fi
559 +fi
560 +
561 +if [ ! -d ${SAVAGEWHEELS_USR_DATADIR} ]; then
562 + if [ -e ${SAVAGEWHEELS_USR_DATADIR} ]; then
563 + printf "${SAVAGEWHEELS_USR_DATADIR} exists but is not a directory.\n" >&2
564 + printf " Please remove.\n" >&2
565 + exit 1
566 + fi
567 + mkdir -p ${SAVAGEWHEELS_USR_DATADIR}
568 + if [ $? -ne 0 ]; then
569 + printf "Failed to create ${SAVAGEWHEELS_USR_DATADIR}\n" >&2
570 + exit 1
571 + fi
572 +fi
573 +
574 +if [ ! -e ${SAVAGEWHEELS_USR_CONFDIR}/bindings.xml ]; then
575 + cp ${SAVAGEWHEELS_SYS_DATADIR}/bindings.xml ${SAVAGEWHEELS_USR_CONFDIR}
576 + if [ $? -ne 0 ]; then
577 + printf "Failed to create ${SAVAGEWHEELS_USR_CONFDIR}/bindings.xml\n" >&2
578 + exit 1
579 + fi
580 +fi
581 +
582 +exec ${SAVAGEWHEELS_LIBEXECDIR}/savagewheels "$@"
583
584 diff --git a/games-arcade/savagewheels/metadata.xml b/games-arcade/savagewheels/metadata.xml
585 new file mode 100644
586 index 0000000..5279e81
587 --- /dev/null
588 +++ b/games-arcade/savagewheels/metadata.xml
589 @@ -0,0 +1,18 @@
590 +<?xml version="1.0" encoding="UTF-8"?>
591 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
592 +<pkgmetadata>
593 + <maintainer type="person">
594 + <email>nvinson234@×××××.com</email>
595 + <name>Nicholas Vinson</name>
596 + </maintainer>
597 + <maintainer type="project">
598 + <email>proxy-maint@g.o</email>
599 + <name>Proxy Maintainers</name>
600 + </maintainer>
601 + <use>
602 + <flag name="fmod">Enable the fmod music and sound effects library</flag>
603 + </use>
604 + <upstream>
605 + <remote-id type="github">petarov/savagewheels</remote-id>
606 + </upstream>
607 +</pkgmetadata>
608
609 diff --git a/games-arcade/savagewheels/savagewheels-1.6.0.ebuild b/games-arcade/savagewheels/savagewheels-1.6.0.ebuild
610 new file mode 100644
611 index 0000000..0edf982
612 --- /dev/null
613 +++ b/games-arcade/savagewheels/savagewheels-1.6.0.ebuild
614 @@ -0,0 +1,86 @@
615 +# Copyright 1999-2016 Gentoo Foundation
616 +# Distributed under the terms of the GNU General Public License v2
617 +# $Id$
618 +
619 +EAPI=6
620 +
621 +inherit cmake-utils
622 +
623 +DESCRIPTION="2D car crashing game similar to the old classic Destruction Derby."
624 +HOMEPAGE="https://github.com/petarov/savagewheels"
625 +
626 +GAMEDATA="${PN}-gamedata-1.4.0"
627 +
628 +SRC_URI="
629 + https://github.com/petarov/savagewheels/archive/v1.6.0.tar.gz -> ${P}.tar.gz
630 + https://github.com/petarov/savagewheels/releases/download/v1.4/${PN}-gamedata.tar.gz -> ${GAMEDATA}.tar.gz
631 +"
632 +
633 +LICENSE="MIT"
634 +SLOT="0"
635 +KEYWORDS="~amd64"
636 +
637 +IUSE="debug fmod sound"
638 +
639 +RDEPEND="
640 + media-libs/libsdl
641 + sound? (
642 + !fmod? ( media-libs/sdl-mixer[mod,modplug] )
643 + fmod? ( >=media-libs/fmod-4.38.00 )
644 + )"
645 +
646 +DEPEND="${RDEPEND}"
647 +
648 +REQUIRED_USE="fmod? ( sound )"
649 +
650 +PATCHES=(
651 + "${FILESDIR}/${P}-cmakelists.txt.patch"
652 + "${FILESDIR}/${P}-linux_dirs.patch"
653 +)
654 +
655 +src_unpack() {
656 + unpack ${P}.tar.gz
657 +
658 + cp "${FILESDIR}/${PN}.in" "${S}"
659 + mkdir "${WORKDIR}/${GAMEDATA}" ||
660 + die "Failed to make directory: ${WORKDIR}/${GAMEDATA}"
661 + cd "${WORKDIR}/${GAMEDATA}" ||
662 + die "Unable to change into directory: ${WORKDIR}/${GAMEDATA}"
663 + unpack "${GAMEDATA}.tar.gz"
664 +}
665 +
666 +src_configure() {
667 + local mycmakeargs=()
668 +
669 + if use debug; then
670 + CMAKE_BUILD_TYPE=Debug
671 + fi
672 +
673 + if use sound; then
674 + if use fmod; then
675 + mycmakeargs+=( -DSOUND=FMOD -DFMOD_PATH=/opt/fmodex/api )
676 + else
677 + mycmakeargs+=( -DSOUND=YES )
678 + fi
679 + else
680 + mycmakeargs+=( -DSOUND=NO )
681 + fi
682 +
683 + mycmakeargs+=(
684 + -DCMAKE_INSTALL_DATADIR=/usr/share/games/${PN}
685 + -DCMAKE_INSTALL_DATAROOTDIR=/usr/share
686 + -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${P}
687 + -DCMAKE_INSTALL_LIBEXECDIR=/usr/libexec/${PN}
688 + -DCMAKE_INSTALL_PREFIX=/usr/games
689 + )
690 + cmake-utils_src_configure
691 +}
692 +
693 +src_install() {
694 + cmake-utils_src_install
695 +
696 + insinto "/usr/share/games/${PN}"
697 + for d in "${WORKDIR}/${GAMEDATA}/*"; do
698 + doins -r ${d}
699 + done
700 +}