From 9363d97610f3c8746c3d8c868f9879edd6f17483 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 26 Mar 2016 15:54:12 +0100 Subject: [PATCH] Teeworlds: fix build. Fixes #142. --- ...s-0.6.3.patch => teeworlds_0.6.3.patchset} | 137 +++++++++++++----- games-action/teeworlds/teeworlds-0.6.3.recipe | 9 +- 2 files changed, 107 insertions(+), 39 deletions(-) rename games-action/teeworlds/patches/{teeworlds-0.6.3.patch => teeworlds_0.6.3.patchset} (68%) diff --git a/games-action/teeworlds/patches/teeworlds-0.6.3.patch b/games-action/teeworlds/patches/teeworlds_0.6.3.patchset similarity index 68% rename from games-action/teeworlds/patches/teeworlds-0.6.3.patch rename to games-action/teeworlds/patches/teeworlds_0.6.3.patchset index 923557a4d..7797a06a0 100644 --- a/games-action/teeworlds/patches/teeworlds-0.6.3.patch +++ b/games-action/teeworlds/patches/teeworlds_0.6.3.patchset @@ -1,7 +1,14 @@ -diff -ur teeworlds-0.6.3-src-orig/bam.lua teeworlds-0.6.3-src/bam.lua ---- teeworlds-0.6.3-src-orig/bam.lua 2014-11-20 00:08:23.059768832 +0200 -+++ teeworlds-0.6.3-src/bam.lua 2014-12-17 00:47:27.678428672 +0200 -@@ -184,6 +184,12 @@ +From e907b27752dc5569fee6d7e91f7138762d433683 Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 26 Mar 2016 12:14:46 +0100 +Subject: applying patch teeworlds-0.6.3.patch + + +diff --git a/bam.lua b/bam.lua +index 11ac7b9..487a672 100644 +--- a/bam.lua ++++ b/bam.lua +@@ -184,6 +184,12 @@ function build(settings) settings.link.libs:Add("ws2_32") settings.link.libs:Add("ole32") settings.link.libs:Add("shell32") @@ -14,9 +21,10 @@ diff -ur teeworlds-0.6.3-src-orig/bam.lua teeworlds-0.6.3-src/bam.lua end -- compile zlib if needed -diff -ur teeworlds-0.6.3-src-orig/src/base/detect.h teeworlds-0.6.3-src/src/base/detect.h ---- teeworlds-0.6.3-src-orig/src/base/detect.h 2014-11-20 00:08:22.046137344 +0200 -+++ teeworlds-0.6.3-src/src/base/detect.h 2014-12-16 21:31:00.576192512 +0200 +diff --git a/src/base/detect.h b/src/base/detect.h +index 0e2ef86..948d3aa 100644 +--- a/src/base/detect.h ++++ b/src/base/detect.h @@ -68,7 +68,7 @@ #endif @@ -26,9 +34,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/detect.h teeworlds-0.6.3-src/src/base #define CONF_FAMILY_BEOS 1 #define CONF_FAMILY_STRING "beos" #define CONF_PLATFORM_BEOS 1 -diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base/system.c ---- teeworlds-0.6.3-src-orig/src/base/system.c 2014-11-20 00:08:22.047448064 +0200 -+++ teeworlds-0.6.3-src/src/base/system.c 2014-12-17 18:20:36.652738560 +0200 +diff --git a/src/base/system.c b/src/base/system.c +index 53af5d0..0974b6b 100644 +--- a/src/base/system.c ++++ b/src/base/system.c @@ -9,7 +9,7 @@ #include "system.h" @@ -38,7 +47,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base #include #include -@@ -372,7 +372,7 @@ +@@ -372,7 +372,7 @@ int io_flush(IOHANDLE io) void *thread_create(void (*threadfunc)(void *), void *u) { @@ -47,7 +56,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_t id; pthread_create(&id, NULL, (void *(*)(void*))threadfunc, u); return (void*)id; -@@ -385,7 +385,7 @@ +@@ -385,7 +385,7 @@ void *thread_create(void (*threadfunc)(void *), void *u) void thread_wait(void *thread) { @@ -56,7 +65,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_join((pthread_t)thread, NULL); #elif defined(CONF_FAMILY_WINDOWS) WaitForSingleObject((HANDLE)thread, INFINITE); -@@ -396,7 +396,7 @@ +@@ -396,7 +396,7 @@ void thread_wait(void *thread) void thread_destroy(void *thread) { @@ -65,7 +74,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base void *r = 0; pthread_join((pthread_t)thread, &r); #else -@@ -406,7 +406,7 @@ +@@ -406,7 +406,7 @@ void thread_destroy(void *thread) void thread_yield() { @@ -74,7 +83,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base sched_yield(); #elif defined(CONF_FAMILY_WINDOWS) Sleep(0); -@@ -417,7 +417,7 @@ +@@ -417,7 +417,7 @@ void thread_yield() void thread_sleep(int milliseconds) { @@ -83,7 +92,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base usleep(milliseconds*1000); #elif defined(CONF_FAMILY_WINDOWS) Sleep(milliseconds); -@@ -428,7 +428,7 @@ +@@ -428,7 +428,7 @@ void thread_sleep(int milliseconds) void thread_detach(void *thread) { @@ -92,7 +101,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_detach((pthread_t)(thread)); #elif defined(CONF_FAMILY_WINDOWS) CloseHandle(thread); -@@ -440,7 +440,7 @@ +@@ -440,7 +440,7 @@ void thread_detach(void *thread) @@ -101,7 +110,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base typedef pthread_mutex_t LOCKINTERNAL; #elif defined(CONF_FAMILY_WINDOWS) typedef CRITICAL_SECTION LOCKINTERNAL; -@@ -452,7 +452,7 @@ +@@ -452,7 +452,7 @@ LOCK lock_create() { LOCKINTERNAL *lock = (LOCKINTERNAL*)mem_alloc(sizeof(LOCKINTERNAL), 4); @@ -110,7 +119,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_mutex_init(lock, 0x0); #elif defined(CONF_FAMILY_WINDOWS) InitializeCriticalSection((LPCRITICAL_SECTION)lock); -@@ -464,7 +464,7 @@ +@@ -464,7 +464,7 @@ LOCK lock_create() void lock_destroy(LOCK lock) { @@ -119,7 +128,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_mutex_destroy((LOCKINTERNAL *)lock); #elif defined(CONF_FAMILY_WINDOWS) DeleteCriticalSection((LPCRITICAL_SECTION)lock); -@@ -476,7 +476,7 @@ +@@ -476,7 +476,7 @@ void lock_destroy(LOCK lock) int lock_try(LOCK lock) { @@ -128,7 +137,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base return pthread_mutex_trylock((LOCKINTERNAL *)lock); #elif defined(CONF_FAMILY_WINDOWS) return !TryEnterCriticalSection((LPCRITICAL_SECTION)lock); -@@ -487,7 +487,7 @@ +@@ -487,7 +487,7 @@ int lock_try(LOCK lock) void lock_wait(LOCK lock) { @@ -137,7 +146,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_mutex_lock((LOCKINTERNAL *)lock); #elif defined(CONF_FAMILY_WINDOWS) EnterCriticalSection((LPCRITICAL_SECTION)lock); -@@ -498,7 +498,7 @@ +@@ -498,7 +498,7 @@ void lock_wait(LOCK lock) void lock_release(LOCK lock) { @@ -146,7 +155,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base pthread_mutex_unlock((LOCKINTERNAL *)lock); #elif defined(CONF_FAMILY_WINDOWS) LeaveCriticalSection((LPCRITICAL_SECTION)lock); -@@ -508,7 +508,7 @@ +@@ -508,7 +508,7 @@ void lock_release(LOCK lock) } #if !defined(CONF_PLATFORM_MACOSX) @@ -155,7 +164,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base void semaphore_init(SEMAPHORE *sem) { sem_init(sem, 0, 0); } void semaphore_wait(SEMAPHORE *sem) { sem_wait(sem); } void semaphore_signal(SEMAPHORE *sem) { sem_post(sem); } -@@ -527,7 +527,7 @@ +@@ -527,7 +527,7 @@ void lock_release(LOCK lock) /* ----- time ----- */ int64 time_get() { @@ -164,7 +173,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base struct timeval val; gettimeofday(&val, NULL); return (int64)val.tv_sec*(int64)1000000+(int64)val.tv_usec; -@@ -546,7 +546,7 @@ +@@ -546,7 +546,7 @@ int64 time_get() int64 time_freq() { @@ -173,7 +182,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base return 1000000; #elif defined(CONF_FAMILY_WINDOWS) int64 t; -@@ -1354,6 +1354,16 @@ +@@ -1354,6 +1354,16 @@ int fs_storage_path(const char *appname, char *path, int max) return -1; _snprintf(path, max, "%s/%s", home, appname); return 0; @@ -190,7 +199,7 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base #else char *home = getenv("HOME"); #if !defined(CONF_PLATFORM_MACOSX) -@@ -1795,7 +1805,7 @@ +@@ -1795,7 +1805,7 @@ void gui_messagebox(const char *title, const char *message) &theItem); RunStandardAlert(theItem, NULL, &itemIndex); @@ -199,10 +208,11 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.c teeworlds-0.6.3-src/src/base static char cmd[1024]; int err; /* use xmessage which is available on nearly every X11 system */ -diff -ur teeworlds-0.6.3-src-orig/src/base/system.h teeworlds-0.6.3-src/src/base/system.h ---- teeworlds-0.6.3-src-orig/src/base/system.h 2014-11-20 00:08:22.046137344 +0200 -+++ teeworlds-0.6.3-src/src/base/system.h 2014-12-16 21:31:00.580124672 +0200 -@@ -411,7 +411,7 @@ +diff --git a/src/base/system.h b/src/base/system.h +index ae37c1a..d59e43b 100644 +--- a/src/base/system.h ++++ b/src/base/system.h +@@ -411,7 +411,7 @@ void lock_release(LOCK lock); /* Group: Semaphores */ #if !defined(CONF_PLATFORM_MACOSX) @@ -211,9 +221,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/base/system.h teeworlds-0.6.3-src/src/base #include typedef sem_t SEMAPHORE; #elif defined(CONF_FAMILY_WINDOWS) -diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp teeworlds-0.6.3-src/src/engine/client/backend_sdl.cpp ---- teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp 2014-11-20 00:08:22.004980736 +0200 -+++ teeworlds-0.6.3-src/src/engine/client/backend_sdl.cpp 2014-12-16 23:45:27.095944704 +0200 +diff --git a/src/engine/client/backend_sdl.cpp b/src/engine/client/backend_sdl.cpp +index 37d1019..ec6887f 100644 +--- a/src/engine/client/backend_sdl.cpp ++++ b/src/engine/client/backend_sdl.cpp @@ -1,6 +1,6 @@ -#include "SDL.h" @@ -223,9 +234,10 @@ diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.cpp teeworlds-0. #include -diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h teeworlds-0.6.3-src/src/engine/client/backend_sdl.h ---- teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h 2014-11-20 00:08:22.005767168 +0200 -+++ teeworlds-0.6.3-src/src/engine/client/backend_sdl.h 2014-12-17 18:21:15.679215104 +0200 +diff --git a/src/engine/client/backend_sdl.h b/src/engine/client/backend_sdl.h +index e90f945..676141c 100644 +--- a/src/engine/client/backend_sdl.h ++++ b/src/engine/client/backend_sdl.h @@ -1,12 +1,12 @@ -#include "SDL.h" @@ -281,3 +293,54 @@ diff -ur teeworlds-0.6.3-src-orig/src/engine/client/backend_sdl.h teeworlds-0.6. #else #error missing implementation #endif +-- +2.7.0 + + +From 23887287bf14a4cb0395dd8ac40218dc425b2c2f Mon Sep 17 00:00:00 2001 +From: Adrien Destugues +Date: Sat, 26 Mar 2016 12:21:33 +0100 +Subject: Fix the build. + +- including an header in the middle of a function usually isn't a good +idea. +- use find_path instead of find_directory so the app can find the data +where the package is installed. + +diff --git a/src/base/system.c b/src/base/system.c +index 0974b6b..e4843e8 100644 +--- a/src/base/system.c ++++ b/src/base/system.c +@@ -48,6 +48,10 @@ + #include + #endif + ++#if defined(CONF_FAMILY_BEOS) ++ #include ++#endif ++ + #if defined(__cplusplus) + extern "C" { + #endif +@@ -1355,14 +1359,10 @@ int fs_storage_path(const char *appname, char *path, int max) + _snprintf(path, max, "%s/%s", home, appname); + return 0; + #elif defined(CONF_FAMILY_BEOS) +- #include +- +- dev_t device = (dev_t)-1; +- char *datadir; +- +- status_t status = find_directory(B_USER_DATA_DIRECTORY, device, false, datadir, max); +- if (status < B_OK) return -1; +- snprintf(path, max, "%s/%s", datadir, appname); ++ status_t status = find_path(fs_storage_path, B_FIND_PATH_DATA_DIRECTORY, ++ appname, path, max); ++ if (status < B_OK) ++ return -1; + return 0; + #else + char *home = getenv("HOME"); +-- +2.7.0 + diff --git a/games-action/teeworlds/teeworlds-0.6.3.recipe b/games-action/teeworlds/teeworlds-0.6.3.recipe index f2d88a4a7..6ad99a234 100644 --- a/games-action/teeworlds/teeworlds-0.6.3.recipe +++ b/games-action/teeworlds/teeworlds-0.6.3.recipe @@ -10,7 +10,7 @@ REVISION="1" SOURCE_URI="https://downloads.teeworlds.com/teeworlds-0.6.3-src.tar.gz" CHECKSUM_SHA256="490ee7c372898761c609af8d7b0c6bd55942c6c6fcd7f361eefa00abfc70077b" SOURCE_DIR="teeworlds-0.6.3-src" -PATCHES="teeworlds-0.6.3.patch" +PATCHES="teeworlds_0.6.3.patchset" ARCHITECTURES="!x86_gcc2 ?x86" SECONDARY_ARCHITECTURES="?x86" @@ -23,6 +23,8 @@ REQUIRES=" haiku$secondaryArchSuffix >= $haikuVersion lib:libGL$secondaryArchSuffix lib:libGLU$secondaryArchSuffix + lib:libfreetype$secondaryArchSuffix + lib:libSDL_1.2$secondaryArchSuffix " BUILD_REQUIRES=" @@ -34,7 +36,7 @@ BUILD_PREREQUIRES=" devel:libfreetype$secondaryArchSuffix devel:libglu$secondaryArchSuffix cmd:gcc$secondaryArchSuffix - cmd:bam$secondaryArchSuffix + cmd:bam cmd:python " @@ -47,4 +49,7 @@ INSTALL() { mkdir -p $binDir cp teeworlds $binDir + + mkdir -p $dataDir + cp -r data $dataDir/Teeworlds }