blob: 052af9137a45b03cf162220fb16653bc6fb0fa15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit desktop eutils
CTF_V="1.06"
ROGUE_V="2.06"
XATRIX_V="2.07"
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 openal +opengl rogue softrender xatrix"
REQUIRED_USE="
|| ( client dedicated )
client? ( || ( opengl softrender ) )
"
COMMON_DEPEND="
client? (
media-libs/libsdl2[video]
!openal? ( media-libs/libsdl2[sound] )
opengl? (
media-libs/libsdl2[opengl]
virtual/opengl
)
)
"
RDEPEND="${COMMON_DEPEND}
client? ( openal? ( media-libs/openal ) )
"
DEPEND="${COMMON_DEPEND}"
S="${WORKDIR}/quake2-${PV}"
PATCHES=(
"${FILESDIR}"/${PN}-respect-flags.patch
"${FILESDIR}"/${PN}-7.42-fno-common.patch
)
DOCS=( CHANGELOG README.md doc/. )
mymake() {
emake \
VERBOSE=1 \
WITH_SYSTEMWIDE=yes \
WITH_SYSTEMDIR="${EPREFIX}"/usr/share/games/quake2 \
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
if [[ ${addon} = ctf ]]; then
eapply -l -- "${FILESDIR}"/${PN}-addon-respect-flags-r2.patch
else
eapply -l -- "${FILESDIR}"/${PN}-addon-respect-flags-r3.patch
fi
popd >/dev/null || die
done
default
}
src_compile() {
local targets=( game )
if use client; then
targets+=( client )
use opengl && targets+=( ref_gl1 ref_gl3 )
use softrender && targets+=( ref_soft )
fi
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
if use client; then
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}"
fi
done
einstalldocs
if use client; then
docinto examples
dodoc stuff/cdripper.sh
fi
}
pkg_postinst() {
if [[ -z ${REPLACING_VERSIONS} ]]; then
elog
elog "In order to play, you must at least install:"
elog "games-fps/quake2-data or games-fps/quake2-demodata or copy game"
elog "data files to ~/.yq2/ or ${EPREFIX}/usr/share/games/quake2/ manually."
elog "Read ${EPREFIX}/usr/share/doc/${PF}/README.md* for more information."
elog
fi
}
|