commit:     e78d181b4c8003d1a1b3eae4d7f305b53aad608a
Author:     Kenton Groombridge <concord <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 29 22:50:43 2025 +0000
Commit:     Kenton Groombridge <concord <AT> gentoo <DOT> org>
CommitDate: Fri Sep 19 16:27:41 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e78d181b

games-fps/worldofpadman: add 1.7.0

- Build system changed to cmake
- Some USE flags were removed due to build options being removed upstream.
- Dropped ~x86 keywords due to the above.

Vulkan support was also added upstream but I could not get the game to
run with it (segfault at launch).

This ebuild needs to pull both the "unified" zip from upstream releases
as well as the source tarball because the former contains the game
assets which are unfortunately stored in Git LFS and are not present in
the latter. Should that be worked around, this ebuild can be easily
adapted to pack the game assets into the required .pk3 files.

Signed-off-by: Kenton Groombridge <concord <AT> gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/42805
Closes: https://github.com/gentoo/gentoo/pull/42805
Signed-off-by: Kenton Groombridge <concord <AT> gentoo.org>

 games-fps/worldofpadman/Manifest                   |  2 +
 .../files/worldofpadman-1.7-c23.patch              | 75 +++++++++++++++++++
 games-fps/worldofpadman/worldofpadman-1.7.0.ebuild | 86 ++++++++++++++++++++++
 3 files changed, 163 insertions(+)

diff --git a/games-fps/worldofpadman/Manifest b/games-fps/worldofpadman/Manifest
index 180e0ba9fd81..4f16022def78 100644
--- a/games-fps/worldofpadman/Manifest
+++ b/games-fps/worldofpadman/Manifest
@@ -1,3 +1,5 @@
 DIST wop-1.5-unified.zip 947290087 BLAKE2B 
5fb87cde661882fc095376012d9aca134d6399b4cedd4f3c78b739dd19e126360070278045d74c3318306e17490338111b8621e1c543b46e6bbecfbcd3658675
 SHA512 
fea0207efadf15afab7001227e27126aef4a673bd478dccb513c3011d0811074b2788083862f07e2f02f1a80ccb57a45ff64de8de155d8f8f7f1ab53ecf2402b
 DIST wop-1.5.x-to-1.6-patch-unified.zip 122204892 BLAKE2B 
a0f9feb04a15ec04dd64dbacdf5a158738d625651b2293bc8b3740067e849f33cdd144bce6afd11914524d89fe4bcfd48dbcbc455e51017b1216439e9bae484a
 SHA512 
a45018bd79e9e23c57bcaf692fa14c323671103558caad6acb794c2990cc5fe9cc8bdbe6a6c8254c4560d81eb59f5e3b9a6800a61b21a15870c4439f7179d936
 DIST worldofpadman-1.6-bison-3.patch.xz 14284 BLAKE2B 
9083243d12f59067c796c466e98061f601cf8fd07b9dd12718fd22ff1a9694fb57f2c55e204cddbd035209c9b7526f5b7297e53f742cf01a19a3cd0df491c5a8
 SHA512 
a8d54ed6041a3907e9d5fa2c61046e33022a1a80e10bf18db2140d8dfab42173f2fbdebcadf707f81d21395a574e68a20829170ca2067f1434874ea5856e4cce
+DIST wop-1.7.0-unified.zip 1200906511 BLAKE2B 
ef8da8d79d28eae3907954a490679bf436cb96e1f5d7480d874acb62c5f9aba204cc6e48b10ca91ffeefeda04f73c6f70cdb80de6bcd9fa77a9a7eb9c280467c
 SHA512 
1c1f2d88d6a4fe31f9f5a0f7884c6660feedb7c9d12c88f2339036041aa38e1ef4be9580489b2b42a93518c676f0ecdc6ee85be518e8a74970eb11a9d53b58a0
+DIST worldofpadman-1.7.0.tar.gz 119562391 BLAKE2B 
ee6d23aef07fcdb36e5eac2c07ff97263c33466b1ba53c0c383285a21554b7b3dc7a268020c35098e3df0f9581f0ab9d4b151f4c24448e3f6b5bbb080a40a78e
 SHA512 
c85053c73326893c61b23a2290e46647d2b58e60fa604004ed909c0a6d0ebae3500a3e2a5922fbf556dd12dddc6b58e8a61d27166ba55cc7ff5aded8697c5f9f

