games-fps/yamagi-quake2: new package

This is the Yamagi Quake II Client, an enhanced version of id Software's
Quake II with focus on offline and coop gameplay. Both the gameplay and
the graphics are unchanged, but many bugs in the last official release
were fixed and some nice to have features like widescreen support and a
modern OpenGL 3.2 renderer were added. Unlike most other Quake II source
ports Yamagi Quake II is fully 64 bit clean and is still actively
maintained.

Closes: https://bugs.gentoo.org/314751
This commit is contained in:
Alexander Tsoy
2018-01-19 02:33:23 +03:00
committed by Michał Górny
parent bf9a8f35f2
commit f405aa6406
5 changed files with 227 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
DIST quake2-7.10.tar.xz 1792748 BLAKE2B 853d6db1eec46ce40952fd413a259653275081599a940941fc883921b310f436be62b80a1d911a0d8f95a33e540e60bd6db2377370cc443cbaa9c3eec6ae055f SHA512 46247c3e2c8e6dcb056dfc7785dd63bf4f896719894a1c5467f2eb313cc3d8a892fda9bafc2ca760a9ac96f6b8e23485a8740b03e118cf9a524f68657183fbb9
DIST quake2-ctf-1.05.tar.xz 134872 BLAKE2B eb987004b1c1b1743ec532b6bea96a257957377cbdb0571d6c6e7b2dae6c1b7abc154233d4f9d3af6fb546d7810e5c041b8e9293de2e409a7cace88aa455f526 SHA512 9eb951f4a9d7abc5f9a2ca53d886f68b745c1efdf3fea14db2e071b8d1592d33579c5fa56326aa583269a4810e16a7eda8dcd8930e36782cb4fcb8578c44951b
DIST quake2-rogue-2.04.tar.xz 240436 BLAKE2B e7c3660378fe40b3f514b6e1de8714e3d3550baa244897b98bb81f362fa2b0aa57e3abceb5a38ea77cfec7621e2fcfab342a45bf9b66ccd0e44cc70292888fc2 SHA512 546deb74175c60ed7e5600a3d4b1c983fc0b1fae5922ebdb8fc3cdc5584931a0a5e34914ec2cd4ef9815323ba82cb56d427986d5c91dc040d6b68baff68ca5a8
DIST quake2-xatrix-2.05.tar.xz 189888 BLAKE2B 9d884af6033d529ce8cca7a70a36608e45db47dab74ab0d88c04f4d928425cf22901b1299a69330bfa83810034c9f1eff2d9618b222db68564d81d569f0596cd SHA512 f7e14bb870eaf4515405f5f1162057669351a334993410101973b75e52d6d576c35c91112911f961ad122ebe664b294649e94e88a2f62b79f51e28d02f50487a

View File

@@ -0,0 +1,30 @@
--- a/Makefile 2017-05-25 12:45:51.000000000 +0300
+++ b/Makefile 2018-01-14 17:38:34.540167879 +0300
@@ -64,11 +64,11 @@
#
# -MMD to generate header dependencies.
ifeq ($(OSTYPE), Darwin)
-CFLAGS := -O2 -fno-strict-aliasing -fomit-frame-pointer \
- -Wall -pipe -g -fwrapv -arch i386 -arch x86_64
+CFLAGS += -fno-strict-aliasing -fomit-frame-pointer \
+ -Wall -fwrapv -arch i386 -arch x86_64
else
-CFLAGS := -O2 -fno-strict-aliasing -fomit-frame-pointer \
- -Wall -pipe -g -MMD -fwrapv
+CFLAGS += -fno-strict-aliasing -fomit-frame-pointer \
+ -Wall -MMD -fwrapv
endif
# ----------
@@ -80,9 +80,9 @@
# Base LDFLAGS.
ifeq ($(OSTYPE), Darwin)
-LDFLAGS := -shared -arch i386 -arch x86_64
+LDFLAGS += -shared -arch i386 -arch x86_64
else
-LDFLAGS := -shared
+LDFLAGS += -shared
endif
# ----------

View File

