From c0040922e1af7afdc848a0e89dfc0666be92d980 Mon Sep 17 00:00:00 2001 From: damage Date: Mon, 7 Sep 2026 22:08:06 +0200 Subject: [PATCH] games-fps/eduke32 20260807 --- games-fps/eduke32/Manifest | 15 ++ .../eduke32/eduke32-20260807.10669.ebuild | 218 ++++++++++++++++++ .../files/eduke32-20200505.8904-gcc10.patch | 13 ++ .../eduke32-20220204.9957-log-to-tmpdir.patch | 11 + ...32-20230926.10459-search-duke3d-path.patch | 11 + games-fps/eduke32/files/eduke32-bin | 12 + games-fps/eduke32/files/voidsw-bin | 12 + games-fps/eduke32/metadata.xml | 32 +++ 8 files changed, 324 insertions(+) create mode 100644 games-fps/eduke32/Manifest create mode 100644 games-fps/eduke32/eduke32-20260807.10669.ebuild create mode 100644 games-fps/eduke32/files/eduke32-20200505.8904-gcc10.patch create mode 100644 games-fps/eduke32/files/eduke32-20220204.9957-log-to-tmpdir.patch create mode 100644 games-fps/eduke32/files/eduke32-20230926.10459-search-duke3d-path.patch create mode 100644 games-fps/eduke32/files/eduke32-bin create mode 100644 games-fps/eduke32/files/voidsw-bin create mode 100644 games-fps/eduke32/metadata.xml diff --git a/games-fps/eduke32/Manifest b/games-fps/eduke32/Manifest new file mode 100644 index 0000000..c7cda89 --- /dev/null +++ b/games-fps/eduke32/Manifest @@ -0,0 +1,15 @@ +AUX eduke32-20200505.8904-gcc10.patch 294 BLAKE2B fe527a1a38b17731322dd5d7c9c1ea16dce86eb2c023966a28e87477c9b25001294fcda456fc2bdbfdfbbefb67991e67f9693db69ef18d8485035546e231e0cf SHA512 a79859e6f167203ee0d09db1740cfd223e0e196f2ed5f65e51830e27c8a7bf284ff9bd20d1527dfc2679a08f1ec2aa92a1e582599e656bd0e655bfda189608c7 +AUX eduke32-20220204.9957-log-to-tmpdir.patch 229 BLAKE2B 7a2529e435363c6950958d0bc88339c0a0d6bc3da39980a2e8649ce878e72afcb67121899034841e69cdb11b6ba61b84961b61199a0dcdec3b5db311c4b24264 SHA512 916bb036f6a7550505f6af89ac8e8974e689ac0789863b98dfc65d2775b3d22776f94d30590ebdcc267f1184ea5ceea1affdc43786bf4d74b25df80c0866c166 +AUX eduke32-20230926.10459-search-duke3d-path.patch 441 BLAKE2B fc62a97610ce16d8d318aacdf3773f4cfc40a949c0de4fe8e68241ff7eda9a9c31bd3114c43e436fbfbf084625d7251fc16775f412de9fa40f6be365d0a5b178 SHA512 d3d7fb1f7949a2d67a524a1bc198df830829c0a4b80199e525aa3e1827d2785979bb2a1bb02a0b30e6dc8128e8330bf829a542a7994621ba3f5d1dca61a542b8 +AUX eduke32-bin 268 BLAKE2B 20941b736b5062f237a39d769a28bbbe1442116259bfe8ff5de4e4c5d9ea2a6139a10efcfd687ee681f56a99382e817f9ad00c2eb2da9c0f1e817912b783261e SHA512 f7a472eb7225800f09d22b617aa12d75dca50892a462a128f901f8df1efc3684d324948f553e1fb44a1e9b786aa60279311ee52d1a6d695cdac0b457a8eee937 +AUX voidsw-bin 265 BLAKE2B 61ff722fbf4a161aaf0851d00fe3c4c0ecd9544ef95e9d19df779b52feedbaba3a40c5b094b4ef21360b00e10058fc2773de0971dc4427b9c0e8ca6e135d5890 SHA512 ffeaca39dde274b4eec2cb3d2e59e2503140b3a6fe1451abd57557e3030ecc89425ae98beecf2595920d338b72b582ce40d8439c11b63ac1935cfbf409d9c6e5 +DIST duke3d_hrp-5.5.zip 933440151 BLAKE2B 20749d6e1bdd07d0e5f28ac2f7e3aff60e8638223b934795320046922311533d6ecaefa3923650568aaa4e026927b53087032415d2d343fc4bd179c9e9ddd640 SHA512 fd5aba0a09193ccd49781d3f06a040000a134ad90f099ab7bf10a8abe474c3a742f922f8fa31522b8993828d516bdd0b5ded327e9c4615c2c101fe655d533f4d +DIST duke3d_music-sc55-4.02.zip 155441427 BLAKE2B 7fa0c98927dd9a18411ad473269a795d1bc809fa8f9479deef06e12cd0dc97953680e7519c9d22e2d32b6ff79726682746820f78429ad11cb5edf1b64d2e4fe7 SHA512 70d3d7b4705e30cdb19ddc95e11a88afff1dc01dfc6495a488ea665f8097c1200695ec67246ac47a2480d0e68cd7d74e1d61c2120485f53bb93d9c0fb16ba9b2 +DIST duke3d_musopl-2.01.zip 266444823 BLAKE2B 5255c671782279c7723fb1f848a331645a89fdc8dd5336250d06e6eed5b63511c37bfbb07d22d7e7ce29707efe2c55406f2ee81522374de3633f2b448c7dbd6b SHA512 08308b672516a6f3a3b9b85fd836f2a29a24c8fa5f353953f5f55a281dea370046817ccfb8467b4ce25385277ced8afd83c00882e8a246b03afa5e0e349efd35 +DIST duke3d_psx-1.11.zip 7636016 BLAKE2B 63094c0eb2343e443f98844675ddc23a138d87c17b1163107e1f8c6eab4be2b5a2ed74f302604f5769d3bb71d3ce8355b69b75352dc470918ebd5c0c73d68665 SHA512 e98f3bbfb2055fa72c4376ebbdb64814b1bca7c66968ffea8ca4d980d432f59f6ae013c889a57a28b2961bbeca2cc80b83b573dc0cbc2550cd9f428cf9d2a625 +DIST duke3d_voxels-2.0-rc2.zip 4432485 BLAKE2B f8df7821eeae7886d7530b4e7344a78e25babd527deea903afceb6f50448659aad62a8855d8141358020649b396e23b573f1ce1e9873c6f12c907c417f1653ed SHA512 67558f078c42dba09a09eb78df1c9fe8aa391a1ccfe24c3b81a2eb1e05911cf9eef4cb706a1a69d283409bebe0111069904f94bc93f29e627692576d7cae6f14 +DIST duke3d_xxx-1.33.zip 26586453 BLAKE2B 7e3c46172d3db1b2eb49eb07f243a9ead4f260d6b1dcae9f8bd599b8e9ba3a19068032afeb4ec2cf61742b6216e3a06c24f2b7e8903f9636f9d00f4d57ada47f SHA512 4783d159610fc178e748446b7a5f9c13d90e1aca3cef34deb82e99655b7f4a254f1130e16dbcfad9013b95bc07161d5c5dccfcc552fbb7a88404b4b9cedbadbf +DIST eduke32_classic.png 5129 BLAKE2B 332ad44b7f6b4f51362387aa6870e7db54423ca5a1f0586cb5019322fb72317d8e88e0bbf46ac89b56290db7e2e4a8442179a6eb87a615fd741b5f00ce96a1c8 SHA512 b41dece8f1ddcadde3367a83f6029ffdc5805811b40380e270169684fb3b368258bd8caeb55623dadffb6fb9d72faf9a3d75907722623f4fac94a4347f8ce833 +DIST eduke32_src_20260807-10669-ec5824db8.tar.xz 19085516 BLAKE2B 33fb9517f91a46bb407e9d92969f7923ffffb6c6c0deefcf59e20080813b2af28b4e3a60dd638ae669185b58c3bff35cd558bbc1d33e18f1d5d00cb8d0bd8ec4 SHA512 b768b44c4acbd15698f863e606eb9d13d72573cab2dba20897b5d280238184c652f11aa47d3577728b6a0107b73cccef30cbe896cc27cac489bc673e821f063c +EBUILD eduke32-20260807.10669.ebuild 5869 BLAKE2B e20b3bc828a533c7d95ca3fb0f54804bc32ec5255abb312c588fcb7fa0bd11e3b8bd5a6d7f2a6c35604bb208502c955f26b2ebe41fda014b62a6a47ed9ae3592 SHA512 c3d038522d0697de3bb87879422a469e440d8b91895ae116b94cfb188b2046a90f673d4395c630825439d49b1513e670dd1d655ce095c6d922212c305c853726 +MISC metadata.xml 1621 BLAKE2B 5b044a46183a1b9c953ddef1a4909de427265f00522e9f15abc5b5b3ae62949d3f07caf9734bcf1bc4e2f60148822504efd4756c5ca629fac0b8fddddb914533 SHA512 d246cb8a8d2f33d412e9ff0dd13719e22204b538c38d73123f334faab9eba3328453aa67ec22bafa1f7665108898024fab1ddda4f2ff6178c8dd14c35bd289d7 diff --git a/games-fps/eduke32/eduke32-20260807.10669.ebuild b/games-fps/eduke32/eduke32-20260807.10669.ebuild new file mode 100644 index 0000000..a07c83e --- /dev/null +++ b/games-fps/eduke32/eduke32-20260807.10669.ebuild @@ -0,0 +1,218 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop toolchain-funcs xdg-utils + +EGIT_COMMIT="ec5824db8" +MY_BUILD="$(ver_cut 2)" +MY_DATE="$(ver_cut 1)" +MY_PV_HRP="5.5" +MY_PV_OFFENSIVE_XXX="1.33" +MY_PV_OPL="2.01" +MY_PV_PSX="1.11" +MY_PV_SC55="4.02" +MY_PV_VOXELS="2.0-rc2" + +DESCRIPTION="An open source engine port of the classic PC first person shooter Duke Nukem 3D" +HOMEPAGE="http://www.eduke32.com/" +SRC_URI=" + http://dukeworld.com/eduke32/synthesis/${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}/${PN}_src_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}.tar.xz + http://www.eduke32.com/images/eduke32_classic.png + hrp? ( http://www.duke4.org/files/nightfright/hrp/duke3d_hrp.zip -> duke3d_hrp-${MY_PV_HRP}.zip ) + offensive? ( http://www.duke4.org/files/nightfright/related/duke3d_xxx.zip -> duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip ) + opl? ( https://www.moddb.com/downloads/mirror/95750/102/ce9e8f422c6cccdb297852426e96740a -> duke3d_musopl-${MY_PV_OPL}.zip ) + psx? ( http://www.duke4.org/files/nightfright/related/duke3d_psx.zip -> duke3d_psx-${MY_PV_PSX}.zip ) + sc-55? ( http://www.duke4.org/files/nightfright/music/duke3d_music-sc55.zip -> duke3d_music-sc55-${MY_PV_SC55}.zip ) + voxels? ( https://github.com/NightFright2k19/duke3d_voxelpack/releases/download/${MY_PV_VOXELS}/duke3d_voxels.zip -> duke3d_voxels-${MY_PV_VOXELS}.zip ) +" +S="${WORKDIR}/${PN}_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}" + +LICENSE="BUILDLIC GPL-2 hrp? ( HRP ) offensive? ( HRP )" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" +IUSE="duke3d fluidsynth gtk hrp offensive opengl opl png psx sc-55 server sdk timidity tools voidsw voxels vpx xmp" +REQUIRED_USE=" + hrp? ( duke3d !voxels ) + offensive? ( duke3d ) + opl? ( duke3d !sc-55 ) + psx? ( duke3d ) + sc-55? ( duke3d !opl ) + voxels? ( !hrp ) + vpx? ( opengl ) +" + +# There are no tests, +# instead it tries to build a test game, which does not compile +RESTRICT="bindist test" + +RDEPEND=" + media-libs/flac:= + media-libs/libogg + media-libs/libsdl2[alsa,joystick,opengl?,sound,video] + media-libs/libvorbis + media-libs/sdl2-mixer[flac,fluidsynth?,timidity?,vorbis] + virtual/zlib:= + gtk? ( x11-libs/gtk+:2 ) + opengl? ( + virtual/glu + virtual/opengl + ) + png? ( media-libs/libpng:0= ) + vpx? ( media-libs/libvpx:= ) + xmp? ( media-libs/exempi:2= ) +" + +DEPEND=" + ${RDEPEND} + timidity? ( media-sound/timidity++ ) +" + +BDEPEND=" + app-arch/unzip + x86? ( dev-lang/nasm ) +" + +PDEPEND="duke3d? ( games-fps/duke3d-data )" + +PATCHES=( + "${FILESDIR}/${PN}-20200505.8904-gcc10.patch" + "${FILESDIR}/${PN}-20220204.9957-log-to-tmpdir.patch" + "${FILESDIR}/${PN}-20230926.10459-search-duke3d-path.patch" +) + +src_unpack() { + # Extract only the eduke32 archive + unpack ${PN}_src_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}.tar.xz + + # Unpack only the documentation + if use hrp; then + unzip -q "${DISTDIR}"/duke3d_hrp-${MY_PV_HRP}.zip hrp_readme.txt hrp_todo.txt || die + fi + if use offensive; then + unzip -q "${DISTDIR}"/duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip xxx_readme.txt || die + fi + if use opl; then + unzip -q "${DISTDIR}"/duke3d_musopl-${MY_PV_OPL}.zip readme.txt || die + mv readme.txt opl_readme.txt || die + fi + if use sc-55; then + unzip -q "${DISTDIR}"/duke3d_music-sc55-${MY_PV_SC55}.zip readme/music_readme.txt || die + fi + if use voxels; then + unzip -q "${DISTDIR}"/duke3d_voxels-${MY_PV_VOXELS}.zip voxelpack_readme.txt || die + fi +} + +src_compile() { + local myemakeopts=( + ALLOCACHE_AS_MALLOC=0 + AS="$(tc-getAS)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + CLANG=0 + CPLUSPLUS=1 + CUSTOMOPT="" + DEBUGANYWAY=0 + F_JUMP_TABLES="" + FORCEDEBUG=0 + HAVE_FLAC=1 + HAVE_GTK2=$(usex gtk 1 0) + HAVE_XMP=$(usex xmp 1 0) + LINKED_GTK=$(usex gtk 1 0) + LTO=1 + LUNATIC=0 + KRANDDEBUG=0 + MEMMAP=0 + MIXERTYPE=SDL + NETCODE=$(usex server 1 0) + NOASM=0 + OPTLEVEL=0 + OPTOPT="" + PACKAGE_REPOSITORY=1 + POLYMER=$(usex opengl 1 0) + PRETTY_OUTPUT=0 + PROFILER=0 + RELEASE=1 + RENDERTYPE=SDL + SDL_TARGET=2 + SIMPLE_MENU=0 + STRIP="" + STANDALONE=0 + STARTUP_WINDOW=$(usex gtk 1 0) + USE_OPENGL=$(usex opengl 1 0) + USE_LIBVPX=$(usex vpx 1 0) + USE_LIBPNG=$(usex png 1 0) + USE_LUAJIT_2_1=0 + WITHOUT_GTK=$(usex gtk 0 1) + ) + + emake "${myemakeopts[@]}" + + use tools && emake utils "${myemakeopts[@]}" + use voidsw && emake sw "${myemakeopts[@]}" +} + +src_install() { + dobin eduke32 mapster32 "${FILESDIR}"/eduke32-bin + use voidsw && dobin voidsw "${FILESDIR}"/voidsw-bin + + if use tools; then + local tools=( + arttool + bsuite + cacheinfo + generateicon + givedepth + ivfrate + kextract + kgroup + kmd2tool + makesdlkeytrans + map2stl + md2tool + mkpalette + transpal + unpackssi + wad2art + wad2map + ) + + dobin "${tools[@]}" + fi + + keepdir /usr/share/games/eduke32 + insinto /usr/share/games/eduke32 + + use hrp && doins "${DISTDIR}"/duke3d_hrp-${MY_PV_HRP}.zip + use offensive && doins "${DISTDIR}"/duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip + use opl && doins "${DISTDIR}"/duke3d_musopl-${MY_PV_OPL}.zip + use psx && doins "${DISTDIR}"/duke3d_psx-${MY_PV_PSX}.zip + use sc-55 && doins "${DISTDIR}"/duke3d_music-sc55-${MY_PV_SC55}.zip + use sdk && doins -r package/sdk + use voxels && doins "${DISTDIR}"/duke3d_voxels-${MY_PV_VOXELS}.zip + + newicon "${DISTDIR}"/eduke32_classic.png eduke32.png + + make_desktop_entry eduke32-bin EDuke32 eduke32 Game + make_desktop_entry mapster32 Mapster32 eduke32 Game + use voidsw && make_desktop_entry voidsw-bin VoidSW voidsw Game + + local DOCS=( package/sdk/samples/*.txt source/build/doc/*.txt ) + use hrp && DOCS+=( "${WORKDIR}"/hrp_readme.txt "${WORKDIR}"/hrp_todo.txt ) + use offensive && DOCS+=( "${WORKDIR}"/xxx_readme.txt ) + use opl && DOCS+=( "${WORKDIR}"/opl_readme.txt ) + use sc-55 && DOCS+=( "${WORKDIR}"/readme/music_readme.txt ) + use voxels && DOCS+=( "${WORKDIR}"/voxelpack_readme.txt ) + + einstalldocs +} + +pkg_postinst() { + xdg_icon_cache_update +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-fps/eduke32/files/eduke32-20200505.8904-gcc10.patch b/games-fps/eduke32/files/eduke32-20200505.8904-gcc10.patch new file mode 100644 index 0000000..2795e99 --- /dev/null +++ b/games-fps/eduke32/files/eduke32-20200505.8904-gcc10.patch @@ -0,0 +1,13 @@ +This patch fixes compilation with GCC-10. + +diff -dru a/source/audiolib/include/music.h b/source/audiolib/include/music.h +--- a/source/audiolib/include/music.h ++++ b/source/audiolib/include/music.h +@@ -38,6 +38,7 @@ + + #ifdef __linux__ + #include ++#include + + typedef struct + { diff --git a/games-fps/eduke32/files/eduke32-20220204.9957-log-to-tmpdir.patch b/games-fps/eduke32/files/eduke32-20220204.9957-log-to-tmpdir.patch new file mode 100644 index 0000000..5296f0a --- /dev/null +++ b/games-fps/eduke32/files/eduke32-20220204.9957-log-to-tmpdir.patch @@ -0,0 +1,11 @@ +--- a/source/sw/src/game.cpp ++++ b/source/sw/src/game.cpp +@@ -3467,7 +3467,7 @@ + } + else + #endif +- OSD_SetLogFile(APPBASENAME ".log"); ++ OSD_SetLogFile("/tmp/" APPBASENAME ".log"); + + wm_setapptitle(APPNAME); + diff --git a/games-fps/eduke32/files/eduke32-20230926.10459-search-duke3d-path.patch b/games-fps/eduke32/files/eduke32-20230926.10459-search-duke3d-path.patch new file mode 100644 index 0000000..0bb6679 --- /dev/null +++ b/games-fps/eduke32/files/eduke32-20230926.10459-search-duke3d-path.patch @@ -0,0 +1,11 @@ +--- a/source/duke3d/src/common.cpp ++++ b/source/duke3d/src/common.cpp +@@ -642,6 +642,8 @@ + + addsearchpath("/usr/share/games/jfduke3d"); + addsearchpath("/usr/local/share/games/jfduke3d"); ++ addsearchpath("/usr/share/games/duke3d"); ++ addsearchpath("/usr/share/duke3d"); + addsearchpath("/usr/share/games/" APPBASENAME); + addsearchpath("/usr/local/share/games/" APPBASENAME); + addsearchpath("/app/extensions/extra"); diff --git a/games-fps/eduke32/files/eduke32-bin b/games-fps/eduke32/files/eduke32-bin new file mode 100644 index 0000000..18e5b08 --- /dev/null +++ b/games-fps/eduke32/files/eduke32-bin @@ -0,0 +1,12 @@ +#!/bin/sh + +# Get all installed zip files +zips=$(ls /usr/share/games/eduke32/*.zip) + +# Create opts for eduke32 +for zip in ${zips[@]}; do + opts+="-g ${zip} " +done + +# Switch to /tmp, for writing there the log file and run eduke32 with set opts +cd /tmp && eduke32 ${opts} diff --git a/games-fps/eduke32/files/voidsw-bin b/games-fps/eduke32/files/voidsw-bin new file mode 100644 index 0000000..5d57220 --- /dev/null +++ b/games-fps/eduke32/files/voidsw-bin @@ -0,0 +1,12 @@ +#!/bin/sh + +# Get all installed zip files +zips=$(ls /usr/share/games/eduke32/*.zip) + +# Create opts for voidsw +for zip in ${zips[@]}; do + opts+="-g ${zip} " +done + +# Switch to /tmp, for writing there the log file and run voidsw with set opts +cd /tmp && voidsw ${opts} diff --git a/games-fps/eduke32/metadata.xml b/games-fps/eduke32/metadata.xml new file mode 100644 index 0000000..8c509fc --- /dev/null +++ b/games-fps/eduke32/metadata.xml @@ -0,0 +1,32 @@ + + + + + conikost@gentoo.org + Conrad Kostecki + + + games@gentoo.org + Gentoo Games Project + + + EDuke32 is an awesome, free homebrew game engine and source port + of the classic PC first person shooter Duke Nukem 3D - Duke3D + for short to Windows, Linux, Mac OS X, FreeBSD and several handhelds. + + + Install the Duke Nukem 3D data files, provided by games-fps/duke3d-data. + Install media-libs/sdl2-mixer with fluidsynth support. + Install the Duke Nukem 3D High Resolution Pack. + Install the Duke Nukem 3D XXX Pack. + Install the Duke Nukem 3D OPL music files. + Install the Duke Nukem 3D PSX high resolution voice files. + Install the Duke Nukem 3D Roland SC-55 music files. + Enable support for multiplayer. + Install the SDK files. + Install the support tools for mapster32. + Enable support for Shadow Warrior (Classic) through VoidSW. + Install the Duke Nukem 3D Voxels Pack. + Enable support for media-libs/exempi. + +