diff --git a/games-fps/worldofpadman/files/worldofpadman-1.7-c23.patch 
b/games-fps/worldofpadman/files/worldofpadman-1.7-c23.patch
new file mode 100644
index 000000000000..4acc672d1e6c
--- /dev/null
+++ b/games-fps/worldofpadman/files/worldofpadman-1.7-c23.patch
@@ -0,0 +1,75 @@
+From 5604ddf69b47e314150191c56a04b7009d885160 Mon Sep 17 00:00:00 2001
+From: Tim Angus <[email protected]>
+Date: Sat, 8 Mar 2025 13:00:48 +0000
+Subject: [PATCH] Rename LCC constexpr function to constantexpr, avoiding C23
+ keyword clash
+
+fixes #349
+---
+ code/tools/lcc/src/c.h    | 2 +-
+ code/tools/lcc/src/init.c | 2 +-
+ code/tools/lcc/src/simp.c | 4 ++--
+ code/tools/lcc/src/stmt.c | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/code/tools/lcc/src/c.h b/code/tools/lcc/src/c.h
+index d8560a020..2260141e3 100644
+--- a/code/tools/lcc/src/c.h
++++ b/code/tools/lcc/src/c.h
+@@ -529,7 +529,7 @@ extern int process(char *);
+ extern int findfunc(char *, char *);
+ extern int findcount(char *, int, int);
+ 
+-extern Tree constexpr(int);
++extern Tree constantexpr(int);
+ extern int intexpr(int, int);
+ extern Tree simplify(int, Type, Tree, Tree);
+ extern int ispow2(unsigned long u);
+diff --git a/code/tools/lcc/src/init.c b/code/tools/lcc/src/init.c
+index 64d73d319..972abf530 100644
+--- a/code/tools/lcc/src/init.c
++++ b/code/tools/lcc/src/init.c
+@@ -190,7 +190,7 @@ static int initstruct(int len, Type ty, int lev) {
+       return n;
+ }
+ 
+-/* initializer - constexpr | { constexpr ( , constexpr )* [ , ] } */
++/* initializer - constantexpr | { constantexpr ( , constantexpr )* [ , ] } */
+ Type initializer(Type ty, int lev) {
+       int n = 0;
+       Tree e;
+diff --git a/code/tools/lcc/src/simp.c b/code/tools/lcc/src/simp.c
+index 9f4e3ecc3..50e83e484 100644
+--- a/code/tools/lcc/src/simp.c
++++ b/code/tools/lcc/src/simp.c
+@@ -167,7 +167,7 @@ static int subi(long x, long y, long min, long max, int 
needconst) {
+ static int subd(double x, double y, double min, double max, int needconst) {
+       return addd(x, -y, min, max, needconst);
+ }
+-Tree constexpr(int tok) {
++Tree constantexpr(int tok) {
+       Tree p;
+ 
+       needconst++;
+@@ -177,7 +177,7 @@ Tree constexpr(int tok) {
+ }
+ 
+ int intexpr(int tok, int n) {
+-      Tree p = constexpr(tok);
++      Tree p = constantexpr(tok);
+ 
+       needconst++;
+       if (p->op == CNST + I || p->op == CNST + U)
+diff --git a/code/tools/lcc/src/stmt.c b/code/tools/lcc/src/stmt.c
+index fe83e21f8..a65efc0ec 100644
+--- a/code/tools/lcc/src/stmt.c
++++ b/code/tools/lcc/src/stmt.c
+@@ -128,7 +128,7 @@
+                       static char stop[] = {IF, ID, 0};
+                       Tree p;
+                       t = gettok();
+-                      p = constexpr(0);
++                      p = constantexpr(0);
+                       if (generic(p->op) == CNST && isint(p->type)) {
+                               if (swp) {
+                                       needconst++;

diff --git a/games-fps/worldofpadman/worldofpadman-1.7.0.ebuild 
b/games-fps/worldofpadman/worldofpadman-1.7.0.ebuild
new file mode 100644
index 000000000000..75259eeda716
--- /dev/null
+++ b/games-fps/worldofpadman/worldofpadman-1.7.0.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake desktop
+
+DESCRIPTION="Cartoon style multiplayer first-person shooter"
+HOMEPAGE="https://worldofpadman.net/";
+SRC_URI="https://github.com/PadWorld-Entertainment/${PN}/archive/refs/tags/v${PV}.tar.gz
 -> ${P}.tar.gz"
+SRC_URI+=" 
https://github.com/PadWorld-Entertainment/${PN}/releases/download/v${PV}/wop-${PV}-unified.zip";
+
+LICENSE="GPL-2 worldofpadman"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="dedicated +opengl"
+
+RDEPEND="
+       sys-libs/zlib
+       !dedicated? (
+               media-libs/libjpeg-turbo:=
+               media-libs/libsdl[joystick,video,X]
+               media-libs/libtheora
+               media-libs/libogg
+               media-libs/libvorbis
+               media-libs/openal
+               net-misc/curl
+               virtual/glu
+               opengl? (
+                       media-libs/libsdl[opengl]
+                       virtual/opengl
+               )
+       )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="app-arch/unzip"
+
+DOCS=( docs/id-readme.txt docs/ioq3-readme.md docs/voip-readme.txt 
CHANGELOG.md )
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.7-c23.patch # bug 944329, git main
+)
+
+src_configure() {
+       local arch
+
+       if use amd64 ; then
+               arch=x86_64
+       elif use x86 ; then
+               arch=i386
+       fi
+
+       local mycmakeargs=(
+               -DCMAKE_INSTALL_PREFIX=/usr/share/${PN}
+               -DCMAKE_INSTALL_RPATH=/usr/share/${PN}
+               -DARCH=${arch}
+               -DBUILD_CLIENT=$(usex dedicated OFF ON)
+               -DBUILD_RENDERER_OPENGL2=$(usex opengl)
+               -DBUILD_RENDERER_VULKAN=OFF
+               -DUSE_CURL_DLOPEN=OFF
+               -DUSE_OPENAL_DLOPEN=OFF
+               -DUSE_RENDERER_DLOPEN=OFF
+       )
+
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       mkdir -p "${ED}"/usr/bin || die
+       mv "${ED}"/usr/share/${PN}/wopded.* "${ED}"/usr/bin/${PN}-ded || die
+
+       if ! use dedicated ; then
+               mv "${ED}"/usr/share/${PN}/wop.* "${ED}"/usr/bin/${PN} || die
+               newicon misc/wop.svg ${PN}.svg
+               make_desktop_entry ${PN} "World of Padman"
+       fi
+
+       insinto /usr/share/${PN}/wop
+       doins "${WORKDIR}"/wop/*.pk3
+       doins "${WORKDIR}"/wop/*.cfg
+
+       local HTML_DOCS=( XTRAS/{readme,readme.html} )
+       einstalldocs
+}

Reply via email to