@@ -0,0 +1,40 @@
--- a/Makefile 2017-12-08 12:22:59.000000000 +0300
+++ b/Makefile 2018-01-14 15:42:56.804047742 +0300
@@ -165,12 +165,12 @@
# -MMD to generate header dependencies. (They cannot be
# generated if building universal binaries on OSX)
ifeq ($(YQ2_OSTYPE), Darwin)
-CFLAGS := -O2 -fno-strict-aliasing -fomit-frame-pointer \
- -Wall -pipe -g -fwrapv
+CFLAGS += -fno-strict-aliasing -fomit-frame-pointer \
+ -Wall -fwrapv
CFLAGS += $(OSX_ARCH)
else
-CFLAGS := -std=gnu99 -O2 -fno-strict-aliasing \
- -Wall -pipe -g -ggdb -MMD -fwrapv
+CFLAGS += -std=gnu99 -fno-strict-aliasing \
+ -Wall -MMD -fwrapv
endif
# ----------
@@ -263,15 +263,15 @@
# Base LDFLAGS.
ifeq ($(YQ2_OSTYPE),Linux)
-LDFLAGS := -L/usr/lib -lm -ldl -rdynamic
+LDFLAGS += -lm -ldl -rdynamic
else ifeq ($(YQ2_OSTYPE),FreeBSD)
-LDFLAGS := -L/usr/local/lib -lm
+LDFLAGS += -lm
else ifeq ($(YQ2_OSTYPE),OpenBSD)
-LDFLAGS := -L/usr/local/lib -lm
+LDFLAGS += -lm
else ifeq ($(YQ2_OSTYPE),Windows)
-LDFLAGS := -L/usr/lib -lws2_32 -lwinmm -static-libgcc
+LDFLAGS += -lws2_32 -lwinmm -static-libgcc
else ifeq ($(YQ2_OSTYPE), Darwin)
-LDFLAGS := $(OSX_ARCH) -lm
+LDFLAGS += $(OSX_ARCH) -lm
endif
CFLAGS += -fvisibility=hidden

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>alexander@tsoy.me</email>
<name>Alexander Tsoy</name>
</maintainer>
<maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<upstream>
<remote-id type="github">yquake2/yquake2</remote-id>
</upstream>
<use>
<flag name="client">Build client</flag>
<flag name="ctf">Build support for the 'Capture The Flag' addon</flag>
<flag name="rogue">Build support for the 'Ground Zero' Mission Pack</flag>
<flag name="xatrix">Build support for the 'The Reckoning' Mission Pack</flag>
</use>
</pkgmetadata>

View File

@@ -0,0 +1,132 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit desktop eutils
CTF_V=1.05
ROGUE_V=2.04
XATRIX_V=2.05
DESCRIPTION="Quake 2 engine focused on single player"
HOMEPAGE="https://www.yamagi.org/quake2/"
SRC_URI="https://deponie.yamagi.org/quake2/quake2-${PV}.tar.xz
ctf? ( https://deponie.yamagi.org/quake2/quake2-ctf-${CTF_V}.tar.xz )
rogue? ( https://deponie.yamagi.org/quake2/quake2-rogue-${ROGUE_V}.tar.xz )
xatrix? ( https://deponie.yamagi.org/quake2/quake2-xatrix-${XATRIX_V}.tar.xz )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="+client ctf dedicated ogg openal rogue xatrix"
REQUIRED_USE="|| ( client dedicated )"
RDEPEND="sys-libs/zlib:0=
client? (
media-libs/libsdl2[opengl,video]
virtual/opengl
ogg? (
media-libs/libogg
media-libs/libvorbis
)
openal? ( media-libs/openal )
!openal? ( media-libs/libsdl2[sound] )
)
"
DEPEND="${RDEPEND}"
S="${WORKDIR}/quake2-${PV}"
PATCHES=( "${FILESDIR}"/${PN}-respect-flags.patch )
DOCS=( CHANGELOG CONTRIBUTE README.md )
mymake() {
emake \
VERBOSE=1 \
DLOPEN_OPENAL=no \
WITH_CDA=no \
WITH_SYSTEMWIDE=yes \
WITH_SYSTEMDIR="${EPREFIX}"/usr/share/games/quake2 \
WITH_ZIP=yes \
WITH_OGG=$(usex ogg) \
WITH_OPENAL=$(usex openal) \
"$@"
}
src_prepare() {
local addon
for addon in ctf rogue xatrix; do
use ${addon} || continue
pushd "${WORKDIR}"/quake2-${addon}-* >/dev/null || die
eapply -l -- "${FILESDIR}"/${PN}-addon-respect-flags.patch
popd >/dev/null || die
done
default
}
src_compile() {
local targets=( game )
use client && targets+=( client ref_gl1 ref_gl3 )
use dedicated && targets+=( server )
mymake config
mymake "${targets[@]}"
local addon
for addon in ctf rogue xatrix; do
use ${addon} || continue
emake -C "${WORKDIR}"/quake2-${addon}-* VERBOSE=1
done
}
src_install() {
insinto /usr/lib/yamagi-quake2
# Yamagi Quake II expects all binaries to be in the same directory
# See stuff/packaging.md for more info
exeinto /usr/lib/yamagi-quake2
doins -r release/.
if use client; then
doexe release/quake2
dosym ../lib/yamagi-quake2/quake2 /usr/bin/yquake2
newicon stuff/icon/Quake2.svg "yamagi-quake2.svg"
make_desktop_entry "yquake2" "Yamagi Quake II"
fi
if use dedicated; then
doexe release/q2ded
dosym ../lib/yamagi-quake2/q2ded /usr/bin/yq2ded
fi
insinto /usr/lib/yamagi-quake2/baseq2
doins stuff/yq2.cfg
local addon
for addon in ctf rogue xatrix; do
use ${addon} || continue
insinto /usr/lib/yamagi-quake2/${addon}
doins "${WORKDIR}"/quake2-${addon}-*/release/game.so
local addon_name
case ${addon} in
ctf) addon_name="CTF" ;;
rogue) addon_name="Ground Zero" ;;
xatrix) addon_name="The Reckoning" ;;
esac
make_wrapper "yquake2-${addon}" "yquake2 +set game ${addon}"
make_desktop_entry "yquake2-${addon}" "Yamagi Quake II: ${addon_name}"
done
einstalldocs
if use client; then
docinto examples
dodoc stuff/cdripper.sh
fi
}