From 0b4b22c0c3e1a24e9f75ddea106a1f57b7e5be88 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Thu, 25 Feb 2016 14:01:30 +0100 Subject: [PATCH] games-fps/openarena: initial import of version 0.8.8 --- .../files/openarena-0.8.8-makefile.patch | 36 ++++ .../files/openarena-0.8.8-unbundling.patch | 172 ++++++++++++++++++ .../openarena/openarena-0.8.8.exheres-0 | 92 ++++++++++ 3 files changed, 300 insertions(+) create mode 100644 packages/games-fps/openarena/files/openarena-0.8.8-makefile.patch create mode 100644 packages/games-fps/openarena/files/openarena-0.8.8-unbundling.patch create mode 100644 packages/games-fps/openarena/openarena-0.8.8.exheres-0 diff --git a/packages/games-fps/openarena/files/openarena-0.8.8-makefile.patch b/packages/games-fps/openarena/files/openarena-0.8.8-makefile.patch new file mode 100644 index 00000000..ba38daf2 --- /dev/null +++ b/packages/games-fps/openarena/files/openarena-0.8.8-makefile.patch @@ -0,0 +1,36 @@ +From: Julian Ospald +Date: Thu May 17 23:34:20 UTC 2012 +Subject: flags, arch + +--- openarena-engine-source-0.8.8/Makefile ++++ openarena-engine-source-0.8.8/Makefile +@@ -73,6 +73,10 @@ + + ifndef ARCH + ARCH=$(COMPILE_ARCH) ++else ++ ifeq ($(ARCH),amd64) ++ ARCH=x86_64 ++ endif + endif + export ARCH + +@@ -263,8 +267,7 @@ + endif + endif + +- BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ +- -pipe -DUSE_ICON ++ BASE_CFLAGS = -fno-strict-aliasing -DUSE_ICON -I. + CLIENT_CFLAGS = $(SDL_CFLAGS) + SERVER_CFLAGS = + +@@ -335,7 +338,7 @@ + THREAD_LIBS=-lpthread + LIBS=-ldl -lm + +- CLIENT_LIBS=$(SDL_LIBS) -lGL ++ CLIENT_LIBS=$(SDL_LIBS) -lGL -ljpeg + + ifeq ($(USE_OPENAL),1) + ifneq ($(USE_OPENAL_DLOPEN),1) diff --git a/packages/games-fps/openarena/files/openarena-0.8.8-unbundling.patch b/packages/games-fps/openarena/files/openarena-0.8.8-unbundling.patch new file mode 100644 index 00000000..287eb79c --- /dev/null +++ b/packages/games-fps/openarena/files/openarena-0.8.8-unbundling.patch @@ -0,0 +1,172 @@ +--- openarena-engine-source-0.8.8/Makefile ++++ openarena-engine-source-0.8.8/Makefile +@@ -1406,41 +1406,7 @@ + $(B)/client/l_script.o \ + $(B)/client/l_struct.o \ + \ +- $(B)/client/jcapimin.o \ +- $(B)/client/jcapistd.o \ +- $(B)/client/jccoefct.o \ +- $(B)/client/jccolor.o \ +- $(B)/client/jcdctmgr.o \ +- $(B)/client/jchuff.o \ +- $(B)/client/jcinit.o \ +- $(B)/client/jcmainct.o \ +- $(B)/client/jcmarker.o \ +- $(B)/client/jcmaster.o \ +- $(B)/client/jcomapi.o \ +- $(B)/client/jcparam.o \ +- $(B)/client/jcphuff.o \ +- $(B)/client/jcprepct.o \ +- $(B)/client/jcsample.o \ +- $(B)/client/jdapimin.o \ +- $(B)/client/jdapistd.o \ + $(B)/client/jdatasrc.o \ +- $(B)/client/jdcoefct.o \ +- $(B)/client/jdcolor.o \ +- $(B)/client/jddctmgr.o \ +- $(B)/client/jdhuff.o \ +- $(B)/client/jdinput.o \ +- $(B)/client/jdmainct.o \ +- $(B)/client/jdmarker.o \ +- $(B)/client/jdmaster.o \ +- $(B)/client/jdpostct.o \ +- $(B)/client/jdsample.o \ +- $(B)/client/jdtrans.o \ +- $(B)/client/jerror.o \ +- $(B)/client/jfdctflt.o \ +- $(B)/client/jidctflt.o \ +- $(B)/client/jmemmgr.o \ +- $(B)/client/jmemnobs.o \ +- $(B)/client/jutils.o \ + \ + $(B)/client/tr_animation.o \ + $(B)/client/tr_backend.o \ +--- openarena-engine-source-0.8.8/code/jpeg-6b/jdatasrc.c ++++ openarena-engine-source-0.8.8/code/jpeg-6b/jdatasrc.c +@@ -15,9 +15,15 @@ + */ + + /* this is not a core library module, so it doesn't define JPEG_INTERNALS */ +-#include "jinclude.h" +-#include "jpeglib.h" +-#include "jerror.h" ++#include ++#include ++#include ++#include ++#undef METHODDEF ++#define METHODDEF static ++#undef GLOBAL ++#define GLOBAL ++#define SIZEOF(object) ((size_t) sizeof(object)) + + #ifndef MIN + #define MIN(a, b) ((a)<(b)?(a):(b)) +@@ -44,7 +50,7 @@ + * before any data is actually read. + */ + +-METHODDEF(void) ++METHODDEF void + init_source (j_decompress_ptr cinfo) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -90,7 +96,7 @@ + * the front of the buffer rather than discarding it. + */ + +-METHODDEF(boolean) ++METHODDEF boolean + fill_input_buffer (j_decompress_ptr cinfo) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -129,7 +135,7 @@ + * buffer is the application writer's problem. + */ + +-METHODDEF(void) ++METHODDEF void + skip_input_data (j_decompress_ptr cinfo, long num_bytes) + { + my_src_ptr src = (my_src_ptr) cinfo->src; +@@ -170,7 +176,7 @@ + * for error exit. + */ + +-METHODDEF(void) ++METHODDEF void + term_source (j_decompress_ptr cinfo) + { + /* no work necessary here */ +@@ -183,8 +189,8 @@ + * for closing it after finishing decompression. + */ + +-GLOBAL(void) +-jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, size_t size) ++GLOBAL void ++jpeg_mem_src (j_decompress_ptr cinfo, unsigned char *inbuf, unsigned long size) + { + my_src_ptr src; + +--- openarena-engine-source-0.8.8/code/renderer/tr_image_jpg.c ++++ openarena-engine-source-0.8.8/code/renderer/tr_image_jpg.c +@@ -31,7 +31,7 @@ + */ + + #define JPEG_INTERNALS +-#include "../jpeg-6b/jpeglib.h" ++#include + + void R_LoadJPG( const char *filename, unsigned char **pic, int *width, int *height ) { + /* This struct contains the JPEG decompression parameters and pointers to +@@ -131,7 +131,10 @@ + } + + memcount = pixelcount * 4; +- row_stride = cinfo.output_width * cinfo.output_components; ++ if (3 == cinfo.output_components) ++ row_stride = cinfo.output_width * 4; ++ else ++ row_stride = cinfo.output_width * cinfo.output_components; + + out = ri.Malloc(memcount); + +@@ -144,14 +147,26 @@ + /* Here we use the library's state variable cinfo.output_scanline as the + * loop counter, so that we don't have to keep track ourselves. + */ ++ buf = out; + while (cinfo.output_scanline < cinfo.output_height) { + /* jpeg_read_scanlines expects an array of pointers to scanlines. + * Here the array is only one element long, but you could ask for + * more than one scanline at a time if that's more convenient. + */ +- buf = ((out+(row_stride*cinfo.output_scanline))); + buffer = &buf; + (void) jpeg_read_scanlines(&cinfo, buffer, 1); ++ if (3 == cinfo.output_components) { ++ /* turn RGB into RGBA */ ++ int ioffset = cinfo.output_width * 3 - 1; ++ int ooffset = cinfo.output_width * 4 - 1; ++ do { ++ buf[ooffset--] = 255; ++ buf[ooffset--] = buf[ioffset--]; ++ buf[ooffset--] = buf[ioffset--]; ++ buf[ooffset--] = buf[ioffset--]; ++ } while (ioffset > 0); ++ } ++ buf += row_stride; + } + + buf = out; +@@ -176,7 +191,7 @@ + buf[--dindex] = greyshade; + } while(sindex); + } +- else ++ else if (4 == cinfo.output_components) + { + // clear all the alphas to 255 + int i; diff --git a/packages/games-fps/openarena/openarena-0.8.8.exheres-0 b/packages/games-fps/openarena/openarena-0.8.8.exheres-0 new file mode 100644 index 00000000..d0aef588 --- /dev/null +++ b/packages/games-fps/openarena/openarena-0.8.8.exheres-0 @@ -0,0 +1,92 @@ +# Copyright 1999-2011 Gentoo Foundation +# Copyright 2014-2016 Julian Ospald +# Distributed under the terms of the GNU General Public License v2 + +SUMMARY="Open-source replacement for Quake 3 Arena" +HOMEPAGE="http://openarena.ws/" +DOWNLOADS="mirror://sourceforge/oarena/${PNV}.zip + mirror://sourceforge/oarena/src/${PN}-engine-source-${PV}.tar.bz2" + +LICENCES="GPL-2" +SLOT="0" +PLATFORMS="~amd64 ~x86" +MYOPTIONS=" + ( providers: ijg-jpeg jpeg-turbo ) [[ number-selected = exactly-one ]] +" + +DEPENDENCIES=" + build: + virtual/unzip + build+run: + media-libs/SDL:0[X] + media-libs/libvorbis + media-libs/openal + media-libs/speex + net-misc/curl + x11-dri/mesa + x11-libs/libX11 + x11-libs/libXau + x11-libs/libXdmcp + x11-libs/libXext + providers:ijg-jpeg? ( media-libs/jpeg ) + providers:jpeg-turbo? ( media-libs/libjpeg-turbo ) +" + +MY_S=${WORKBASE}/${PN}-engine-source-${PV} +BUILD_DIR=${PN}-build +OA_SHARE_DIR=/usr/share/${PN} + +src_prepare() { + edo pushd "${WORKBASE}" + expatch -p0 "${FILES}"/${PNV}-makefile.patch + expatch -p0 "${FILES}"/${PNV}-unbundling.patch + edo popd + edo touch "${MY_S}"/jpegint.h +} + +src_compile() { + export CC=${CC} CXX=${CXX} LD=${LD} AR=${AR} RANLIB=${RANLIB} + + emake -C ${MY_S} \ + V=1 \ + DEFAULT_BASEDIR="${OA_SHARE_DIR}" \ + BR="${BUILD_DIR}" \ + USE_INTERNAL_SPEEX=0 \ + USE_VOIP=1 \ + USE_MUMBLE=0 \ + BUILD_SERVER=1 \ + BUILD_CLIENT_SMP=1 \ + USE_LOCAL_HEADERS=0 \ + USE_CURL=0 \ + USE_OPENAL=0 \ + USE_CODEC_VORBIS=0 \ + OPTIMIZE= +} + +src_install() { + edo pushd "${MY_S}/${BUILD_DIR}" + newbin openarena-smp.* ${PN} + newbin oa_ded.* "${PN}-ded" + edo popd + + insinto "${OA_SHARE_DIR}" + doins -r baseoa missionpack + + dodoc CHANGES CREDITS LINUXNOTES README + + insinto /usr/share/pixmaps + newins "${MY_S}"/misc/quake3.png ${PN}.png + + insinto /usr/share/applications/ + hereins ${PN}.desktop << EOF +[Desktop Entry] +Name=OpenArena +Type=Application +Comment=${SUMMARY} +Exec=${PN} +TryExec=${PN} +Icon=${PN} +Categories=Game;ActionGame; +EOF +} +