diff options
Diffstat (limited to 'games-fps')
-rw-r--r-- | games-fps/sauerbraten/ChangeLog | 12 | ||||
-rw-r--r-- | games-fps/sauerbraten/files/sauerbraten-2013.01.04-QA.patch | 50 | ||||
-rw-r--r-- | games-fps/sauerbraten/files/sauerbraten-2013.01.04-master.patch | 323 | ||||
-rw-r--r-- | games-fps/sauerbraten/files/sauerbraten-2013.01.04-system-enet.patch | 64 | ||||
-rw-r--r-- | games-fps/sauerbraten/metadata.xml | 5 | ||||
-rw-r--r-- | games-fps/sauerbraten/sauerbraten-2013.01.04.ebuild | 127 |
6 files changed, 578 insertions, 3 deletions
diff --git a/games-fps/sauerbraten/ChangeLog b/games-fps/sauerbraten/ChangeLog index a9169e7689b2..69252583ebc1 100644 --- a/games-fps/sauerbraten/ChangeLog +++ b/games-fps/sauerbraten/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for games-fps/sauerbraten -# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/games-fps/sauerbraten/ChangeLog,v 1.18 2012/12/04 15:37:45 ago Exp $ +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/games-fps/sauerbraten/ChangeLog,v 1.19 2013/01/05 18:23:48 hasufell Exp $ + +*sauerbraten-2013.01.04 (05 Jan 2013) + + 05 Jan 2013; Julian Ospald <hasufell@gentoo.org> + +sauerbraten-2013.01.04.ebuild, +files/sauerbraten-2013.01.04-QA.patch, + +files/sauerbraten-2013.01.04-master.patch, + +files/sauerbraten-2013.01.04-system-enet.patch: + version bump wrt #450360 04 Dec 2012; <ago@gentoo.org> sauerbraten-2010.07.28.ebuild: Stable for x86, wrt bug #443560 diff --git a/games-fps/sauerbraten/files/sauerbraten-2013.01.04-QA.patch b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-QA.patch new file mode 100644 index 000000000000..21f1b13c7a2a --- /dev/null +++ b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-QA.patch @@ -0,0 +1,50 @@ +applied on top of sauerbraten-2013.01.04-system-enet.patch + +respect LDFLAGS, CXXFLAGS and CPPFLAGS +--- sauerbraten/src/Makefile ++++ sauerbraten/src/Makefile +@@ -1,4 +1,4 @@ +-CXXFLAGS= -O3 -fomit-frame-pointer ++CXXFLAGS ?= -O3 -fomit-frame-pointer + override CXXFLAGS+= -Wall -fsigned-char -fno-exceptions -fno-rtti + + PLATFORM= $(shell uname -s) +@@ -139,11 +139,11 @@ + -$(RM) $(CLIENT_PCH) $(CLIENT_OBJS) $(SERVER_OBJS) $(MASTER_OBJS) sauer_client sauer_server sauer_master + + %.h.gch: %.h +- $(CXX) $(CXXFLAGS) -o $(subst .h.gch,.tmp.h.gch,$@) $(subst .h.gch,.h,$@) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(subst .h.gch,.tmp.h.gch,$@) $(subst .h.gch,.h,$@) + $(MV) $(subst .h.gch,.tmp.h.gch,$@) $@ + + %-standalone.o: %.cpp +- $(CXX) $(CXXFLAGS) -c -o $@ $(subst -standalone.o,.cpp,$@) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(subst -standalone.o,.cpp,$@) + + $(CLIENT_OBJS): CXXFLAGS += $(CLIENT_INCLUDES) + $(filter shared/%,$(CLIENT_OBJS)): $(filter shared/%,$(CLIENT_PCH)) +@@ -168,19 +168,19 @@ + install: all + else + client: $(CLIENT_OBJS) +- $(CXX) $(CXXFLAGS) -o sauer_client $(CLIENT_OBJS) $(CLIENT_LIBS) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o sauer_client $(CLIENT_OBJS) $(CLIENT_LIBS) + + server: $(SERVER_OBJS) +- $(CXX) $(CXXFLAGS) -o sauer_server $(SERVER_OBJS) $(SERVER_LIBS) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o sauer_server $(SERVER_OBJS) $(SERVER_LIBS) + + master: $(MASTER_OBJS) +- $(CXX) $(CXXFLAGS) -o sauer_master $(MASTER_OBJS) $(MASTER_LIBS) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o sauer_master $(MASTER_OBJS) $(MASTER_LIBS) + + shared/cube2font.o: shared/cube2font.c +- $(CXX) $(CXXFLAGS) -c -o $@ $< `freetype-config --cflags` ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $< `freetype-config --cflags` + + cube2font: shared/cube2font.o +- $(CXX) $(CXXFLAGS) -o cube2font shared/cube2font.o `freetype-config --libs` -lz ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o cube2font shared/cube2font.o `freetype-config --libs` -lz + + install: all + cp sauer_client ../bin_unix/$(PLATFORM_PREFIX)_client diff --git a/games-fps/sauerbraten/files/sauerbraten-2013.01.04-master.patch b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-master.patch new file mode 100644 index 000000000000..730a69a2f4d0 --- /dev/null +++ b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-master.patch @@ -0,0 +1,323 @@ +http://sourceforge.net/p/sauerbraten/code/4699/ + +--- a/src/shared/iengine.h ++++ b/src/shared/iengine.h +@@ -415,23 +415,6 @@ + extern int getservermtu(); + extern int getnumclients(); + extern uint getclientip(int n); +-extern void putint(ucharbuf &p, int n); +-extern void putint(packetbuf &p, int n); +-extern void putint(vector<uchar> &p, int n); +-extern int getint(ucharbuf &p); +-extern void putuint(ucharbuf &p, int n); +-extern void putuint(packetbuf &p, int n); +-extern void putuint(vector<uchar> &p, int n); +-extern int getuint(ucharbuf &p); +-extern void putfloat(ucharbuf &p, float f); +-extern void putfloat(packetbuf &p, float f); +-extern void putfloat(vector<uchar> &p, float f); +-extern float getfloat(ucharbuf &p); +-extern void sendstring(const char *t, ucharbuf &p); +-extern void sendstring(const char *t, packetbuf &p); +-extern void sendstring(const char *t, vector<uchar> &p); +-extern void getstring(char *t, ucharbuf &p, int len = MAXTRANS); +-extern void filtertext(char *dst, const char *src, bool whitespace = true, int len = sizeof(string)-1); + extern void localconnect(); + extern const char *disconnectreason(int reason); + extern void disconnect_client(int n, int reason); +--- a/src/engine/server.cpp ++++ b/src/engine/server.cpp +@@ -99,125 +99,6 @@ + va_end(args); + } + #endif +- +-// all network traffic is in 32bit ints, which are then compressed using the following simple scheme (assumes that most values are small). +- +-template<class T> +-static inline void putint_(T &p, int n) +-{ +- if(n<128 && n>-127) p.put(n); +- else if(n<0x8000 && n>=-0x8000) { p.put(0x80); p.put(n); p.put(n>>8); } +- else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); } +-} +-void putint(ucharbuf &p, int n) { putint_(p, n); } +-void putint(packetbuf &p, int n) { putint_(p, n); } +-void putint(vector<uchar> &p, int n) { putint_(p, n); } +- +-int getint(ucharbuf &p) +-{ +- int c = (char)p.get(); +- if(c==-128) { int n = p.get(); n |= char(p.get())<<8; return n; } +- else if(c==-127) { int n = p.get(); n |= p.get()<<8; n |= p.get()<<16; return n|(p.get()<<24); } +- else return c; +-} +- +-// much smaller encoding for unsigned integers up to 28 bits, but can handle signed +-template<class T> +-static inline void putuint_(T &p, int n) +-{ +- if(n < 0 || n >= (1<<21)) +- { +- p.put(0x80 | (n & 0x7F)); +- p.put(0x80 | ((n >> 7) & 0x7F)); +- p.put(0x80 | ((n >> 14) & 0x7F)); +- p.put(n >> 21); +- } +- else if(n < (1<<7)) p.put(n); +- else if(n < (1<<14)) +- { +- p.put(0x80 | (n & 0x7F)); +- p.put(n >> 7); +- } +- else +- { +- p.put(0x80 | (n & 0x7F)); +- p.put(0x80 | ((n >> 7) & 0x7F)); +- p.put(n >> 14); +- } +-} +-void putuint(ucharbuf &p, int n) { putuint_(p, n); } +-void putuint(packetbuf &p, int n) { putuint_(p, n); } +-void putuint(vector<uchar> &p, int n) { putuint_(p, n); } +- +-int getuint(ucharbuf &p) +-{ +- int n = p.get(); +- if(n & 0x80) +- { +- n += (p.get() << 7) - 0x80; +- if(n & (1<<14)) n += (p.get() << 14) - (1<<14); +- if(n & (1<<21)) n += (p.get() << 21) - (1<<21); +- if(n & (1<<28)) n |= -1<<28; +- } +- return n; +-} +- +-template<class T> +-static inline void putfloat_(T &p, float f) +-{ +- lilswap(&f, 1); +- p.put((uchar *)&f, sizeof(float)); +-} +-void putfloat(ucharbuf &p, float f) { putfloat_(p, f); } +-void putfloat(packetbuf &p, float f) { putfloat_(p, f); } +-void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); } +- +-float getfloat(ucharbuf &p) +-{ +- float f; +- p.get((uchar *)&f, sizeof(float)); +- return lilswap(f); +-} +- +-template<class T> +-static inline void sendstring_(const char *t, T &p) +-{ +- while(*t) putint(p, *t++); +- putint(p, 0); +-} +-void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); } +-void sendstring(const char *t, packetbuf &p) { sendstring_(t, p); } +-void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); } +- +-void getstring(char *text, ucharbuf &p, int len) +-{ +- char *t = text; +- do +- { +- if(t>=&text[len]) { text[len-1] = 0; return; } +- if(!p.remaining()) { *t = 0; return; } +- *t = getint(p); +- } +- while(*t++); +-} +- +-void filtertext(char *dst, const char *src, bool whitespace, int len) +-{ +- for(int c = uchar(*src); c; c = uchar(*++src)) +- { +- if(c == '\f') +- { +- if(!*++src) break; +- continue; +- } +- if(iscubeprint(c) || (iscubespace(c) && whitespace)) +- { +- *dst++ = c; +- if(!--len) break; +- } +- } +- *dst = '\0'; +-} + + enum { ST_EMPTY, ST_LOCAL, ST_TCPIP }; + +--- a/src/shared/tools.h ++++ b/src/shared/tools.h +@@ -1178,5 +1178,24 @@ + extern uint randomMT(); + extern int guessnumcpus(); + +-#endif +- ++extern void putint(ucharbuf &p, int n); ++extern void putint(packetbuf &p, int n); ++extern void putint(vector<uchar> &p, int n); ++extern int getint(ucharbuf &p); ++extern void putuint(ucharbuf &p, int n); ++extern void putuint(packetbuf &p, int n); ++extern void putuint(vector<uchar> &p, int n); ++extern int getuint(ucharbuf &p); ++extern void putfloat(ucharbuf &p, float f); ++extern void putfloat(packetbuf &p, float f); ++extern void putfloat(vector<uchar> &p, float f); ++extern float getfloat(ucharbuf &p); ++extern void sendstring(const char *t, ucharbuf &p); ++extern void sendstring(const char *t, packetbuf &p); ++extern void sendstring(const char *t, vector<uchar> &p); ++extern void getstring(char *t, ucharbuf &p, int len); ++template<class T, size_t N> static inline void getstring(T (&t)[N], ucharbuf &p) { getstring(t, p, N); } ++extern void filtertext(char *dst, const char *src, bool whitespace = true, int len = sizeof(string)-1); ++ ++#endif ++ +--- a/src/engine/master.cpp ++++ b/src/engine/master.cpp +@@ -514,7 +514,7 @@ + authreq &a = c.authreqs.add(); + a.reqtime = servtime; + a.id = id; +- uint seed[3] = { starttime, servtime, randomMT() }; ++ uint seed[3] = { uint(starttime), servtime, randomMT() }; + static vector<char> buf; + buf.setsize(0); + a.answer = genchallenge(u->pubkey, seed, sizeof(seed), buf); +--- a/src/shared/tools.cpp ++++ b/src/shared/tools.cpp +@@ -53,3 +53,124 @@ + return y; + } + ++///////////////////////// network /////////////////////// ++ ++// all network traffic is in 32bit ints, which are then compressed using the following simple scheme (assumes that most values are small). ++ ++template<class T> ++static inline void putint_(T &p, int n) ++{ ++ if(n<128 && n>-127) p.put(n); ++ else if(n<0x8000 && n>=-0x8000) { p.put(0x80); p.put(n); p.put(n>>8); } ++ else { p.put(0x81); p.put(n); p.put(n>>8); p.put(n>>16); p.put(n>>24); } ++} ++void putint(ucharbuf &p, int n) { putint_(p, n); } ++void putint(packetbuf &p, int n) { putint_(p, n); } ++void putint(vector<uchar> &p, int n) { putint_(p, n); } ++ ++int getint(ucharbuf &p) ++{ ++ int c = (char)p.get(); ++ if(c==-128) { int n = p.get(); n |= char(p.get())<<8; return n; } ++ else if(c==-127) { int n = p.get(); n |= p.get()<<8; n |= p.get()<<16; return n|(p.get()<<24); } ++ else return c; ++} ++ ++// much smaller encoding for unsigned integers up to 28 bits, but can handle signed ++template<class T> ++static inline void putuint_(T &p, int n) ++{ ++ if(n < 0 || n >= (1<<21)) ++ { ++ p.put(0x80 | (n & 0x7F)); ++ p.put(0x80 | ((n >> 7) & 0x7F)); ++ p.put(0x80 | ((n >> 14) & 0x7F)); ++ p.put(n >> 21); ++ } ++ else if(n < (1<<7)) p.put(n); ++ else if(n < (1<<14)) ++ { ++ p.put(0x80 | (n & 0x7F)); ++ p.put(n >> 7); ++ } ++ else ++ { ++ p.put(0x80 | (n & 0x7F)); ++ p.put(0x80 | ((n >> 7) & 0x7F)); ++ p.put(n >> 14); ++ } ++} ++void putuint(ucharbuf &p, int n) { putuint_(p, n); } ++void putuint(packetbuf &p, int n) { putuint_(p, n); } ++void putuint(vector<uchar> &p, int n) { putuint_(p, n); } ++ ++int getuint(ucharbuf &p) ++{ ++ int n = p.get(); ++ if(n & 0x80) ++ { ++ n += (p.get() << 7) - 0x80; ++ if(n & (1<<14)) n += (p.get() << 14) - (1<<14); ++ if(n & (1<<21)) n += (p.get() << 21) - (1<<21); ++ if(n & (1<<28)) n |= -1<<28; ++ } ++ return n; ++} ++ ++template<class T> ++static inline void putfloat_(T &p, float f) ++{ ++ lilswap(&f, 1); ++ p.put((uchar *)&f, sizeof(float)); ++} ++void putfloat(ucharbuf &p, float f) { putfloat_(p, f); } ++void putfloat(packetbuf &p, float f) { putfloat_(p, f); } ++void putfloat(vector<uchar> &p, float f) { putfloat_(p, f); } ++ ++float getfloat(ucharbuf &p) ++{ ++ float f; ++ p.get((uchar *)&f, sizeof(float)); ++ return lilswap(f); ++} ++ ++template<class T> ++static inline void sendstring_(const char *t, T &p) ++{ ++ while(*t) putint(p, *t++); ++ putint(p, 0); ++} ++void sendstring(const char *t, ucharbuf &p) { sendstring_(t, p); } ++void sendstring(const char *t, packetbuf &p) { sendstring_(t, p); } ++void sendstring(const char *t, vector<uchar> &p) { sendstring_(t, p); } ++ ++void getstring(char *text, ucharbuf &p, int len) ++{ ++ char *t = text; ++ do ++ { ++ if(t>=&text[len]) { text[len-1] = 0; return; } ++ if(!p.remaining()) { *t = 0; return; } ++ *t = getint(p); ++ } ++ while(*t++); ++} ++ ++void filtertext(char *dst, const char *src, bool whitespace, int len) ++{ ++ for(int c = uchar(*src); c; c = uchar(*++src)) ++ { ++ if(c == '\f') ++ { ++ if(!*++src) break; ++ continue; ++ } ++ if(iscubeprint(c) || (iscubespace(c) && whitespace)) ++ { ++ *dst++ = c; ++ if(!--len) break; ++ } ++ } ++ *dst = '\0'; ++} ++ diff --git a/games-fps/sauerbraten/files/sauerbraten-2013.01.04-system-enet.patch b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-system-enet.patch new file mode 100644 index 000000000000..e87b280ba0c1 --- /dev/null +++ b/games-fps/sauerbraten/files/sauerbraten-2013.01.04-system-enet.patch @@ -0,0 +1,64 @@ +--- sauerbraten/src/Makefile ++++ sauerbraten/src/Makefile +@@ -4,7 +4,7 @@ + PLATFORM= $(shell uname -s) + PLATFORM_PREFIX= native + +-INCLUDES= -Ishared -Iengine -Ifpsgame -Ienet/include ++INCLUDES= -Ishared -Iengine -Ifpsgame + + STRIP= + ifeq (,$(findstring -g,$(CXXFLAGS))) +@@ -36,8 +36,8 @@ + endif + CLIENT_LIBS= -mwindows $(STD_LIBS) -L$(WINBIN) -L$(WINLIB) -lSDL -lSDL_image -lSDL_mixer -lzlib1 -lopengl32 -lenet -lws2_32 -lwinmm + else +-CLIENT_INCLUDES= $(INCLUDES) -I/usr/X11R6/include `sdl-config --cflags` +-CLIENT_LIBS= -Lenet/.libs -lenet -L/usr/X11R6/lib -lX11 `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL ++CLIENT_INCLUDES= $(INCLUDES) `sdl-config --cflags` ++CLIENT_LIBS= -lenet -lX11 `sdl-config --libs` -lSDL_image -lSDL_mixer -lz -lGL + endif + ifeq ($(PLATFORM),Linux) + CLIENT_LIBS+= -lrt +@@ -106,7 +106,7 @@ + MASTER_LIBS= $(STD_LIBS) -L$(WINBIN) -L$(WINLIB) -lzlib1 -lenet -lws2_32 -lwinmm + else + SERVER_INCLUDES= -DSTANDALONE $(INCLUDES) +-SERVER_LIBS= -Lenet/.libs -lenet -lz ++SERVER_LIBS= -lenet -lz + MASTER_LIBS= $(SERVER_LIBS) + endif + SERVER_OBJS= \ +@@ -135,15 +135,6 @@ + + all: client server + +-enet/Makefile: +- cd enet; ./configure --enable-shared=no --enable-static=yes +- +-libenet: enet/Makefile +- $(MAKE) -C enet/ all +- +-clean-enet: enet/Makefile +- $(MAKE) -C enet/ clean +- + clean: + -$(RM) $(CLIENT_PCH) $(CLIENT_OBJS) $(SERVER_OBJS) $(MASTER_OBJS) sauer_client sauer_server sauer_master + +@@ -176,13 +167,13 @@ + + install: all + else +-client: libenet $(CLIENT_OBJS) ++client: $(CLIENT_OBJS) + $(CXX) $(CXXFLAGS) -o sauer_client $(CLIENT_OBJS) $(CLIENT_LIBS) + +-server: libenet $(SERVER_OBJS) ++server: $(SERVER_OBJS) + $(CXX) $(CXXFLAGS) -o sauer_server $(SERVER_OBJS) $(SERVER_LIBS) + +-master: libenet $(MASTER_OBJS) ++master: $(MASTER_OBJS) + $(CXX) $(CXXFLAGS) -o sauer_master $(MASTER_OBJS) $(MASTER_LIBS) + + shared/cube2font.o: shared/cube2font.c diff --git a/games-fps/sauerbraten/metadata.xml b/games-fps/sauerbraten/metadata.xml index d3c2cc926f0b..1071eebc7386 100644 --- a/games-fps/sauerbraten/metadata.xml +++ b/games-fps/sauerbraten/metadata.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> -<herd>games</herd> + <herd>games</herd> + <use> + <flag name='server'>Compile server support</flag> + </use> </pkgmetadata> diff --git a/games-fps/sauerbraten/sauerbraten-2013.01.04.ebuild b/games-fps/sauerbraten/sauerbraten-2013.01.04.ebuild new file mode 100644 index 000000000000..1d8d6e43f9fd --- /dev/null +++ b/games-fps/sauerbraten/sauerbraten-2013.01.04.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/games-fps/sauerbraten/sauerbraten-2013.01.04.ebuild,v 1.1 2013/01/05 18:23:48 hasufell Exp $ + +EAPI=5 +inherit eutils flag-o-matic gnome2-utils games + +EDITION="collect_edition" +DESCRIPTION="Cube 2: Sauerbraten is an open source game engine (Cube 2) with freeware game data (Sauerbraten)" +HOMEPAGE="http://sauerbraten.org/" +SRC_URI="mirror://sourceforge/sauerbraten/sauerbraten/2013_01_04/sauerbraten_${PV//./_}_${EDITION}_linux.tar.bz2" + +LICENSE="ZLIB freedist" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="debug dedicated server" + +RDEPEND=" + sys-libs/zlib + >=net-libs/enet-1.3.6:1.3 + !dedicated? ( + media-libs/libsdl[X,opengl] + media-libs/sdl-mixer[vorbis] + media-libs/sdl-image[png,jpeg] + virtual/opengl + virtual/glu + x11-libs/libX11 )" +DEPEND="${RDEPEND}" + +S=${WORKDIR}/${PN} + +src_prepare() { + ecvs_clean + rm -rf sauerbraten_unix bin_unix src/{include,lib,vcpp} + + # Patch makefile to use system enet instead of bundled + # respect CXXFLAGS, LDFLAGS + epatch "${FILESDIR}"/${P}-{system-enet,QA,master}.patch + + # Fix links so they point to the correct directory + sed -i \ + -e 's:docs/::' \ + README.html \ + || die +} + +src_compile() { + use debug && append-cppflags -D_DEBUG + emake -C src master $(usex dedicated "server" "$(usex server "server client" "client")") +} + +src_install() { + local LIBEXECDIR="${GAMES_PREFIX}/lib" + local DATADIR="${GAMES_DATADIR}/${PN}" + local STATEDIR="${GAMES_STATEDIR}/${PN}" + + if ! use dedicated ; then + # Install the game data + insinto "${DATADIR}" + doins -r data packages + + # Install the client executable + exeinto "${LIBEXECDIR}" + doexe src/sauer_client + + # Install the client wrapper + games_make_wrapper "${PN}-client" "${LIBEXECDIR}/sauer_client -q\$HOME/.${PN} -r" "${DATADIR}" + + # Create menu entry + newicon -s 256 data/cube.png ${PN}.png + make_desktop_entry "${PN}-client" "Cube 2: Sauerbraten" + fi + + # Install the server config files + insinto "${STATEDIR}" + doins "server-init.cfg" + + # Install the server executables + exeinto "${LIBEXECDIR}" + doexe src/sauer_master + use dedicated || use server && doexe src/sauer_server + + games_make_wrapper "${PN}-server" \ + "${LIBEXECDIR}/sauer_server -k${DATADIR} -q${STATEDIR}" + games_make_wrapper "${PN}-master" \ + "${LIBEXECDIR}/sauer_master ${STATEDIR}" + + # Install the server init script + keepdir "${GAMES_STATEDIR}/run/${PN}" + cp "${FILESDIR}"/${PN}.init "${T}" || die + sed -i \ + -e "s:%SYSCONFDIR%:${STATEDIR}:g" \ + -e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \ + -e "s:%GAMES_STATEDIR%:${GAMES_STATEDIR}:g" \ + "${T}"/${PN}.init || die + newinitd "${T}"/${PN}.init ${PN} + cp "${FILESDIR}"/${PN}.conf "${T}" || die + sed -i \ + -e "s:%SYSCONFDIR%:${STATEDIR}:g" \ + -e "s:%LIBEXECDIR%:${LIBEXECDIR}:g" \ + -e "s:%GAMES_USER_DED%:${GAMES_USER_DED}:g" \ + -e "s:%GAMES_GROUP%:${GAMES_GROUP}:g" \ + "${T}"/${PN}.conf || die + newconfd "${T}"/${PN}.conf ${PN} + + nonfatal dodoc src/*.txt docs/dev/*.txt + nonfatal dohtml -r README.html docs/* + + prepgamesdirs +} + +pkg_preinst() { + games_pkg_preinst + gnome2_icon_savelist +} + +pkg_postinst() { + games_pkg_postinst + gnome2_icon_cache_update + + elog "If you plan to use map editor feature copy all map data from ${DATADIR}" + elog "to corresponding folder in your HOME/.${PN}" +} + +pkg_postrm() { + gnome2_icon_cache_update +} |