diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
| commit | b590c8d7572b727d565cc0b8ff660d43569845de (patch) | |
| tree | 06f7a4102ea4e845df8b66660f252920d52952f9 /games-roguelike | |
| parent | 24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff) | |
| download | baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip | |
Adding metadata
Diffstat (limited to 'games-roguelike')
106 files changed, 6137 insertions, 0 deletions
diff --git a/games-roguelike/FTL-gog/FTL-gog-1.6.12.2.35269.ebuild b/games-roguelike/FTL-gog/FTL-gog-1.6.12.2.35269.ebuild new file mode 100644 index 000000000000..fe20f5e8e0c2 --- /dev/null +++ b/games-roguelike/FTL-gog/FTL-gog-1.6.12.2.35269.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop unpacker + +DESCRIPTION="Top-down roguelike space ship simulator" +HOMEPAGE="https://www.gog.com/game/faster_than_light" +SRC_URI="ftl_advanced_edition_${PV//./_}.sh" +RESTRICT="bindist fetch mirror strip test" + +LICENSE="GOG-EULA" +SLOT="0" +KEYWORDS="-* ~amd64 ~x86" +IUSE="" + +BDEPEND="app-arch/unzip" +RDEPEND="media-libs/freetype + media-libs/libsdl[X,sound,opengl,video] + media-libs/libpng + virtual/zlib:= + virtual/opengl" + +S="${WORKDIR}/data/noarch" + +pkg_nofetch() { + einfo "Please buy and download ${SRC_URI} from" + einfo "https://www.gog.com/game/faster_than_light" + einfo "and place it in your DISTDIR directory." +} + +src_unpack() { + unpack_zip "${DISTDIR}/${A}" +} + +src_prepare() { + default + rm -r support/{xdg*,*.{sh,txt}} || die + if ! use x86; then + rm game/data/FTL.x86 || die + fi + if ! use amd64; then + rm game/data/FTL.amd64 || die + fi + + sed -i start.sh -e '/chmod/d' || die +} + +src_install() { + insinto /opt/FTL + doins -r . + fperms +x /opt/FTL/{start.sh,game/FTL,game/data/FTL} + + if use x86; then + fperms +x /opt/FTL/game/data/FTL.x86 + fi + if use amd64; then + fperms +x /opt/FTL/game/data/FTL.amd64 + fi + + make_desktop_entry "/opt/FTL/start.sh" "FTL: Advanced Edition" FTL + newicon support/icon.png FTL.png +} diff --git a/games-roguelike/FTL-gog/Manifest b/games-roguelike/FTL-gog/Manifest new file mode 100644 index 000000000000..eb8cfb556ab7 --- /dev/null +++ b/games-roguelike/FTL-gog/Manifest @@ -0,0 +1 @@ +DIST ftl_advanced_edition_1_6_12_2_35269.sh 246732960 BLAKE2B a26cafabc43b7e80d31d105fb909d867319c4bd900f7558277f17399bb4998b27c3b9f1d18f670ae1092ae872840b0181c3bea81790edd097240d1ee78abc924 SHA512 d3e061605069e874ed3e55440e5aae24ab6690977ce477728a46f7e7f487595a09ab4a56ec22c784e454286b0bfe2a3a791d78645fd7dc0feab9649cf282afd2 diff --git a/games-roguelike/FTL-gog/metadata.xml b/games-roguelike/FTL-gog/metadata.xml new file mode 100644 index 000000000000..b93adb8f4a6c --- /dev/null +++ b/games-roguelike/FTL-gog/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>kitsunenokenja@protonmail.ch</email> + <name>Rob Levitsky</name> + </maintainer> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/FTL/FTL-1.5.13-r1.ebuild b/games-roguelike/FTL/FTL-1.5.13-r1.ebuild new file mode 100644 index 000000000000..793e9524c3e1 --- /dev/null +++ b/games-roguelike/FTL/FTL-1.5.13-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit desktop wrapper + +DESCRIPTION="Faster Than Light: A spaceship simulation real-time roguelike-like game" +HOMEPAGE="https://subsetgames.com/ftl.html" +SRC_URI="FTL.${PV}.tar.gz" +S="${WORKDIR}"/${PN} + +LICENSE="all-rights-reserved Boost-1.0 free-noncomm MIT bundled-libs? ( FTL LGPL-2.1 ZLIB libpng )" +SLOT="0" +KEYWORDS="-* ~amd64 ~x86" +IUSE="bundled-libs" + +RESTRICT="fetch bindist splitdebug" + +RDEPEND=" + sys-devel/gcc[cxx] + virtual/opengl + !bundled-libs? ( + media-libs/devil[png] + media-libs/freetype:2 + media-libs/libsdl[X,sound,joystick,opengl,video] + virtual/zlib:= + ) +" + +QA_PREBUILT=" + opt/${PN}/bin/${PN} + opt/${PN}/lib/* +" + +pkg_nofetch() { + einfo "Please buy & download ${SRC_URI} from:" + einfo " ${HOMEPAGE}" + einfo "and move it to your DISTDIR directory." + einfo +} + +src_prepare() { + default + + if ! use bundled-libs ; then + # no system lib for libbass available + find data/${ARCH}/lib -type f \! -name "libbass*" -delete || die + fi +} + +src_install() { + local dir=/opt/${PN} + + insinto ${dir} + doins -r data/resources + + exeinto ${dir}/bin + doexe data/${ARCH}/bin/${PN} + exeinto ${dir}/lib + doexe data/${ARCH}/lib/*.so* + + make_wrapper ${PN} "${dir}/bin/${PN}" "${dir}" "${dir}/lib" + make_desktop_entry ${PN} "Faster Than Light" "/usr/share/pixmaps/FTL.bmp" + + newicon data/resources/exe_icon.bmp FTL.bmp + + docinto html + dodoc ${PN}_README.html +} diff --git a/games-roguelike/FTL/Manifest b/games-roguelike/FTL/Manifest new file mode 100644 index 000000000000..3090af5b6a49 --- /dev/null +++ b/games-roguelike/FTL/Manifest @@ -0,0 +1 @@ +DIST FTL.1.5.13.tar.gz 197569383 BLAKE2B 29b61c92dc242c6239e236761a89c464efc3889e1d28bbcd3466548090f4ba23450597ef9cd0a7130d0caea1d45a9cfdd87a56a65998dd4da146f1ade5d9a68d SHA512 129aa9ea13b6889520cb637bcbda0452f3dc2e8d93fb0e4d1c7938436d776b39a0a33b4e9d943e058ab5c80dcbb6e7bb874d0a78bd8a2a5a3a7e34159e1faac9 diff --git a/games-roguelike/FTL/metadata.xml b/games-roguelike/FTL/metadata.xml new file mode 100644 index 000000000000..c66b3a3c8bb5 --- /dev/null +++ b/games-roguelike/FTL/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <use> + <flag name="bundled-libs">Use bundled libraries.</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/angband/Manifest b/games-roguelike/angband/Manifest new file mode 100644 index 000000000000..530f865fa5f5 --- /dev/null +++ b/games-roguelike/angband/Manifest @@ -0,0 +1,2 @@ +DIST angband-4.2.6-man.tar.gz 137143 BLAKE2B f8896d18b4e6e7ec9e68fa6b1a24e923fde50660215f9e16877e0bae90d588af85681466fb48ada0caab12be99b6f12f01de8f4b4650dbc8db51a0e4ff2ff225 SHA512 c40c567f96e39cba52db2339397dc68a17d9dbf6c01d224040349a005e619cd7b740e98b351417f3f5028b0188040b581b1ee80ae79943725d0a953fbe718035 +DIST angband-4.2.6.tar.gz 25964779 BLAKE2B a60470cf110fee8c363fc0f55b56d3078e273f0b7096bea3a1c9750f6d450ca8eb2a686df78443fec8881700268ba7afdfec3ed59bbf5c3365f5686c4892d6ca SHA512 1682206eb4005295e5f2034921eec6cd56f1dc70be7792b5c7048d439143e2da9fb2f0c92b3703ea26ea1c80ec6223882c64deb2b91294310d594dec029a31cb diff --git a/games-roguelike/angband/angband-4.2.6.ebuild b/games-roguelike/angband/angband-4.2.6.ebuild new file mode 100644 index 000000000000..4c662bd7d2ed --- /dev/null +++ b/games-roguelike/angband/angband-4.2.6.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Generate the man page from the source tree with: +# sudo emerge -u dev-python/sphinx +# DOC_HTML_THEME=classic sphinx-build -b man docs . + +inherit autotools desktop xdg-utils + +DESCRIPTION="Roguelike dungeon exploration game based on the books of J.R.R. Tolkien" +HOMEPAGE="https://rephial.org/" +SRC_URI="https://github.com/angband/angband/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + https://dev.gentoo.org/~steils/distfiles/${P}-man.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~riscv ~x86" +IUSE="+ncurses sdl sound +X" + +REQUIRED_USE="sound? ( sdl ) + || ( X ncurses )" + +RDEPEND="X? ( + media-fonts/font-misc-misc + x11-libs/libX11 + ) + ncurses? ( sys-libs/ncurses:=[unicode(+)] ) + sdl? ( + media-libs/libsdl2[video,X] + media-libs/sdl2-image[png] + media-libs/sdl2-ttf + sound? ( + media-libs/libsdl2[sound] + media-libs/sdl2-mixer[mp3] + ) + )" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +src_prepare() { + default + + sed -i -e '/libpath/s#datarootdir#datadir#' configure.ac || die + sed -i -e "/^.SILENT/d" mk/buildsys.mk.in || die + + if use !sound ; then + sed -i -e 's/sounds//' lib/Makefile || die + fi + + # Game constant files are now system config files in Angband, but + # users will be hidden from applying updates by default + { + echo "CONFIG_PROTECT_MASK=\"/etc/${PN}/customize/\"" + echo "CONFIG_PROTECT_MASK=\"/etc/${PN}/gamedata/\"" + } > "${T}"/99${PN} || die + + eautoreconf +} + +src_configure() { + local myconf=( + --bindir="${EPREFIX}"/usr/bin + --with-private-dirs + $(use_enable X x11) + $(use_enable ncurses curses) + ) + if use sdl; then + myconf+=( + --enable-sdl2 + $(use_enable sound sdl2-mixer) + ) + fi + + econf "${myconf[@]}" +} + +src_install() { + default + + dodoc changes.txt README.md + doman "${WORKDIR}"/${PN}.1 + doenvd "${T}"/99${PN} + + if use X || use sdl; then + use X && make_desktop_entry "angband -mx11" "Angband (X11)" "${PN}" + use sdl && make_desktop_entry "angband -msdl2" "Angband (SDL2)" "${PN}" + + local s + for s in 16 32 128 256 512; do + newicon -s ${s} lib/icons/att-${s}.png "${PN}.png" + done + newicon -s scalable lib/icons/att.svg "${PN}.svg" + fi +} + +pkg_postinst() { + if use X || use sdl; then + xdg_icon_cache_update + fi +} + +pkg_postrm() { + if use X || use sdl; then + xdg_icon_cache_update + fi +} diff --git a/games-roguelike/angband/metadata.xml b/games-roguelike/angband/metadata.xml new file mode 100644 index 000000000000..d1e031208478 --- /dev/null +++ b/games-roguelike/angband/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <maintainer type="person"> + <email>steils@gentoo.org</email> + <name>Stefan Strogin</name> + </maintainer> + <use> + <flag name="sound">Enable and install sounds</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/crossfire-client/Manifest b/games-roguelike/crossfire-client/Manifest new file mode 100644 index 000000000000..745bf85123c9 --- /dev/null +++ b/games-roguelike/crossfire-client/Manifest @@ -0,0 +1 @@ +DIST crossfire-client-1.75.3.tar.gz 1052116 BLAKE2B a093cba8bc5cf6719454ce80b6f55a918ca283c80fbf063b74fe74e751d95a8f22bab3e276b10f8d657456c8081d4d973515335c99a564db978b23480537ea4a SHA512 e838b3484f9637ccc01678559c7e7a1a7e29cdb37a850fa19b62dc64e2164345cfe3279c073c7b640ccb3ead54e5e6c0f16787d69257c36534730e72b7165a3e diff --git a/games-roguelike/crossfire-client/crossfire-client-1.75.3.ebuild b/games-roguelike/crossfire-client/crossfire-client-1.75.3.ebuild new file mode 100644 index 000000000000..0be3edff018b --- /dev/null +++ b/games-roguelike/crossfire-client/crossfire-client-1.75.3.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit cmake lua-single vala xdg + +DESCRIPTION="Client for the nethack-style but more in the line of UO" +HOMEPAGE="https://crossfire.real-time.com/" +SRC_URI="https://downloads.sourceforge.net/project/crossfire/${PN}/${PV}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="lua" +REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )" + +RDEPEND=" + dev-libs/glib:2 + media-libs/libpng:= + media-libs/libsdl2 + media-libs/sdl2-mixer[vorbis,wav] + net-misc/curl + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:2 + x11-libs/pango + lua? ( ${LUA_DEPS} ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + $(vala_depend) + dev-lang/perl + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}"/${P}-sdl.patch + "${FILESDIR}"/${P}-staticlib.patch + "${FILESDIR}"/${P}-fix_overflow.patch + "${FILESDIR}"/${P}-cmake4.patch +) + +pkg_setup() { + use lua && lua-single_pkg_setup + vala_setup +} + +src_configure() { + local mycmakeargs=( + -DLUA=$(usex lua) + -DMETASERVER2=ON + # libsdl2 and sdl2-mixer are required anyway + -DSOUND=ON + -DVALA_EXECUTABLE="${VALAC}" + ) + + cmake_src_configure +} diff --git a/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-cmake4.patch b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-cmake4.patch new file mode 100644 index 000000000000..76240d33d1ad --- /dev/null +++ b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-cmake4.patch @@ -0,0 +1,11 @@ +Bump for cmake4 compat, patch from upstream +https://sourceforge.net/p/crossfire/crossfire-client/ci/672ad8a6f5f499b7ac36b1fb8938267c5ff57e3d/ + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.1) ++cmake_minimum_required(VERSION 3.5) + project(crossfire-client C) + set(VERSION 1.75.3) + diff --git a/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-fix_overflow.patch b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-fix_overflow.patch new file mode 100644 index 000000000000..08612fbcf5ed --- /dev/null +++ b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-fix_overflow.patch @@ -0,0 +1,32 @@ +Fix overflow, from upstream +https://sourceforge.net/p/crossfire/crossfire-client/ci/4c98710209e39e379fccd6aa9db96978df21fe4b/ + +> inlined from ‘cs_print_string’ at common/newsocket.c:260:15: +> /usr/include/bits/stdio2.h:100:10: +> warning: ‘__builtin___vsnprintf_chk’ specified bound 256 exceeds destination size 254 [-Wstringop-overflow=] + +--- a/common/newsocket.c ++++ b/common/newsocket.c +@@ -20,6 +20,7 @@ + + #include "client.h" + ++#include <assert.h> + #include <errno.h> + + #include "script.h" +@@ -257,12 +258,9 @@ + + SockList_Init(&sl, buf); + va_start(args, str); +- sl.len += vsnprintf((char*)sl.buf + sl.len, MAX_BUF-sl.len, str, args); ++ sl.len += vsnprintf((char*)sl.buf + sl.len, MAX_BUF-sl.len-3, str, args); // need 2 bytes for length, 1 for null termination + va_end(args); +- // Adjust sl.len to account for when we overflow the buffer. +- if (sl.len > MAX_BUF - 3) { +- sl.len = MAX_BUF - 3; +- } ++ assert(sl.len <= MAX_BUF - 3); + + script_monitor_str((char*)sl.buf); + diff --git a/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-sdl.patch b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-sdl.patch new file mode 100644 index 000000000000..02dd4cbcd8f6 --- /dev/null +++ b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-sdl.patch @@ -0,0 +1,26 @@ +Fix finding and including for SDL2 +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e346c49..0461e8a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -26,6 +26,7 @@ set(CMAKE_INSTALL_DATADIR ${CMAKE_INSTALL_DATAROOTDIR}/crossfire-client) + find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources) + find_package(PkgConfig REQUIRED) + pkg_check_modules(GTK gtk+-2.0 gio-2.0 REQUIRED) ++pkg_check_modules(SDL sdl2 REQUIRED) + find_package(PNG REQUIRED) + find_package(Perl REQUIRED) + find_package(Vala REQUIRED) +diff --git a/gtk-v2/src/CMakeLists.txt b/gtk-v2/src/CMakeLists.txt +index f9d3b30..a8ae5f2 100644 +--- a/gtk-v2/src/CMakeLists.txt ++++ b/gtk-v2/src/CMakeLists.txt +@@ -45,7 +45,7 @@ target_include_directories(crossfire-client-gtk2 + ${GTK_INCLUDE_DIRS} + ${PNG_INCLUDE_DIRS} + ${SDLMIXER_INCLUDE_DIRS} +- ${SDL_INCLUDE_DIR} ++ ${SDL_INCLUDE_DIRS} + ) + + target_link_libraries(crossfire-client-gtk2 cfclient diff --git a/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-staticlib.patch b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-staticlib.patch new file mode 100644 index 000000000000..20ddbf7c0f46 --- /dev/null +++ b/games-roguelike/crossfire-client/files/crossfire-client-1.75.3-staticlib.patch @@ -0,0 +1,15 @@ +This library is not installed otherwise. +Make it shared has no interest. +diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt +index 1110890..081a245 100644 +--- a/common/CMakeLists.txt ++++ b/common/CMakeLists.txt +@@ -13,7 +13,7 @@ add_custom_command( + # DEPENDS item-types + #) + +-add_library(cfclient ++add_library(cfclient STATIC + client.c + client.h + commands.c diff --git a/games-roguelike/crossfire-client/metadata.xml b/games-roguelike/crossfire-client/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/crossfire-client/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/dwarf-fortress/Manifest b/games-roguelike/dwarf-fortress/Manifest new file mode 100644 index 000000000000..13affb1d8f0d --- /dev/null +++ b/games-roguelike/dwarf-fortress/Manifest @@ -0,0 +1,2 @@ +DIST df_51_13_linux.tar.bz2 17651148 BLAKE2B 002dfccfa18cc7d2304d9862821b7f1cdb38c0b936fb14c4b05d6b08f4b2f27c81b33934daa0ba4c61dbcd4b36c2d835373042cd6ccdad21a6813040b2b63f5b SHA512 e198fe28e009db9e65c99e7c14c15ec3c36620c7ddd6a6ed10c6baec72f5f52b55f275668a2aad976a3085aba7ea668f3b463ae687cd1a9a6343a85cf757b2ef +DIST dwarf-fortress.png 271 BLAKE2B cbc14917de1556b25d3817298215beedc4cb01075b8454e38b2d314bdf22f8c20c4bf2332f0d731c7e4c6d6a60056361565221ce3db2c7a15fdf934bff01df54 SHA512 08bdc0e084f861b6e6a8b12e3bc93b9703f2a4cbc133d62d1c2931daf81ccd70b728853d5c05bed19a1ef477cf4ad10fce263bbab7d9cad3b60658f17063acf6 diff --git a/games-roguelike/dwarf-fortress/dwarf-fortress-51.13.ebuild b/games-roguelike/dwarf-fortress/dwarf-fortress-51.13.ebuild new file mode 100644 index 000000000000..f7a70e5c0eb1 --- /dev/null +++ b/games-roguelike/dwarf-fortress/dwarf-fortress-51.13.ebuild @@ -0,0 +1,62 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop prefix xdg + +MY_P="df_${PV//./_}" + +DESCRIPTION="Single-player fantasy game" +HOMEPAGE="https://www.bay12games.com/dwarves/" +SRC_URI="https://www.bay12games.com/dwarves/${MY_P}_linux.tar.bz2 + https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${PN}.png" +S="${WORKDIR}" + +LICENSE="free-noncomm BSD BitstreamVera" +SLOT="0" +KEYWORDS="-* ~amd64" + +RDEPEND=" + media-libs/libsdl2[joystick,opengl,video] + media-libs/sdl2-image[png] + sys-apps/bubblewrap +" + +BDEPEND=" + dev-util/patchelf +" + +DIR="/opt/${PN}" +QA_PREBUILT="${DIR#/}/*" + +src_compile() { + patchelf --set-rpath "${EPREFIX}${DIR}" dwarfort *.so* || die +} + +src_install() { + insinto "${DIR}" + exeinto "${DIR}" + + doins -r data/ + # libsdl_mixer_plugin.so seems unused. It is referenced in + # music_and_sound.cpp but not in any binaries. + doexe dwarfort libfmod_plugin.so libfmod.so.* libg_src_lib.so + + dobin "$(prefixify_ro "${FILESDIR}"/dwarf-fortress)" + + doicon -s 128 "${DISTDIR}"/${PN}.png + make_desktop_entry dwarf-fortress "Dwarf Fortress" + + dodoc *.txt +} + +pkg_postinst() { + xdg_pkg_postinst + + local pv + for pv in ${REPLACING_VERSIONS}; do + # Check https://dwarffortresswiki.org/Release_information when bumping. + ver_test ${pv%%.*} -lt 50.01 && ewarn "Save data from ${pv} is not compatible with this new major version." + done +} diff --git a/games-roguelike/dwarf-fortress/files/dwarf-fortress b/games-roguelike/dwarf-fortress/files/dwarf-fortress new file mode 100644 index 000000000000..d81d4475ea15 --- /dev/null +++ b/games-roguelike/dwarf-fortress/files/dwarf-fortress @@ -0,0 +1,9 @@ +#!/bin/sh + +set -eu + +srcdir="/opt/dwarf-fortress" +dstdir="${XDG_DATA_HOME:-${HOME}/.local/share}/dwarf-fortress" + +mkdir -p "${dstdir}/upperdir" "${dstdir}/workdir" +exec bwrap --bind / / --dev-bind /dev /dev --overlay-src "${srcdir}" --overlay "${dstdir}/upperdir" "${dstdir}/workdir" "${dstdir}/upperdir" --chdir "${dstdir}/upperdir" -- ./dwarfort "${@}" diff --git a/games-roguelike/dwarf-fortress/metadata.xml b/games-roguelike/dwarf-fortress/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/dwarf-fortress/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/hengband/Manifest b/games-roguelike/hengband/Manifest new file mode 100644 index 000000000000..e76ae5a8302d --- /dev/null +++ b/games-roguelike/hengband/Manifest @@ -0,0 +1 @@ +DIST hengband-2.2.1.tar.gz 2977622 BLAKE2B 229dbae112e733c0f8de0210fb311a0f8a0306f0b84866386fd00fedc75e72721dc5d3f79b271e90b848d01165746b8d5fa21e4ec50d4b50a824151749595095 SHA512 a84aa9a01efd787f2a459b70ac8cf6db3eb8f17d10276bc38c026276f446ada8ff6db3902ae970c2ef263187e9cd7f51b9a59c8bd6fa2d96161ba6bfe0914cab diff --git a/games-roguelike/hengband/files/hengband-2.1.2-autoconf-ncurses.patch b/games-roguelike/hengband/files/hengband-2.1.2-autoconf-ncurses.patch new file mode 100644 index 000000000000..4f695310d7b5 --- /dev/null +++ b/games-roguelike/hengband/files/hengband-2.1.2-autoconf-ncurses.patch @@ -0,0 +1,28 @@ +diff -Naur a/configure.ac b/configure.ac +--- a/configure.ac 2018-03-19 11:04:42.000000000 +0000 ++++ b/configure.ac 2022-05-31 22:18:52.959822579 +0100 +@@ -51,16 +51,14 @@ + + dnl Checks for libraries. + dnl Replace `main' with a function in -lncurses: +-AC_CHECK_LIB(ncursesw, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) AC_DEFINE(USE_NCURSES, 1, [Use ncurses]) LIBS="$LIBS -lncursesw"]) +-if test "$ac_cv_lib_ncursesw_initscr" != yes; then +- AC_CHECK_LIB(ncurses, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) AC_DEFINE(USE_NCURSES, 1, [Use ncurses]) LIBS="$LIBS -lncurses"]) +- if test "$ac_cv_lib_ncurses_initscr" != yes; then +- AC_CHECK_LIB(curses, initscr, [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) LIBS="$LIBS -lcurses"]) +- if test "$ac_cv_lib_curses_initscr" != yes; then +- AC_CHECK_LIB(termcap, tgetent, [AC_DEFINE(USE_CAP, 1, [Allow -mCAP environment]) LIBS="$LIBS -ltermcap"]) +- fi +- fi +-fi ++PKG_CHECK_MODULES( ++ [NCURSES], ++ [ncurses], ++ [AC_DEFINE(USE_GCU, 1, [Allow -mGCU environment]) ++ AC_DEFINE(USE_NCURSES, 1, [Use ncurses]) ++ [LIBS="${LIBS} ${NCURSES_LIBS}"] ++ ] ++) + + AC_CHECK_LIB(iconv, iconv_open) + diff --git a/games-roguelike/hengband/hengband-2.2.1.ebuild b/games-roguelike/hengband/hengband-2.2.1.ebuild new file mode 100644 index 000000000000..adcef5288ffb --- /dev/null +++ b/games-roguelike/hengband/hengband-2.2.1.ebuild @@ -0,0 +1,65 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="An Angband variant, with a Japanese/fantasy theme" +HOMEPAGE="https://hengband.github.io/" +SRC_URI="https://github.com/hengband/hengband/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Moria" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="X l10n_ja" + +RDEPEND=" + >=sys-libs/ncurses-5:0= + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-libs/libXt ) +" +BDEPEND=" + virtual/pkgconfig + l10n_ja? ( app-i18n/nkf ) +" + +PATCHES=( + "${FILESDIR}/${PN}-2.1.2-autoconf-ncurses.patch" +) + +src_prepare() { + # Fix syntax for chown. + sed -i '/chown/s/\./:/' lib/*/Makefile.am || die + # Don't use the games sub-dir since we're not using games.eclass any more. + sed -i 's:/games/:/:g' configure.ac || die + + default + eautoreconf +} + +src_configure() { + local myconf=( + --bindir="${EPREFIX}"/usr/bin + --with-setgid="nobody" + $(use_with X x) + ) + use l10n_ja || myconf+=( --disable-japanese ) + + econf "${myconf[@]}" +} + +src_install() { + default + dodoc lib/help/faq.txt + + if use l10n_ja ; then + dodoc readme.txt autopick.txt readme_eng.txt autopick_eng.txt + else + newdoc readme_eng.txt readme.txt + newdoc autopick_eng.txt autopick.txt + fi +} diff --git a/games-roguelike/hengband/metadata.xml b/games-roguelike/hengband/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/hengband/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/moria/Manifest b/games-roguelike/moria/Manifest new file mode 100644 index 000000000000..12acb1ca47fa --- /dev/null +++ b/games-roguelike/moria/Manifest @@ -0,0 +1 @@ +DIST moria-5.7.15.tar.gz 400424 BLAKE2B 779eaeb50eb2c0310beb1a02ebae355dadecfa29d519f8614e602172d3969d939abf9b86e0809f813b944eb72abaecb28e730ef9259a648c1dad179a6e8e4f96 SHA512 9ef9723eb120e5180640d8aa52073df638e506e0c842dac7173643bebfd84c51ec1fe6e2b1fa84ad1dcef29dc6607639e6a19ac4fd47000c6ba241691c1c720c diff --git a/games-roguelike/moria/files/moria-5.7.12-gentoo-paths.patch b/games-roguelike/moria/files/moria-5.7.12-gentoo-paths.patch new file mode 100644 index 000000000000..a5ae834413d7 --- /dev/null +++ b/games-roguelike/moria/files/moria-5.7.12-gentoo-paths.patch @@ -0,0 +1,33 @@ +diff --git a/src/config.cpp b/src/config.cpp +index 36f565b..bfe1b18 100644 +--- a/src/config.cpp ++++ b/src/config.cpp +@@ -13,17 +13,17 @@ namespace config { + // Data files used by Umoria + // NOTE: use relative paths to the executable binary. + namespace files { +- const std::string splash_screen = "data/splash.txt"; +- const std::string welcome_screen = "data/welcome.txt"; +- const std::string license = "LICENSE"; +- const std::string versions_history = "data/versions.txt"; +- const std::string help = "data/help.txt"; +- const std::string help_wizard = "data/help_wizard.txt"; +- const std::string help_roguelike = "data/rl_help.txt"; +- const std::string help_roguelike_wizard = "data/rl_help_wizard.txt"; +- const std::string death_tomb = "data/death_tomb.txt"; +- const std::string death_royal = "data/death_royal.txt"; +- const std::string scores = "scores.dat"; ++ const std::string splash_screen = "/usr/share/moria/splash.txt"; ++ const std::string welcome_screen = "/usr/share/moria/welcome.txt"; ++ const std::string license = "/usr/portage/licenses/GPL-2"; ++ const std::string versions_history = "/usr/share/moria/versions.txt"; ++ const std::string help = "/usr/share/moria/help.txt"; ++ const std::string help_wizard = "/usr/share/moria/help_wizard.txt"; ++ const std::string help_roguelike = "/usr/share/moria/rl_help.txt"; ++ const std::string help_roguelike_wizard = "/usr/share/moria/rl_help_wizard.txt"; ++ const std::string death_tomb = "/usr/share/moria/death_tomb.txt"; ++ const std::string death_royal = "/usr/share/moria/death_royal.txt"; ++ const std::string scores = "/var/lib/moria/scores.dat"; + std::string save_game = "game.sav"; + } // namespace files + diff --git a/games-roguelike/moria/files/moria.6 b/games-roguelike/moria/files/moria.6 new file mode 100644 index 000000000000..be1fc7cc353b --- /dev/null +++ b/games-roguelike/moria/files/moria.6 @@ -0,0 +1,108 @@ +.TH MORIA 6 "" +.SH NAME +moria \- a dungeon game +.SH SYNOPSIS +.B +moria +[ +.B \-o +] [ +.B \-r +] [ +.B \-s +] [ +.B \-S +] [ +.B \-n +] [ +.B \-w +] [ savefile ] +.SH DESCRIPTION +.I Moria\^ +plays a dungeon game with you. +It lets you generate a character, +lets you buy equipment, +and lets you wander in a fathomless dungeon +while finding treasure and being attacked by monsters +and fellow adventurers. +Typing +.B ? +gives you a list of commands. +.PP +The ultimate object of +.I moria +is to kill the Balrog, +which dwells on the 50th level of the +dungeon, 2,500 feet underground. +Most players never even reach the Balrog, +and those that do seldom live to tell about it. +.PP +For a more complete description of the game, +read the document +.I The Dungeons of Moria. +.PP +By default, +.I moria +will save and restore games from a file +called moria.save in your home directory. If the environment +variable MORIA_SAV is defined, then +.I moria +will use that +file name instead of the default. If MORIA_SAV is not a complete +path name, then the savefile will be created or restored from the +current directory. You can also explicitly specify a savefile +on the command line. +.PP +If you use the \fB\-n\fP option, +.I moria +will create a new game, +ignoring any savefile which may already exist. +This works best when a savefile name is specified on the +command line, as this will prevent +.I moria +from trying to overwrite the default savefile +(if it exists) when you try to save your game. +.PP +You move in various directions +by pressing the numeric keypad keys, VMS-style. +If you specify +\fB\-r\fP, you move the same way you do in \fIrogue\fP(6). +You can also specify +\fB\-o\fP to force the VMS-style command set. +These options will override defaults stored in the savefile. If these +options are given multiple times, only the last one will take effect. +.PP +If you specify +.BR \-s , +.I moria +prints all of the scores in the score file and exits. +On a multiuser system, if you specify +.BR \-S , +.I moria +prints prints only those scores belonging to you and then exits. +.PP +If you specify \fB\-w\fP, +.I moria +will start up in wizard mode. +You can resurrect a dead character by using this option when starting +the game. Resurrected characters are teleported to the town level +and given zero hitpoints. +Wizard mode is intended for debugging the game, and for experimenting +with new features. Any other use is considered cheating. +Games played with wizard mode are not scored. +.SH AUTHORS +The original version of Moria was written in VMS/Pascal by Robert +Alan Koeneke, Jimmey Wayne Todd, +Gary McAdoo, and others at the University of Oklahoma. +This version was written by Jim Wilson at the University of California, +Berkeley, and released with minor revisions by David Grabiner at Harvard +University. +.SH BUGS +.PP +A suspended game that gets a hangup signal will die without creating a +save file. + +Rerolling with a % at the class prompt not implemented. + +For a more comprehensive list, see the ERRORS file in the source +distribution. diff --git a/games-roguelike/moria/metadata.xml b/games-roguelike/moria/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/moria/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/moria/moria-5.7.15.ebuild b/games-roguelike/moria/moria-5.7.15.ebuild new file mode 100644 index 000000000000..9b36761da632 --- /dev/null +++ b/games-roguelike/moria/moria-5.7.15.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_IN_SOURCE_BUILD="yes" +inherit cmake prefix + +DESCRIPTION="The Dungeons of Moria, a single player roguelike game, also known as Umoria" +HOMEPAGE="https://umoria.org/" +SRC_URI="https://github.com/dungeons-of-moria/umoria/archive/v${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/umoria-${PV}" + +LICENSE="GPL-3+" +SLOT="0" +KEYWORDS="~amd64 ~m68k ~x86" + +RDEPEND="acct-group/gamestat + >=sys-libs/ncurses-6.0:0=" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( "${FILESDIR}/${PN}-5.7.12-gentoo-paths.patch" ) + +src_prepare() { + cmake_src_prepare + hprefixify src/config.cpp +} + +src_install() { + newbin umoria/umoria moria + + insinto /usr/share/moria + doins umoria/data/*.txt + + insinto /var/lib/moria + doins umoria/scores.dat + fowners root:gamestat /var/lib/moria/scores.dat /usr/bin/${PN} + fperms g+w /var/lib/moria/scores.dat + + doman "${FILESDIR}"/${PN}.6 + dodoc -r AUTHORS CHANGELOG.md CONTRIBUTING.md README.md historical +} + +pkg_postinst() { + elog + elog "Please add users to the 'gamestat' group, so they can run Moria:" + elog " usermod -aG gamestat <user>" + elog +} diff --git a/games-roguelike/neon-chrome/Manifest b/games-roguelike/neon-chrome/Manifest new file mode 100644 index 000000000000..0969ba2263e8 --- /dev/null +++ b/games-roguelike/neon-chrome/Manifest @@ -0,0 +1 @@ +DIST NeonChrome-Linux-1.1.12.tar 64140772 BLAKE2B cadda4c659b96b96c4b9b2a1dfc78152a89e53a2662f5e2dc70a0d4c98a813822d8c977deb0d6d6aeca0a2d2608cb04274c0ad33554ce27ab2ddf318499c9750 SHA512 f659bbe87f3b2933346bc17a4ccdcdc37ff8bb2db7a94dc5334db7109d64cd9f5a28b14845f767aaf1e103be826d3cd0fefc528a02df2079123094436e94f2cd diff --git a/games-roguelike/neon-chrome/metadata.xml b/games-roguelike/neon-chrome/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/neon-chrome/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/neon-chrome/neon-chrome-1.1.12.ebuild b/games-roguelike/neon-chrome/neon-chrome-1.1.12.ebuild new file mode 100644 index 000000000000..c0053f081358 --- /dev/null +++ b/games-roguelike/neon-chrome/neon-chrome-1.1.12.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit desktop wrapper xdg-utils + +MY_PN="NeonChrome" +DESCRIPTION="A ruthless top-down cyberpunk shooter with rogue-like elements" +HOMEPAGE="https://neonchromegame.com/" +SRC_URI="${MY_PN}-Linux-${PV}.tar" +# https://dev.gentoo.org/~chewi/distfiles/${PN}.png" +S="${WORKDIR}" + +LICENSE="all-rights-reserved" +SLOT="0" +KEYWORDS="-* ~amd64" +RESTRICT="bindist fetch splitdebug" + +RDEPEND=" + media-libs/libsdl2[opengl,video] + media-libs/openal +" + +DIR="/opt/${PN}" +QA_PREBUILT="${DIR#/}/*" + +pkg_nofetch() { + einfo "Please buy and download ${SRC_URI} from:" + einfo " https://www.humblebundle.com/store/${PN}" + einfo "and move it to your distfiles directory." +} + +src_install() { + exeinto "${DIR}" + doexe ${MY_PN} + make_wrapper ${PN} ./${MY_PN} "${DIR}" + + insinto "${DIR}" + doins *.pak *.xml + + dodoc README.txt + +# doicon -s 64 "${DISTDIR}"/${PN}.png + make_desktop_entry ${PN} "Neon Chrome" applications-games +} + +pkg_postinst() { xdg_icon_cache_update; } +pkg_postrm() { xdg_icon_cache_update; } diff --git a/games-roguelike/nethack/Manifest b/games-roguelike/nethack/Manifest new file mode 100644 index 000000000000..04bb461222e5 --- /dev/null +++ b/games-roguelike/nethack/Manifest @@ -0,0 +1,2 @@ +DIST nethack-3.6.7.tar.gz 5577415 BLAKE2B a03cfe973b0470efe052eee49c312818755e33cf5148a2c39beecf052e44dfe951c6c63a3ff58ce826fa656647ad5bbe558b4854a50fcf987d80014ef4707505 SHA512 7890d17e087f4344d30e9a908fa1f24d7c72bc714c4a6415ed59800902cc0aa6b3ce94c5d73857b0222349b96b1fdc8bf3f93b3ac1153477ad1419af7b0d3fb5 +DIST nethack-5.0.0.tar.gz 10793920 BLAKE2B c964b030c0b9a94696f1eaaaf7ff4f1d4b76ba76b327eaef69665ebfe1d5d3d43fe9510ffe9bc0ad3f30869deb386beea6e05d52e36f11fb2476801331a99b95 SHA512 a668525d9030055a4b7a504ff6a6b028d4a6d6db5b79a1f1e716d60d40346c0e6d4ac281f393a6ae8aa0453103850bafc67882a75f0518fecc6225af5efda1db diff --git a/games-roguelike/nethack/files/nethack-3.6.0-nethackrc b/games-roguelike/nethack/files/nethack-3.6.0-nethackrc new file mode 100644 index 000000000000..33c98064341f --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.0-nethackrc @@ -0,0 +1,103 @@ +## This is an example nethackrc file (courtesy of nethack.alt.org). +## +## You should edit it to suit your needs. +## Please read the Guidebook in /usr/share/doc/nethack or at www.nethack.org. +## +## Options which are enabled by default (like autoopen) can be disabled +## by prefixing them with a ! + +## If USE=X is enabled, this can be changed to x11 +#OPTIONS=windowtype:tty + +## Custom fruit and pet names +#OPTIONS=fruit:mango +#OPTIONS=dogname:Izchak +#OPTIONS=catname:Chun-Li +#OPTIONS=horsename:Marlon + +## Colored output +#OPTIONS=color + +## Automatically dig if you are wielding a digging tool and moving +## into a place that can be dug +#OPTIONS=autodig + +## Walking into a door attempts to open it +#OPTIONS=autoopen + +## Automatically pick up stuff +#OPTIONS=autopickup + +## Only use autopickup for these item types +#OPTIONS=pickup_types:$!?/"= + +## Allow saving and loading bones files. +#OPTIONS=bones + +## Show out-of-sight areas of lit rooms +#OPTIONS=dark_room + +## Use inverse for pets +#OPTIONS=hilite_pet + +## Use inverse for piles of items +#OPTIONS=hilite_pile + +## Show experience +#OPTIONS=showexp + +## Show elapsed game time (in turns) +#OPTIONS=time + +## How recalled messages (ctrl-p) are displayed. +#OPTIONS=msg_window:reversed + +## use IBMgraphics or DECgraphics +#OPTIONS=symset:DECgraphics +#OPTIONS=symset:IBMgraphics + +## If you don't like some default glyphs, these can be changed +#SYMBOLS=S_boulder:0 +#SYMBOLS=S_lava:~ +#SYMBOLS=S_pool:~ +#SYMBOLS=S_water:~ +#SYMBOLS=S_ghost:8 +#SYMBOLS=S_golem:7 + +## Sort items by name. One of "none", "loot", or "full" +#OPTIONS=sortloot:full + +## Require explicit yes for some prompts +#OPTIONS=paranoid_confirmation:Confirm quit attack pray wand Remove + +## Conducts +#OPTIONS=nudist +#OPTIONS=blind + + +## Colored menus. Regular expressions allowed. +#OPTIONS=menucolors +#MENUCOLOR=" blessed "=green +#MENUCOLOR=" holy "=green +#MENUCOLOR=" cursed "=red +#MENUCOLOR=" unholy "=red +#MENUCOLOR=" cursed .* (being worn)"=orange&underline + + +## Messagetypes + +## displacing pets. hide the message. +#MSGTYPE=hide "You swap places with your .*" + +## items on floor. don't repeat the message. +#MSGTYPE=norep "You see here a .*" +#MSGTYPE=norep "You see here an .*" + +## delayed instadeaths. always prompt for -more- +#MSGTYPE=stop "You are slowing down." +#MSGTYPE=stop "You find it hard to breathe." +#MSGTYPE=stop "You are turning a little .*" + +## moving up or down stairs +#MSGTYPE=hide "You descend .*" +#MSGTYPE=hide "You (climb|fly) (up|down) .*" diff --git a/games-roguelike/nethack/files/nethack-3.6.3-hint-tty b/games-roguelike/nethack/files/nethack-3.6.3-hint-tty new file mode 100644 index 000000000000..626db3f1f7e0 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.3-hint-tty @@ -0,0 +1,19 @@ +#-PRE + +LINK=$(CC) + +WINSRC = $(WINTTYSRC) +WINOBJ = $(WINTTYOBJ) +WINLIB = $(WINTTYLIB) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license symbols $(DATHELP) diff --git a/games-roguelike/nethack/files/nethack-3.6.3-hint-x11 b/games-roguelike/nethack/files/nethack-3.6.3-hint-x11 new file mode 100644 index 000000000000..b026cea976cc --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.3-hint-x11 @@ -0,0 +1,23 @@ +#-PRE + +LINK=$(CC) + +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm + +WINSRC = $(WINTTYSRC) $(WINX11SRC) +WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) +WINLIB = $(WINTTYLIB) $(WINX11LIB) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license symbols $(DATHELP) + +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm diff --git a/games-roguelike/nethack/files/nethack-3.6.3-recover.patch b/games-roguelike/nethack/files/nethack-3.6.3-recover.patch new file mode 100644 index 000000000000..e496f3918fed --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.3-recover.patch @@ -0,0 +1,132 @@ +From d8878eddd04cb986d57cc721d719670dc7f4d156 Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <steils@gentoo.org> +Date: Tue, 17 Dec 2019 20:20:52 +0200 +Subject: [PATCH] Rename manpage from recover to recover-nethack + +Based on the patch from https://bugs.gentoo.org/203556 + +Upstream-Status: Inappropriate [Gentoo-specific] +Signed-off-by: Stefan Strogin <steils@gentoo.org> +--- + doc/nethack.6 | 2 +- + doc/recover.6 | 28 ++++++++++++++-------------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/doc/nethack.6 b/doc/nethack.6 +index dda4c89f4..b26a2b493 100644 +--- a/doc/nethack.6 ++++ b/doc/nethack.6 +@@ -393,7 +393,7 @@ SHOPTYPE and SPLEVTYPE can be used in debugging (wizard) mode. + DEBUGFILES can be used if the program was built with 'DEBUG' enabled. + .SH "SEE ALSO" + .PP +-dgn_comp(6), lev_comp(6), recover(6) ++dgn_comp(6), lev_comp(6), recover-nethack(6) + .SH BUGS + .PP + Probably infinite. +diff --git a/doc/recover.6 b/doc/recover.6 +index 1209d31d3..eee5bbc61 100644 +--- a/doc/recover.6 ++++ b/doc/recover.6 +@@ -1,4 +1,4 @@ +-.TH RECOVER 6 "14 December 2015" NETHACK ++.TH RECOVER-NETHACK 6 "14 December 2015" NETHACK + .de ND + .ds Nd \\$3 + .. +@@ -13,9 +13,9 @@ + .NR $NHDT-Revision: 1.9 $ + .ds Na Kenneth Lorber + .SH NAME +-recover \- recover a NetHack game interrupted by disaster ++recover-nethack \- recover a NetHack game interrupted by disaster + .SH SYNOPSIS +-.B recover ++.B recover-nethack + [ + .B \-d + .I directory +@@ -33,7 +33,7 @@ so such games can be recovered at the point of the last level change. + The + .I base + options tell +-.I recover ++.I recover-nethack + which files to process. + Each base option specifies recovery of a separate game. + .PP +@@ -83,24 +83,24 @@ by a user number to avoid conflicts, + or "xlock" if the number of concurrent players is being limited. + It may be necessary to look in the playground to find the correct + base name of the interrupted game. +-.I recover ++.I recover-nethack + will transform these level files into a save file of the same name as + .I nethack + would have used. + .PP + Since +-.I recover ++.I recover-nethack + must be able to read and delete files from the playground + and create files in the save directory, + it has interesting interactions with game security. + Giving ordinary players access to +-.I recover ++.I recover-nethack + through setuid or setgid is tantamount to leaving the playground + world-writable, + with respect to both cheating and messing up other players. + For a single-user system, this of course does not change anything, + so some of the microcomputer ports install +-.I recover ++.I recover-nethack + by default. + .PP + For a multi-user system, +@@ -108,22 +108,22 @@ the game administrator may want to arrange for all .0 files in the + playground to be fed to recover when the host machine boots, + and handle game crashes individually. + If the user population is sufficiently trustworthy, +-.I recover ++.I recover-nethack + can be installed with the same permissions the + .I nethack + executable has. + In either case, +-.I recover ++.I recover-nethack + is easily compiled from the distribution utility directory. + .SH NOTES + .PP + Like + .I nethack + itself, +-.I recover ++.I recover-nethack + will overwrite existing savefiles of the same name. + Savefiles created by +-.I recover ++.I recover-nethack + are uncompressed; + they may be compressed afterwards if desired, + but even a compression-using +@@ -133,12 +133,12 @@ will find them in the uncompressed form. + nethack(6) + .SH BUGS + .PP +-.I recover ++.I recover-nethack + makes no attempt to find out if a base name specifies a game in progress. + If multiple machines share a playground, this would be impossible to + determine. + .PP +-.I recover ++.I recover-nethack + should be taught to use the nethack playground locking mechanism to + avoid conflicts. + .SH COPYRIGHT +-- +2.24.1 + diff --git a/games-roguelike/nethack/files/nethack-3.6.6-clang16.patch b/games-roguelike/nethack/files/nethack-3.6.6-clang16.patch new file mode 100644 index 000000000000..b8a67644b80e --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.6-clang16.patch @@ -0,0 +1,10 @@ +https://bugs.gentoo.org/874462 +--- a/win/tty/wintty.c ++++ b/win/tty/wintty.c +@@ -26,2 +26,6 @@ + ++#ifdef DEF_PAGER ++#include <fcntl.h> ++#endif ++ + #ifndef NO_TERMS diff --git a/games-roguelike/nethack/files/nethack-3.6.7-hurd-tparm.patch b/games-roguelike/nethack/files/nethack-3.6.7-hurd-tparm.patch new file mode 100644 index 000000000000..08766e30eaf6 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.7-hurd-tparm.patch @@ -0,0 +1,15 @@ +Not a favorable solution, since this is probably some outdated quirk to begin +with. But in life, shall we leave the unknown to itself... + +diff '--color=auto' -ru NetHack-3.6.7/win/tty/termcap.c NetHack-3.6.7-fix/win/tty/termcap.c +--- NetHack-3.6.7/win/tty/termcap.c 2026-03-29 17:22:57.252478012 -0400 ++++ NetHack-3.6.7-fix/win/tty/termcap.c 2026-03-29 18:36:03.070723420 -0400 +@@ -838,7 +838,7 @@ + + #include <curses.h> + +-#if !defined(LINUX) && !defined(__FreeBSD__) && !defined(NOTPARMDECL) ++#if !defined(__gnu_hurd__) && !defined(LINUX) && !defined(__FreeBSD__) && !defined(NOTPARMDECL) + extern char *tparm(); + #endif + diff --git a/games-roguelike/nethack/files/nethack-3.6.7-no-define-warn-unused-result.patch b/games-roguelike/nethack/files/nethack-3.6.7-no-define-warn-unused-result.patch new file mode 100644 index 000000000000..378c55687c74 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.7-no-define-warn-unused-result.patch @@ -0,0 +1,17 @@ +GCC (as of 15.2.1_p20260214) seems to fail, specifically for GNU Hurd (as seen +by the !defined (__linux__) bit), as gcc's __attribute__ expects an argument +there. It seems rather old (and quite undesirable), so for now, we will just +disable the snippet of code. + +diff '--color=auto' -ru NetHack-3.6.7/include/tradstdc.h NetHack-3.6.7-fix/include/tradstdc.h +--- NetHack-3.6.7/include/tradstdc.h 2023-02-15 16:52:57.000000000 -0500 ++++ NetHack-3.6.7-fix/include/tradstdc.h 2026-03-24 00:48:35.740547092 -0400 +@@ -429,7 +429,7 @@ + #if __GNUC__ >= 3 + #define UNUSED __attribute__((unused)) + #define NORETURN __attribute__((noreturn)) +-#if !defined(__linux__) || defined(GCC_URWARN) ++#if 0 + /* disable gcc's __attribute__((__warn_unused_result__)) since explicitly + discarding the result by casting to (void) is not accepted as a 'use' */ + #define __warn_unused_result__ /*empty*/ diff --git a/games-roguelike/nethack/files/nethack-3.6.7-path-max.patch b/games-roguelike/nethack/files/nethack-3.6.7-path-max.patch new file mode 100644 index 000000000000..3d1f6bfb618a --- /dev/null +++ b/games-roguelike/nethack/files/nethack-3.6.7-path-max.patch @@ -0,0 +1,15 @@ +diff '--color=auto' -ru NetHack-3.6.7/src/files.c NetHack-3.6.7-fix/src/files.c +--- NetHack-3.6.7/src/files.c 2023-02-15 16:52:57.000000000 -0500 ++++ NetHack-3.6.7-fix/src/files.c 2026-03-29 17:25:31.135961712 -0400 +@@ -4020,6 +4020,11 @@ + #ifndef PATH_MAX + #include <limits.h> + #endif ++ ++/* the Hurd still doesn't define PATH_MAX */ ++#ifndef PATH_MAX ++#define PATH_MAX 2048 ++#endif + #endif + + void diff --git a/games-roguelike/nethack/files/nethack-5.0.0-fix_make.patch b/games-roguelike/nethack/files/nethack-5.0.0-fix_make.patch new file mode 100644 index 000000000000..2d9d38655de6 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-fix_make.patch @@ -0,0 +1,12 @@ +minimal fix to build with --shuffle and -j1 +--- a/sys/unix/Makefile.top ++++ b/sys/unix/Makefile.top +@@ -273,7 +273,7 @@ title.img: + check-dlb: options + @if egrep -s librarian dat/options ; then $(MAKE) dlb ; else true ; fi + +-dlb: ++dlb: $(VARDATD) spec_levs + ( cd util ; $(MAKE) dlb ) + ( cd dat ; LC_ALL=C ; ../util/dlb cf nhdat $(DATDLB) ) + diff --git a/games-roguelike/nethack/files/nethack-5.0.0-fix_musl_gcc.patch b/games-roguelike/nethack/files/nethack-5.0.0-fix_musl_gcc.patch new file mode 100644 index 000000000000..9fac634a7a92 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-fix_musl_gcc.patch @@ -0,0 +1,17 @@ +patch from upstream https://github.com/NetHack/NetHack/commit/2445b97 +fix with musl/gcc +https://github.com/NetHack/NetHack/issues/1530 +https://bugs.gentoo.org/975067 +--- a/sys/unix/hints/linux.500 ++++ b/sys/unix/hints/linux.500 +@@ -197,7 +197,10 @@ ifeq "$(CCISCLANG)" "1" + # clang-specific ends + else + # gcc-specific starts ++ifndef MUSL ++# __sighandler_t does not exist in musl + LIBCFLAGS+=-DSIG_RET_TYPE=__sighandler_t ++endif + # gcc-specific ends + endif + diff --git a/games-roguelike/nethack/files/nethack-5.0.0-help.patch b/games-roguelike/nethack/files/nethack-5.0.0-help.patch new file mode 100644 index 000000000000..9e3c18600876 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-help.patch @@ -0,0 +1,12 @@ +# needed for external pager, bug #57410 +--- a/sys/unix/Makefile.top ++++ b/sys/unix/Makefile.top +@@ -100,7 +100,7 @@ SPEC_LEVS = asmodeus.lua baalz.lua bigrm-*.lua castle.lua fakewiz?.lua \ + astral.lua air.lua earth.lua fire.lua water.lua hellfill.lua tut-?.lua + QUEST_LEVS = ???-goal.lua ???-fil?.lua ???-loca.lua ???-strt.lua + +-DATNODLB = $(VARDATND) license symbols ++DATNODLB = $(VARDATND) license symbols $(DATHELP) + DATDLB = $(DATHELP) dungeon.lua tribute $(SPEC_LEVS) $(QUEST_LEVS) $(VARDATD) + DAT = $(DATNODLB) $(DATDLB) + diff --git a/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6 b/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6 new file mode 100644 index 000000000000..6b3e60e5656e --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6 @@ -0,0 +1,22 @@ +#-PRE + +LINK=$(CXX) +QTn_H = + +VARDATND = nhtiles.bmp rip.xpm nhsplash.xpm + +WINSRC = $(WINTTYSRC) $(WINQTSRC) +WINOBJ = $(WINTTYOBJ) $(WINQTOBJ) $(TARGETPFX)tile.o +WINLIB = $(WINTTYLIB) $(QTLIBS) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license symbols $(DATHELP) diff --git a/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6-x11 b/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6-x11 new file mode 100644 index 000000000000..18149d18f327 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-hint-qt6-x11 @@ -0,0 +1,24 @@ +#-PRE + +LINK=$(CXX) +QTn_H = + +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm nhtiles.bmp rip.xpm nhsplash.xpm + +WINSRC = $(WINTTYSRC) $(WINX11SRC) $(WINQTSRC) +WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(WINQTOBJ) $(TARGETPFX)tile.o +WINLIB = $(WINTTYLIB) $(WINX11LIB) $(QTLIBS) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license symbols $(DATHELP) + +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm diff --git a/games-roguelike/nethack/files/nethack-5.0.0-hint-x11 b/games-roguelike/nethack/files/nethack-5.0.0-hint-x11 new file mode 100644 index 000000000000..1130a39675cb --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-hint-x11 @@ -0,0 +1,23 @@ +#-PRE + +LINK=$(CC) + +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm rip.xpm + +WINSRC = $(WINTTYSRC) $(WINX11SRC) +WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(TARGETPFX)tile.o +WINLIB = $(WINTTYLIB) $(WINX11LIB) + +GAMEPERM = 02755 +VARDIRPERM = 0770 +VARFILEPERM = 0660 +CHOWN = true +CHGRP = true + + +#-POST + +# needed for external pager, bug #57410 +DATNODLB = $(VARDATND) license symbols $(DATHELP) + +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm diff --git a/games-roguelike/nethack/files/nethack-5.0.0-hurd-tparm.patch b/games-roguelike/nethack/files/nethack-5.0.0-hurd-tparm.patch new file mode 100644 index 000000000000..3d70db58da57 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-hurd-tparm.patch @@ -0,0 +1,13 @@ +diff --git a/win/tty/termcap.c b/win/tty/termcap.c +index b5ffcef4e..9adbacdb4 100644 +--- a/win/tty/termcap.c ++++ b/win/tty/termcap.c +@@ -890,7 +890,7 @@ cl_eos(void) /* free after Robert Viduya */ + + #include <curses.h> + +-#if !defined(LINUX) && !defined(__FreeBSD__) && !defined(NOTPARMDECL) ++#if !defined(__gnu_hurd__) && !defined(LINUX) && !defined(__FreeBSD__) && !defined(NOTPARMDECL) + extern char *tparm(); + #endif + diff --git a/games-roguelike/nethack/files/nethack-5.0.0-no-define-warn-unused-result.patch b/games-roguelike/nethack/files/nethack-5.0.0-no-define-warn-unused-result.patch new file mode 100644 index 000000000000..78d5520d4562 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-no-define-warn-unused-result.patch @@ -0,0 +1,13 @@ +diff --git a/include/tradstdc.h b/include/tradstdc.h +index a202c0c7b..d4b3f9b3f 100644 +--- a/include/tradstdc.h ++++ b/include/tradstdc.h +@@ -441,7 +441,7 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */ + /* #pragma message is available */ + #define NH_PRAGMA_MESSAGE 1 + #endif /* __GNUC__ greater than or equal to 5 */ +-#if (!defined(__linux__) && !defined(MACOS)) || defined(GCC_URWARN) ++#if 0 + /* disable gcc's __attribute__((__warn_unused_result__)) since explicitly + discarding the result by casting to (void) is not accepted as a 'use' */ + #define __warn_unused_result__ /*empty*/ diff --git a/games-roguelike/nethack/files/nethack-5.0.0-recover.patch b/games-roguelike/nethack/files/nethack-5.0.0-recover.patch new file mode 100644 index 000000000000..0742bcbe5277 --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-recover.patch @@ -0,0 +1,122 @@ +From 34f3ec2ba49f33c03471ab99376d40ef65ab4ed8 Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <stefan@steils.org> +Date: Tue, 5 May 2026 01:20:01 +0000 +Subject: [PATCH] Rename manpage from recover to recover-nethack + +--- + doc/nethack.6 | 2 +- + doc/recover.6 | 26 +++++++++++++------------- + 2 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/doc/nethack.6 b/doc/nethack.6 +index 85b99c389..fe15be123 100644 +--- a/doc/nethack.6 ++++ b/doc/nethack.6 +@@ -575,7 +575,7 @@ SHOPTYPE and SPLEVTYPE can be used in debugging (wizard) mode. + DEBUGFILES can be used if the program was built with 'DEBUG' enabled. + .SH "SEE ALSO" + .PP +-recover(6) ++recover-nethack(6) + .SH BUGS + .PP + Probably infinite. +diff --git a/doc/recover.6 b/doc/recover.6 +index 90d56c8c9..83f1eb157 100644 +--- a/doc/recover.6 ++++ b/doc/recover.6 +@@ -17,9 +17,9 @@ + .el .hy 14 + .ds Na Kenneth Lorber + .SH NAME +-recover \- recover a NetHack game interrupted by disaster ++recover-nethack \- recover a NetHack game interrupted by disaster + .SH SYNOPSIS +-.B recover ++.B recover-nethack + [ + .B \-d + .I directory +@@ -37,7 +37,7 @@ so such games can be recovered at the point of the last level change. + The + .I base + options tell +-.I recover ++.I recover-nethack + which files to process. + Each base option specifies recovery of a separate game. + .PP +@@ -89,24 +89,24 @@ by a user number to avoid conflicts, + or "xlock" if the number of concurrent players is being limited. + It may be necessary to look in the playground to find the correct + base name of the interrupted game. +-.I recover ++.I recover-nethack + will transform these level files into a save file of the same name as + .I nethack + would have used. + .PP + Since +-.I recover ++.I recover-nethack + must be able to read and delete files from the playground + and create files in the save directory, + it has interesting interactions with game security. + Giving ordinary players access to +-.I recover ++.I recover-nethack + through setuid or setgid is tantamount to leaving the playground + world-writable, + with respect to both cheating and messing up other players. + For a single-user system, this of course does not change anything, + so some of the microcomputer ports install +-.I recover ++.I recover-nethack + by default. + .PP + For a multi-user system, +@@ -114,22 +114,22 @@ the game administrator may want to arrange for all .0 files in the + playground to be fed to recover when the host machine boots, + and handle game crashes individually. + If the user population is sufficiently trustworthy, +-.I recover ++.I recover-nethack + can be installed with the same permissions the + .I nethack + executable has. + In either case, +-.I recover ++.I recover-nethack + is easily compiled from the distribution utility directory. + .SH NOTES + .PP + Like + .I nethack + itself, +-.I recover ++.I recover-nethack + will overwrite existing savefiles of the same name. + Savefiles created by +-.I recover ++.I recover-nethack + are uncompressed; + they may be compressed afterwards if desired, + but even a compression-using +@@ -139,12 +139,12 @@ will find them in the uncompressed form. + nethack(6) + .SH BUGS + .PP +-.I recover ++.I recover-nethack + makes no attempt to find out if a base name specifies a game in progress. + If multiple machines share a playground, this would be impossible to + determine. + .PP +-.I recover ++.I recover-nethack + should be taught to use the nethack playground locking mechanism to + avoid conflicts. + .SH COPYRIGHT +-- +2.54.0 + diff --git a/games-roguelike/nethack/files/nethack-5.0.0-system-lua.patch b/games-roguelike/nethack/files/nethack-5.0.0-system-lua.patch new file mode 100644 index 000000000000..39a012348ffc --- /dev/null +++ b/games-roguelike/nethack/files/nethack-5.0.0-system-lua.patch @@ -0,0 +1,82 @@ +From 82f26ab102f327c021d89d4917e60d13063dcd23 Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <stefan@steils.org> +Date: Tue, 5 May 2026 04:53:20 +0000 +Subject: [PATCH] Allow building against system Lua + +--- + sys/unix/Makefile.src | 6 ++++++ + sys/unix/Makefile.top | 17 +++++++++++++++++ + 2 files changed, 23 insertions(+) + +diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src +index 863fa096c..c5004de5a 100644 +--- a/sys/unix/Makefile.src ++++ b/sys/unix/Makefile.src +@@ -503,10 +503,16 @@ MAKEDEFS = ../util/makedefs + + # -lm required by lua + LUA_VERSION ?=5.4.8 ++SYSTEM_LUA ?=0 ++LUA_LIBS ?= + LUABASE = liblua-$(LUA_VERSION).a + LUALIB = ../lib/lua/$(LUABASE) + LUALIBS = $(LUALIB) -lm $(DLLIB) + LUAHEADERS = lib/lua-$(LUA_VERSION)/src ++ifeq ($(SYSTEM_LUA),1) ++LUALIB = ++LUALIBS = $(LUA_LIBS) ++endif + + # timestamp files to reduce `make' overhead and shorten .o dependency lists + CONFIG_H = ../src/config.h-t +diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top +index 5ecca3232..47e455a3e 100644 +--- a/sys/unix/Makefile.top ++++ b/sys/unix/Makefile.top +@@ -122,12 +122,17 @@ RECOVERBIN = recover + + # Lua + LUAHEADERS = lib/lua-$(LUA_VERSION)/src ++SYSTEM_LUA ?=0 ++LUA_HEADER_DIR ?=/usr/include + LUATESTTARGET = $(LUAHEADERS)/lua.h + LUATOP = $(LUAHEADERS) + LUAMAKEFLAGS = CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)' + LUA2NHTOP = ../../.. + LUABASELIB = liblua-$(LUA_VERSION).a + TOPLUALIB = lib/lua/$(LUABASELIB) ++ifeq ($(SYSTEM_LUA),1) ++TOPLUALIB = ++endif + + ALLDEP = $(PRECHECK) $(GAME) recover Guidebook $(VARDAT) spec_levs check-dlb + +@@ -141,6 +146,17 @@ $(GAME): lua_support + + lua_support: include/nhlua.h + @true ++ifeq ($(SYSTEM_LUA),1) ++include/nhlua.h: ++ echo '/* nhlua.h - generated by top Makefile */' > $@ ++ @echo '#include <lua.h>' >> $@ ++ @sed -e '/(lua_error)/!d' \ ++ -e '/(lua_error)/s/LUA_API/ATTRNORETURN LUA_API/1' \ ++ -e '/(lua_error)/s/;/ NORETURN;/1' < $(LUA_HEADER_DIR)/lua.h >> $@ ++ @echo '#include <lualib.h>' >> $@ ++ @echo '#include <lauxlib.h>' >> $@ ++ @echo '/*nhlua.h*/' >> $@ ++else + $(LUATOP)/liblua.a: $(LUAHEADERS)/lua.h + ( cd $(LUATOP) && make $(LUAMAKEFLAGS) a ) + $(TOPLUALIB): $(LUATOP)/liblua.a +@@ -160,6 +176,7 @@ include/nhlua.h: $(TOPLUALIB) + lib/lua-$(LUA_VERSION)/src/lua.h: + @echo "Please do 'make fetch-lua' in the top directory to obtain lua-$(LUA_VERSION)" + @false ++endif + luabin: + ( cd $(LUATOP) \ + && make $(LUAMAKEFILES) all && cd $(LUA2NHTOP) ) +-- +2.54.0 + diff --git a/games-roguelike/nethack/metadata.xml b/games-roguelike/nethack/metadata.xml new file mode 100644 index 000000000000..1fbd6bc26a1b --- /dev/null +++ b/games-roguelike/nethack/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <upstream> + <remote-id type="cpe">cpe:/a:nethack:nethack</remote-id> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/nethack/nethack-3.6.7-r1.ebuild b/games-roguelike/nethack/nethack-3.6.7-r1.ebuild new file mode 100644 index 000000000000..1822cf31cf10 --- /dev/null +++ b/games-roguelike/nethack/nethack-3.6.7-r1.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop flag-o-matic toolchain-funcs + +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="https://www.nethack.org/" +SRC_URI="https://nethack.org/download/${PV}/nethack-${PV//.}-src.tgz -> ${P}.tar.gz" +S="${WORKDIR}/NetHack-${PV}" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86" +IUSE="X" + +RDEPEND=" + acct-group/gamestat + sys-libs/ncurses:0= + X? ( + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) +" +BDEPEND=" + virtual/pkgconfig + app-alternatives/lex + app-alternatives/yacc + X? ( + x11-apps/bdftopcf + x11-apps/mkfontscale + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-3.6.3-recover.patch" + "${FILESDIR}/${PN}-3.6.6-clang16.patch" + "${FILESDIR}/${PN}-3.6.7-no-define-warn-unused-result.patch" + "${FILESDIR}/${PN}-3.6.7-path-max.patch" + "${FILESDIR}/${PN}-3.6.7-hurd-tparm.patch" +) + +src_prepare() { + default + + cp "${FILESDIR}/${PN}-3.6.3-hint-$(usex X x11 tty)" hint || die "Failed to copy hint file" + sys/unix/setup.sh hint || die "Failed to run setup.sh" +} + +src_compile() { + append-cflags -std=gnu89 # old codebase, incompatible with c2x + append-cflags -I../include -DDLB -DSECURE -DTIMED_DELAY -DVISION_TABLES -DDUMPLOG -DSCORE_ON_BOTL + append-cflags '-DCOMPRESS=\"${EPREFIX}/bin/gzip\"' '-DCOMPRESS_EXTENSION=\".gz\"' + append-cflags "-DHACKDIR=\\\"${EPREFIX}/usr/$(get_libdir)/nethack\\\"" + append-cflags "-DVAR_PLAYGROUND=\\\"${EPREFIX}/var/games/nethack\\\"" + append-cflags "-DDEF_PAGER=\\\"${PAGER}\\\"" + append-cflags -DSYSCF "-DSYSCF_FILE=\\\"${EPREFIX}/etc/nethack.sysconf\\\"" + + if use X; then + append-cflags -DX11_GRAPHICS -DUSE_XPM + + # XtErrorHandler usage seems right, but headers "may" add ((noreturn)) + # giving an incompatible type error with clang-16 (could alternatively + # use private _X_NORETURN but this may be fragile) + append-cflags -Wno-error=incompatible-pointer-types #874462 + fi + + LOCAL_MAKEOPTS=( + CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" + WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" + HACKDIR="${EPREFIX}/usr/$(get_libdir)/nethack" + ) + + emake "${LOCAL_MAKEOPTS[@]}" nethack recover spec_levs + # XXX: Lots of troff errors on Hurd, so don't build the Guidebook there for now. + ! use kernel_Hurd && emake "${LOCAL_MAKEOPTS[@]}" Guidebook + + # Upstream still has some parallel compilation bugs + emake -j1 "${LOCAL_MAKEOPTS[@]}" all +} + +src_install() { + emake \ + "${LOCAL_MAKEOPTS[@]}" \ + INSTDIR="${ED}/usr/$(get_libdir)/nethack" \ + SHELLDIR="${ED}/usr/bin" \ + VARDIR="${ED}/var/games/nethack" \ + install + + mv "${ED}/usr/$(get_libdir)/nethack/recover" "${ED}/usr/bin/recover-nethack" || die "Failed to move recover-nethack" + + doman doc/nethack.6 + newman doc/recover.6 recover-nethack.6 + dodoc doc/Guidebook.txt + + insinto /etc + newins sys/unix/sysconf nethack.sysconf + + insinto /etc/skel + newins "${FILESDIR}/${PN}-3.6.0-nethackrc" .nethackrc + + if use X ; then + cd "${S}/win/X11" || die "Failed to enter win/X11 directory" + + mkdir -p "${ED}/etc/X11/app-defaults/" || die "Failed to make app-defaults directory" + mv "${ED}/usr/$(get_libdir)/nethack/NetHack.ad" "${ED}/etc/X11/app-defaults/" || die "Failed to move NetHack.ad" + + newicon nh_icon.xpm nethack.xpm + make_desktop_entry ${PN} Nethack + + # install nethack fonts + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + insinto "/usr/$(get_libdir)/nethack/fonts" + doins *.pcf + mkfontdir "${ED}/usr/$(get_libdir)/nethack/fonts" || die "mkfontdir failed" + fi + + rm -r "${ED}/var/games/nethack" || die "Failed to clean var/games/nethack" + keepdir /var/games/nethack/save +} + +pkg_preinst() { + fowners root:gamestat /var/games/nethack /var/games/nethack/save + fperms 2770 /var/games/nethack /var/games/nethack/save + + fowners root:gamestat "/usr/$(get_libdir)/nethack/nethack" + fperms g+s "/usr/$(get_libdir)/nethack/nethack" +} + +pkg_postinst() { + cd "${EROOT}/var/games/nethack" || die "Failed to enter ${EROOT}/var/games/nethack directory" + + # Transition mechanism for <nethack-3.6.1 ebuilds. It's perfectly safe, so we'll just run it unconditionally. + chmod 2770 . save || die "Failed to chmod statedir" + + # Those files can't be created earlier because we don't want portage to wipe them during upgrades + ( umask 007 && touch logfile perm record xlogfile ) || die "Failed to create log files" + + # Instead of using a proper version header in its save files, nethack checks for incompatibilities + # by comparing the mtimes of save files and its own binary. This would require admin interaction even + # during upgrades which don't change the file format, so we'll just touch the files and warn the admin + # manually in case of compatibility issues. + ( + shopt -s nullglob + local saves=( bones* save/* ) + [[ -n "${saves[*]}" ]] && touch -c "${saves[@]}" + ) # non-fatal + + elog "A minimal default .nethackrc has been placed in /etc/skel/" + elog "The sysconf file is at /etc/nethack.sysconf" +} diff --git a/games-roguelike/nethack/nethack-3.6.7.ebuild b/games-roguelike/nethack/nethack-3.6.7.ebuild new file mode 100644 index 000000000000..08b526369699 --- /dev/null +++ b/games-roguelike/nethack/nethack-3.6.7.ebuild @@ -0,0 +1,153 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop flag-o-matic toolchain-funcs + +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="https://www.nethack.org/" +SRC_URI="https://nethack.org/download/${PV}/nethack-${PV//.}-src.tgz -> ${P}.tar.gz" +S="${WORKDIR}/NetHack-${PV}" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86" +IUSE="X" + +RDEPEND=" + acct-group/gamestat + sys-libs/ncurses:0= + X? ( + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) +" +BDEPEND=" + virtual/pkgconfig + app-alternatives/yacc + X? ( + x11-apps/bdftopcf + x11-apps/mkfontscale + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-3.6.3-recover.patch" + "${FILESDIR}/${PN}-3.6.6-clang16.patch" +) + +src_prepare() { + default + + cp "${FILESDIR}/${PN}-3.6.3-hint-$(usex X x11 tty)" hint || die "Failed to copy hint file" + sys/unix/setup.sh hint || die "Failed to run setup.sh" +} + +src_compile() { + append-cflags -std=gnu89 # old codebase, incompatible with c2x + append-cflags -I../include -DDLB -DSECURE -DTIMED_DELAY -DVISION_TABLES -DDUMPLOG -DSCORE_ON_BOTL + append-cflags '-DCOMPRESS=\"${EPREFIX}/bin/gzip\"' '-DCOMPRESS_EXTENSION=\".gz\"' + append-cflags "-DHACKDIR=\\\"${EPREFIX}/usr/$(get_libdir)/nethack\\\"" + append-cflags "-DVAR_PLAYGROUND=\\\"${EPREFIX}/var/games/nethack\\\"" + append-cflags "-DDEF_PAGER=\\\"${PAGER}\\\"" + append-cflags -DSYSCF "-DSYSCF_FILE=\\\"${EPREFIX}/etc/nethack.sysconf\\\"" + + if use X; then + append-cflags -DX11_GRAPHICS -DUSE_XPM + + # XtErrorHandler usage seems right, but headers "may" add ((noreturn)) + # giving an incompatible type error with clang-16 (could alternatively + # use private _X_NORETURN but this may be fragile) + append-cflags -Wno-error=incompatible-pointer-types #874462 + fi + + LOCAL_MAKEOPTS=( + CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" + WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" + HACKDIR="${EPREFIX}/usr/$(get_libdir)/nethack" + ) + + emake "${LOCAL_MAKEOPTS[@]}" nethack recover Guidebook spec_levs + + # Upstream still has some parallel compilation bugs + emake -j1 "${LOCAL_MAKEOPTS[@]}" all +} + +src_install() { + emake \ + "${LOCAL_MAKEOPTS[@]}" \ + INSTDIR="${ED}/usr/$(get_libdir)/nethack" \ + SHELLDIR="${ED}/usr/bin" \ + VARDIR="${ED}/var/games/nethack" \ + install + + mv "${ED}/usr/$(get_libdir)/nethack/recover" "${ED}/usr/bin/recover-nethack" || die "Failed to move recover-nethack" + + doman doc/nethack.6 + newman doc/recover.6 recover-nethack.6 + dodoc doc/Guidebook.txt + + insinto /etc + newins sys/unix/sysconf nethack.sysconf + + insinto /etc/skel + newins "${FILESDIR}/${PN}-3.6.0-nethackrc" .nethackrc + + if use X ; then + cd "${S}/win/X11" || die "Failed to enter win/X11 directory" + + mkdir -p "${ED}/etc/X11/app-defaults/" || die "Failed to make app-defaults directory" + mv "${ED}/usr/$(get_libdir)/nethack/NetHack.ad" "${ED}/etc/X11/app-defaults/" || die "Failed to move NetHack.ad" + + newicon nh_icon.xpm nethack.xpm + make_desktop_entry ${PN} Nethack + + # install nethack fonts + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + insinto "/usr/$(get_libdir)/nethack/fonts" + doins *.pcf + mkfontdir "${ED}/usr/$(get_libdir)/nethack/fonts" || die "mkfontdir failed" + fi + + rm -r "${ED}/var/games/nethack" || die "Failed to clean var/games/nethack" + keepdir /var/games/nethack/save +} + +pkg_preinst() { + fowners root:gamestat /var/games/nethack /var/games/nethack/save + fperms 2770 /var/games/nethack /var/games/nethack/save + + fowners root:gamestat "/usr/$(get_libdir)/nethack/nethack" + fperms g+s "/usr/$(get_libdir)/nethack/nethack" +} + +pkg_postinst() { + cd "${EROOT}/var/games/nethack" || die "Failed to enter ${EROOT}/var/games/nethack directory" + + # Transition mechanism for <nethack-3.6.1 ebuilds. It's perfectly safe, so we'll just run it unconditionally. + chmod 2770 . save || die "Failed to chmod statedir" + + # Those files can't be created earlier because we don't want portage to wipe them during upgrades + ( umask 007 && touch logfile perm record xlogfile ) || die "Failed to create log files" + + # Instead of using a proper version header in its save files, nethack checks for incompatibilities + # by comparing the mtimes of save files and its own binary. This would require admin interaction even + # during upgrades which don't change the file format, so we'll just touch the files and warn the admin + # manually in case of compatibility issues. + ( + shopt -s nullglob + local saves=( bones* save/* ) + [[ -n "${saves[*]}" ]] && touch -c "${saves[@]}" + ) # non-fatal + + elog "A minimal default .nethackrc has been placed in /etc/skel/" + elog "The sysconf file is at /etc/nethack.sysconf" +} diff --git a/games-roguelike/nethack/nethack-5.0.0-r1.ebuild b/games-roguelike/nethack/nethack-5.0.0-r1.ebuild new file mode 100644 index 000000000000..7cc5a7e04df8 --- /dev/null +++ b/games-roguelike/nethack/nethack-5.0.0-r1.ebuild @@ -0,0 +1,233 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit desktop flag-o-matic lua-single toolchain-funcs + +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="https://www.nethack.org/" +SRC_URI="https://nethack.org/download/${PV}/nethack-${PV//.}-src.tgz -> ${P}.tar.gz" +S="${WORKDIR}/NetHack-${PV}" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86" +IUSE="X qt6" +REQUIRED_USE=" + ${LUA_REQUIRED_USE} +" + +RDEPEND=" + ${LUA_DEPS} + acct-group/gamestat + sys-apps/util-linux + sys-libs/ncurses:0= + X? ( + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + ) + qt6? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtmultimedia:6 + ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) +" +BDEPEND=" + virtual/pkgconfig + app-alternatives/lex + app-alternatives/yacc + X? ( + x11-apps/bdftopcf + x11-apps/mkfontscale + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.0-system-lua.patch" + "${FILESDIR}/${PN}-5.0.0-recover.patch" + "${FILESDIR}/${PN}-3.6.6-clang16.patch" + "${FILESDIR}/${PN}-5.0.0-no-define-warn-unused-result.patch" + "${FILESDIR}/${PN}-3.6.7-path-max.patch" + "${FILESDIR}/${PN}-5.0.0-hurd-tparm.patch" + "${FILESDIR}/${PN}-5.0.0-fix_make.patch" + "${FILESDIR}/${PN}-5.0.0-help.patch" + + # see https://bugs.gentoo.org/975067, backport + "${FILESDIR}/${P}-fix_musl_gcc.patch" +) + +pkg_setup() { + lua-single_pkg_setup +} + +src_prepare() { + default + + pushd sys/unix >/dev/null || die + sed -i \ + -e "s:pkg-config:$(tc-getPKG_CONFIG):g" \ + -e 's:-DCOMPRESS=[^ ]*::' \ + -e 's:-DSYSCF_FILE=[^ ]*::' \ + -e '/^GIT_.* :=/d' \ + hints/linux.${PV//./} || die + + # the absence of lua_get_CFLAGS will warn if the sed does nothing + sed -i \ + -e 's:^CCFLAGS = -g:CCFLAGS = $(MYCFLAGS):' \ + -e 's:^CCXXFLAGS = -g:CCXXFLAGS = $(MYCXXFLAGS):' \ + hints/include/compiler.${PV//./} || die + + sed -i \ + -e "s/^GDBPATH=/#GDBPATH=/" \ + sysconf || die + + # use precompiled Guidebook.txt, lots of troff errors on Hurd + sed -i \ + -e '/^ALLDEP = .*/s/Guidebook//' \ + Makefile.top || die + + ./setup.sh hints/linux.${PV//./} || die "Failed to run setup.sh" + popd >/dev/null || die +} + +src_compile() { + # custom options + append-cppflags -DVISION_TABLES -DSCORE_ON_BOTL + + # fix paths + append-cppflags '-DCOMPRESS=\"${EPREFIX}/bin/gzip\"' + append-cppflags '-DDEF_PAGER=\"${PAGER}\"' + append-cppflags '-DSYSCF_FILE=\"${EPREFIX}/etc/nethack.sysconf\"' + append-cppflags '-DVAR_PLAYGROUND=\"${EPREFIX}/var/games/nethack\"' + + # -Wlto-type-mismatch, bug #973698 + use qt6 && filter-lto + + LOCAL_MAKEOPTS=( + AR="$(tc-getAR)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + MYCFLAGS="${CFLAGS} ${CPPFLAGS} $(lua_get_CFLAGS)" + LFLAGS="${LDFLAGS}" + + # musl + $(usev elibc_musl musl=1) + UUID_LIB_CHECK="1" # checked with ldconfig -p + + # use system lua + SYSTEM_LUA=1 + LUA_VERSION="$(lua_get_version)" + LUA_HEADER_DIR="${ESYSROOT}/$(lua_get_include_dir)" + LUA_LIBS="$(lua_get_LIBS)" + + # custom path + HACKDIR="${EPREFIX}/usr/$(get_libdir)/nethack" + + # graphic backends + WANT_WIN_ALL= + WANT_WIN_TTY=1 + WANT_WIN_CURSES=1 + WANT_WIN_X11=$(usev X) + WANT_WIN_QT=$(usev qt6) + WANT_WIN_QT6=$(usev qt6) + ) + + if use qt6; then + LOCAL_MAKEOPTS+=( + MYCXXFLAGS="${CXXFLAGS} ${CPPFLAGS} $(lua_get_CFLAGS)" + QTDIR="${ESYSROOT}/usr" + ) + fi + + # already in MYC{,XX)FLAGS, unset to allow CFLAGS ?= with useful flags then + unset CFLAGS CXXFLAGS + + # Upstream still has some parallel compilation bugs. + emake -j1 "${LOCAL_MAKEOPTS[@]}" all +} + +# do nothing but warnings +src_test() { :; } + +src_install() { + LOCAL_MAKEOPTS+=( + GAMEPERM=02755 + CHOWN=true + CHGRP=true + + POSTINSTALL= + INSTDIR="${ED}/usr/$(get_libdir)/nethack" + SHELLDIR="${ED}/usr/bin" + VARDIR="${ED}/var/games/nethack" + ) + + emake -j1 "${LOCAL_MAKEOPTS[@]}" install + + mv "${ED}/usr/$(get_libdir)/nethack/recover" "${ED}/usr/bin/recover-nethack" || die "Failed to move recover-nethack" + + doman doc/nethack.6 + newman doc/recover.6 recover-nethack.6 + dodoc doc/Guidebook.txt + + insinto /etc + newins sys/unix/sysconf nethack.sysconf + + if use X; then + mkdir -p "${ED}/etc/X11/app-defaults/" || die "Failed to make app-defaults directory" + mv "${ED}/usr/$(get_libdir)/nethack/NetHack.ad" "${ED}/etc/X11/app-defaults/" || die "Failed to move NetHack.ad" + + make_desktop_entry --eapi9 ${PN} -n Nethack + + pushd "${S}"/win/X11 >/dev/null || die + newicon nh_icon.xpm nethack.xpm + + # install nethack fonts + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + local fontdir="/usr/$(get_libdir)/nethack/fonts" + insinto "${fontdir}" + doins *.pcf + mkfontdir "${ED}/${fontdir}" || die "mkfontdir failed" + popd >/dev/null || die + fi + + rm -r "${ED}/var/games/nethack" || die "Failed to clean var/games/nethack" + keepdir /var/games/nethack/save +} + +pkg_preinst() { + fowners root:gamestat /var/games/nethack /var/games/nethack/save + fperms 2770 /var/games/nethack /var/games/nethack/save + + fowners root:gamestat "/usr/$(get_libdir)/nethack/nethack" + fperms g+s "/usr/$(get_libdir)/nethack/nethack" +} + +pkg_postinst() { + pushd "${EROOT}/var/games/nethack" >/dev/null || die "Failed to enter ${EROOT}/var/games/nethack directory" + + # Transition mechanism for <nethack-3.6.1 ebuilds. It's perfectly safe, so we'll just run it unconditionally. + chmod 2770 . save || die "Failed to chmod statedir" + + # Those files can't be created earlier because we don't want portage to wipe them during upgrades + ( umask 007 && touch logfile perm record xlogfile ) || die "Failed to create log files" + + # Instead of using a proper version header in its save files, nethack checks for incompatibilities + # by comparing the mtimes of save files and its own binary. This would require admin interaction even + # during upgrades which don't change the file format, so we'll just touch the files and warn the admin + # manually in case of compatibility issues. + ( + shopt -s nullglob + local saves=( bones* save/* ) + [[ -n "${saves[*]}" ]] && touch -c "${saves[@]}" + ) # non-fatal + popd >/dev/null || die +} diff --git a/games-roguelike/nethack/nethack-5.0.0.ebuild b/games-roguelike/nethack/nethack-5.0.0.ebuild new file mode 100644 index 000000000000..e4877514d6b6 --- /dev/null +++ b/games-roguelike/nethack/nethack-5.0.0.ebuild @@ -0,0 +1,201 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +inherit desktop flag-o-matic lua-single toolchain-funcs + +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="https://www.nethack.org/" +SRC_URI="https://nethack.org/download/${PV}/nethack-${PV//.}-src.tgz -> ${P}.tar.gz" +S="${WORKDIR}/NetHack-${PV}" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86" +IUSE="X qt6" +REQUIRED_USE=" + ${LUA_REQUIRED_USE} +" + +RDEPEND=" + ${LUA_DEPS} + acct-group/gamestat + sys-libs/ncurses:0= + X? ( + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + ) + qt6? ( + dev-qt/qtbase:6[gui,widgets] + dev-qt/qtmultimedia:6 + ) +" +DEPEND=" + ${RDEPEND} + X? ( x11-base/xorg-proto ) +" +BDEPEND=" + virtual/pkgconfig + app-alternatives/lex + app-alternatives/yacc + X? ( + x11-apps/bdftopcf + x11-apps/mkfontscale + ) + qt6? ( dev-qt/qtbase:6 ) +" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.0-system-lua.patch" + "${FILESDIR}/${PN}-5.0.0-recover.patch" + "${FILESDIR}/${PN}-3.6.6-clang16.patch" + "${FILESDIR}/${PN}-5.0.0-no-define-warn-unused-result.patch" + "${FILESDIR}/${PN}-3.6.7-path-max.patch" + "${FILESDIR}/${PN}-5.0.0-hurd-tparm.patch" +) + +pkg_setup() { + lua-single_pkg_setup +} + +src_prepare() { + default + + local hint="${FILESDIR}/${PN}-3.6.3-hint-tty" + use X && hint="${FILESDIR}/${PN}-5.0.0-hint-x11" + use qt6 && hint="${FILESDIR}/${PN}-5.0.0-hint-qt6" + use X && use qt6 && hint="${FILESDIR}/${PN}-5.0.0-hint-qt6-x11" + + cp "${hint}" hint || die "Failed to copy hint file" + sys/unix/setup.sh hint || die "Failed to run setup.sh" +} + +src_compile() { + local qt_cflags qt_libs + + append-cflags -std=gnu99 # NetHack 5.0 contains C99 code, but still incompatible with c2x + append-cflags -I../include -DDLB -DSECURE -DTIMED_DELAY -DVISION_TABLES -DDUMPLOG -DSCORE_ON_BOTL + append-cflags '-DCOMPRESS=\"${EPREFIX}/bin/gzip\"' '-DCOMPRESS_EXTENSION=\".gz\"' + append-cflags "-DHACKDIR=\\\"${EPREFIX}/usr/$(get_libdir)/nethack\\\"" + append-cflags "-DVAR_PLAYGROUND=\\\"${EPREFIX}/var/games/nethack\\\"" + append-cflags "-DDEF_PAGER=\\\"${PAGER}\\\"" + append-cflags -DSYSCF "-DSYSCF_FILE=\\\"${EPREFIX}/etc/nethack.sysconf\\\"" + append-cflags "$(lua_get_CFLAGS)" + + if use X; then + append-cflags -DX11_GRAPHICS -DUSE_XPM + + # XtErrorHandler usage seems right, but headers "may" add ((noreturn)) + # giving an incompatible type error with clang-16 (could alternatively + # use private _X_NORETURN but this may be fragile) + append-cflags -Wno-error=incompatible-pointer-types #874462 + fi + + use qt6 && append-cflags -DQT_GRAPHICS -DUSE_XPM -DSND_LIB_QTSOUND -DUSER_SOUNDS + + if use qt6; then + qt_cflags="$($(tc-getPKG_CONFIG) --cflags Qt6Gui Qt6Widgets Qt6Multimedia)" + qt_libs="$($(tc-getPKG_CONFIG) --libs Qt6Gui Qt6Widgets Qt6Multimedia)" + append-cxxflags -std=gnu++20 -I. -I../include $(lua_get_CFLAGS) + append-cxxflags -DQT_GRAPHICS -DUSE_XPM -DSND_LIB_QTSOUND -DUSER_SOUNDS ${qt_cflags} -fPIC + append-cxxflags "-DHACKDIR=\\\"${EPREFIX}/usr/$(get_libdir)/nethack\\\"" + use X && append-cxxflags -DX11_GRAPHICS + fi + + LOCAL_MAKEOPTS=( + CC="$(tc-getCC)" CXX="$(tc-getCXX)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" + SYSTEM_LUA=1 + LUA_VERSION="$(lua_get_version)" + LUA_HEADER_DIR="$(lua_get_include_dir)" + LUA_LIBS="$(lua_get_LIBS)" + WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" + HACKDIR="${EPREFIX}/usr/$(get_libdir)/nethack" + ) + + if use qt6; then + LOCAL_MAKEOPTS+=( + CXXFLAGS="${CXXFLAGS}" + QTLIBS="${qt_libs}" + MOCPATH="$($(tc-getPKG_CONFIG) Qt6Gui --variable=libexecdir)/moc" + QTDIR="${EPREFIX}/usr" + ) + fi + + # Upstream still has some parallel compilation bugs. + emake -j1 "${LOCAL_MAKEOPTS[@]}" nethack recover spec_levs + # XXX: Lots of troff errors on Hurd, so don't build the Guidebook there for now. + ! use kernel_Hurd && emake -j1 "${LOCAL_MAKEOPTS[@]}" Guidebook + + emake -j1 "${LOCAL_MAKEOPTS[@]}" all +} + +src_install() { + emake \ + "${LOCAL_MAKEOPTS[@]}" \ + INSTDIR="${ED}/usr/$(get_libdir)/nethack" \ + SHELLDIR="${ED}/usr/bin" \ + VARDIR="${ED}/var/games/nethack" \ + install + + mv "${ED}/usr/$(get_libdir)/nethack/recover" "${ED}/usr/bin/recover-nethack" || die "Failed to move recover-nethack" + + doman doc/nethack.6 + newman doc/recover.6 recover-nethack.6 + dodoc doc/Guidebook.txt + + insinto /etc + newins sys/unix/sysconf nethack.sysconf + + if use X ; then + cd "${S}/win/X11" || die "Failed to enter win/X11 directory" + + mkdir -p "${ED}/etc/X11/app-defaults/" || die "Failed to make app-defaults directory" + mv "${ED}/usr/$(get_libdir)/nethack/NetHack.ad" "${ED}/etc/X11/app-defaults/" || die "Failed to move NetHack.ad" + + newicon nh_icon.xpm nethack.xpm + make_desktop_entry ${PN} Nethack + + # install nethack fonts + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + insinto "/usr/$(get_libdir)/nethack/fonts" + doins *.pcf + mkfontdir "${ED}/usr/$(get_libdir)/nethack/fonts" || die "mkfontdir failed" + fi + + rm -r "${ED}/var/games/nethack" || die "Failed to clean var/games/nethack" + keepdir /var/games/nethack/save +} + +pkg_preinst() { + fowners root:gamestat /var/games/nethack /var/games/nethack/save + fperms 2770 /var/games/nethack /var/games/nethack/save + + fowners root:gamestat "/usr/$(get_libdir)/nethack/nethack" + fperms g+s "/usr/$(get_libdir)/nethack/nethack" +} + +pkg_postinst() { + cd "${EROOT}/var/games/nethack" || die "Failed to enter ${EROOT}/var/games/nethack directory" + + # Transition mechanism for <nethack-3.6.1 ebuilds. It's perfectly safe, so we'll just run it unconditionally. + chmod 2770 . save || die "Failed to chmod statedir" + + # Those files can't be created earlier because we don't want portage to wipe them during upgrades + ( umask 007 && touch logfile perm record xlogfile ) || die "Failed to create log files" + + # Instead of using a proper version header in its save files, nethack checks for incompatibilities + # by comparing the mtimes of save files and its own binary. This would require admin interaction even + # during upgrades which don't change the file format, so we'll just touch the files and warn the admin + # manually in case of compatibility issues. + ( + shopt -s nullglob + local saves=( bones* save/* ) + [[ -n "${saves[*]}" ]] && touch -c "${saves[@]}" + ) # non-fatal +} diff --git a/games-roguelike/powder/Manifest b/games-roguelike/powder/Manifest new file mode 100644 index 000000000000..9e29201cdbf2 --- /dev/null +++ b/games-roguelike/powder/Manifest @@ -0,0 +1 @@ +DIST powder118_src.tar.gz 1941412 BLAKE2B 7c798a56e7d03dde41502982ee96077e6d2ebc17dd42694b6fa567d52f52bf1d44ddb5fa7e284d65f1d09fa2047f5322a572e901662fb58612ba208f9d24f64f SHA512 df2b6abd7453e7636588d13cf02a830ce1ebb8820bdb369afb3374ffd273fe5ef58e97ec35d8463cdb3d8b67e86f2b4afe0bcff7ee8ab5e2b7805a1b6209944c diff --git a/games-roguelike/powder/files/powder-117-gcc6.patch b/games-roguelike/powder/files/powder-117-gcc6.patch new file mode 100644 index 000000000000..3a9b7f2af541 --- /dev/null +++ b/games-roguelike/powder/files/powder-117-gcc6.patch @@ -0,0 +1,20 @@ +Bug: https://bugs.gentoo.org/598928 + +--- a/source.txt ++++ b/source.txt +@@ -13400,13 +13400,13 @@ + + BRANCH MAIN + { +- symbol '\\207' ++ symbol static_cast<u8>('\\207') + welcome "%U <return> to the main dungeon." + } + + BRANCH TRIDUDE + { +- symbol '\\211' ++ symbol static_cast<u8>('\\211') + welcome "%U <enter> a cave made of metal." + } + diff --git a/games-roguelike/powder/metadata.xml b/games-roguelike/powder/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/powder/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/powder/powder-118.ebuild b/games-roguelike/powder/powder-118.ebuild new file mode 100644 index 000000000000..e1bee3e2f572 --- /dev/null +++ b/games-roguelike/powder/powder-118.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic + +MY_P=${P/-/}_src + +DESCRIPTION="A game in the genre of Rogue, Nethack, and Diablo with emphasis on tactical play" +HOMEPAGE="http://www.zincland.com/powder/" +SRC_URI="http://www.zincland.com/powder/release/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" +LICENSE="CC-Sampling-Plus-1.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +DEPEND="media-libs/libsdl[video]" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-117-gcc6.patch +) + +src_compile() { + append-cxxflags -DCHANGE_WORK_DIRECTORY + emake -C port/linux premake + emake -C port/linux powder +} + +src_install() { + dobin port/linux/${PN} + dodoc README.TXT CREDITS.TXT +} + +pkg_postinst() { + elog "While the highscore is kept, save games are never preserved between" + elog "versions. Please wait until your current character dies before upgrading." +} diff --git a/games-roguelike/scourge/Manifest b/games-roguelike/scourge/Manifest new file mode 100644 index 000000000000..6c421e3873ff --- /dev/null +++ b/games-roguelike/scourge/Manifest @@ -0,0 +1,2 @@ +DIST scourge-0.21.1.data.tar.gz 142093436 BLAKE2B 68e4cc0bfb40e9a92bc38b3db75f36df665974595ba4978cc34e077901522ece9ec5e15203ad9ab5044a61484d6850367306eb60a0da5d168a33e03130fe5774 SHA512 3701aba0f70d71aeb0e185e808e34cea62a637809a9b4c14fd19bdfbf91d36cf8dafa2a4cfddc3ee493827b40eea657fcdddc8277c57a635bc8ca8e3286376be +DIST scourge-0.21.1.src.tar.gz 8146157 BLAKE2B ed48b29a54df1b8c7444ac2985ad069f82568b1e7a5aa98e922fb4fcf10c48840c2c38361a4bf15044c71547cd41d06fdd270b379ae0827b9b5f8063b92c1d18 SHA512 e530a8f7bddc1969a02a8b9a8b272f6f60d2c4830d23d96fc671cb79a2c4097fb9c5c0c262004a8157448b601bf58f9bbff95dd6d98275a28d3d404c339ce2ad diff --git a/games-roguelike/scourge/files/scourge-0.21.1-Wc++11-narrowing.patch b/games-roguelike/scourge/files/scourge-0.21.1-Wc++11-narrowing.patch new file mode 100644 index 000000000000..a852248c9fc2 --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-Wc++11-narrowing.patch @@ -0,0 +1,18 @@ +Allow compiling with Clang +https://bugs.gentoo.org/739330 + +--- a/src/sdlhandler.cpp ++++ b/src/sdlhandler.cpp +@@ -1034,10 +1034,10 @@ + bool SDLHandler::intersects( int x, int y, int w, int h, + int x2, int y2, int w2, int h2 ) { + SDL_Rect ra = { +- x, y, w, h ++ static_cast<Sint16>(x), static_cast<Sint16>(y), static_cast<Uint16>(w), static_cast<Uint16>(h) + }; + SDL_Rect rb = { +- x2, y2, w2, h2 ++ static_cast<Sint16>(x2), static_cast<Sint16>(y2), static_cast<Uint16>(w2), static_cast<Uint16>(h2) + }; + return intersects( &ra, &rb ); + } diff --git a/games-roguelike/scourge/files/scourge-0.21.1-automake-1.13.patch b/games-roguelike/scourge/files/scourge-0.21.1-automake-1.13.patch new file mode 100644 index 000000000000..5c2bc202f384 --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-automake-1.13.patch @@ -0,0 +1,11 @@ +--- a/configure.in ++++ b/configure.in +@@ -4,7 +4,7 @@ + dnl Process this file with autoconf to produce a configure script. + AC_INIT(src/scourge.h) + AM_INIT_AUTOMAKE(scourge, "0.21") +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + + dnl internationalization macros + AC_GNU_SOURCE diff --git a/games-roguelike/scourge/files/scourge-0.21.1-freetype_pkgconfig.patch b/games-roguelike/scourge/files/scourge-0.21.1-freetype_pkgconfig.patch new file mode 100644 index 000000000000..6a5a28d1c7ab --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-freetype_pkgconfig.patch @@ -0,0 +1,32 @@ +--- a/configure.in ++++ b/configure.in +@@ -56,6 +56,7 @@ + # Set up binreloc (for a relocatable autopackage file) + AM_BINRELOC + ++PKG_PROG_PKG_CONFIG + dnl -------------------------------------------------------------------------- + dnl General options + dnl -------------------------------------------------------------------------- +@@ -413,19 +414,9 @@ + FREETYPE_LIBS=`/sw/lib/freetype2/bin/freetype-config --libs` + have_FREETYPE=yes + else +-AC_MSG_CHECKING([for freetype-config library]) +- +-AC_PATH_PROG(FREETYPE, freetype-config, no) +- +-if test "$FREETYPE" = "no"; then +- AC_MSG_ERROR(Cannot find freetype2: Is freetype-config in path?) +- have_FREETYPE=no +-else +- FREETYPE_CFLAGS=`freetype-config --cflags` +- FREETYPE_LIBS=`freetype-config --libs` +- have_FREETYPE=yes ++ PKG_CHECK_MODULES(FREETYPE, freetype2, have_FREETYPE=yes, ++ AC_MSG_ERROR(Cannot find freetype2)) + fi +-fi + + LIBS="$saved_LIBS" + TR_LIBS="$TR_LIBS $FREETYPE_LIBS" diff --git a/games-roguelike/scourge/files/scourge-0.21.1-gcc-11.patch b/games-roguelike/scourge/files/scourge-0.21.1-gcc-11.patch new file mode 100644 index 000000000000..7e5dc45199c4 --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-gcc-11.patch @@ -0,0 +1,62 @@ +https://bugs.gentoo.org/787845 +--- a/src/common/constants.h ++++ b/src/common/constants.h +@@ -970,7 +970,7 @@ struct t3DModel { + + char *getAn( const char *name ); + +-typedef unsigned char byte; ++typedef unsigned char scourge_byte; + + extern void ComputeNormals( t3DModel *pModel ); + extern void CreateTexture( GLuint textureArray[], char *strFileName, int textureID ); +--- a/src/render/Md2.h ++++ b/src/render/Md2.h +@@ -52,8 +52,8 @@ struct tMd2Header { + + /// This is used to store the vertices that are read in for the current frame. + struct tMd2AliasTriangle { +- byte vertex[3]; +- byte lightNormalIndex; ++ scourge_byte vertex[3]; ++ scourge_byte lightNormalIndex; + }; + + /// This stores the animation scale, translation and name information for a frame, plus verts. +--- a/src/render/glshape.cpp ++++ b/src/render/glshape.cpp +@@ -35,7 +35,7 @@ class Map; + // poor man's dynamic lightmaps: shaded sides + static GLuint lightmap_tex_num = 0; + static GLuint lightmap_tex_num2 = 0; +-static unsigned char data[LIGHTMAP_SIZE * LIGHTMAP_SIZE * 3]; ++static unsigned char data1[LIGHTMAP_SIZE * LIGHTMAP_SIZE * 3]; + static unsigned char data2[LIGHTMAP_SIZE * LIGHTMAP_SIZE * 3]; + + GLShape::GLShape( Texture tex[], int width, int depth, int height, char const* name, int descriptionGroup, +@@ -514,11 +514,11 @@ void GLShape::createDarkTexture( WallTheme *theme ) { + if ( !theme || !theme->getMultiTexSmooth( 0 ) ) d = Util::roll( 127.0f, 255.0f ); + + // purple +- data[i * LIGHTMAP_SIZE * 3 + j * 3 + 0] = ++ data1[i * LIGHTMAP_SIZE * 3 + j * 3 + 0] = + ( unsigned char )( d * tmp * ( theme ? theme->getMultiTexRed( 0 ) : 0.8f ) ); +- data[i * LIGHTMAP_SIZE * 3 + j * 3 + 1] = ++ data1[i * LIGHTMAP_SIZE * 3 + j * 3 + 1] = + ( unsigned char )( d * tmp * ( theme ? theme->getMultiTexGreen( 0 ) : 0.4f ) ); +- data[i * LIGHTMAP_SIZE * 3 + j * 3 + 2] = ++ data1[i * LIGHTMAP_SIZE * 3 + j * 3 + 2] = + ( unsigned char )( d * tmp * ( theme ? theme->getMultiTexBlue( 0 ) : 1.0f ) ); + + d = 255.0f; +@@ -542,8 +542,8 @@ void GLShape::createDarkTexture( WallTheme *theme ) { + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR ); + glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); +- glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, LIGHTMAP_SIZE, LIGHTMAP_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, data ); +- gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, LIGHTMAP_SIZE, LIGHTMAP_SIZE, GL_RGB, GL_UNSIGNED_BYTE, data ); ++ glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, LIGHTMAP_SIZE, LIGHTMAP_SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, data1 ); ++ gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, LIGHTMAP_SIZE, LIGHTMAP_SIZE, GL_RGB, GL_UNSIGNED_BYTE, data1 ); + + glBindTexture( GL_TEXTURE_2D, lightmap_tex_num2 ); + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); diff --git a/games-roguelike/scourge/files/scourge-0.21.1-gcc47.patch b/games-roguelike/scourge/files/scourge-0.21.1-gcc47.patch new file mode 100644 index 000000000000..c018d24ee383 --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-gcc47.patch @@ -0,0 +1,12 @@ +--- a/src/squirrel/squtils.h ++++ b/src/squirrel/squtils.h +@@ -8,6 +8,9 @@ + #define SQ_FREE(__ptr,__size) sq_vm_free(__ptr,__size); + #define SQ_REALLOC(__ptr,__oldsize,__size) sq_vm_realloc(__ptr,__oldsize,__size); + ++void *sq_vm_realloc(void *p,SQUnsignedInteger oldsize,SQUnsignedInteger size); ++void sq_vm_free(void *p,SQUnsignedInteger size); ++ + //sqvector mini vector class, supports objects by value + template<typename T> class sqvector + { diff --git a/games-roguelike/scourge/files/scourge-0.21.1-gcc6.patch b/games-roguelike/scourge/files/scourge-0.21.1-gcc6.patch new file mode 100644 index 000000000000..fed15f45ed7e --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-gcc6.patch @@ -0,0 +1,34 @@ +Bug: https://bugs.gentoo.org/610492 +Upstream ticket: https://sourceforge.net/p/scourge/patches/3/ + +--- a/src/equip.cpp ++++ b/src/equip.cpp +@@ -595,7 +595,7 @@ + } + } + if ( !found ) { +- specialSkill = false; ++ specialSkill = NULL; + canvas->setTooltip( "" ); + } + glDisable( GL_BLEND ); +--- a/src/render/map.cpp ++++ b/src/render/map.cpp +@@ -3154,7 +3154,7 @@ + if ( shape ) + return shape; + } +- return false; ++ return NULL; + } + if ( y1 == y2 ) { + if ( x1 > x2 ) SWAP( x1, x2 ); +@@ -3163,7 +3163,7 @@ + if ( shape ) + return shape; + } +- return false; ++ return NULL; + } + + diff --git a/games-roguelike/scourge/files/scourge-0.21.1-respect-AR.patch b/games-roguelike/scourge/files/scourge-0.21.1-respect-AR.patch new file mode 100644 index 000000000000..e4fea442af22 --- /dev/null +++ b/games-roguelike/scourge/files/scourge-0.21.1-respect-AR.patch @@ -0,0 +1,11 @@ +https://bugs.gentoo.org/780450 +--- a/configure.in ++++ b/configure.in +@@ -28,6 +28,7 @@ if test "x${CXXFLAGS-notset}" = "xnotset" ; then + fi + AC_PROG_CXX + ++AM_PROG_AR + dnl Check for ranlib + AC_PROG_RANLIB + diff --git a/games-roguelike/scourge/metadata.xml b/games-roguelike/scourge/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/scourge/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/scourge/scourge-0.21.1-r2.ebuild b/games-roguelike/scourge/scourge-0.21.1-r2.ebuild new file mode 100644 index 000000000000..0fb2cf5b068e --- /dev/null +++ b/games-roguelike/scourge/scourge-0.21.1-r2.ebuild @@ -0,0 +1,82 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools desktop flag-o-matic + +DESCRIPTION="A graphical rogue-like adventure game" +HOMEPAGE="https://sourceforge.net/projects/scourge/" +SRC_URI=" + https://downloads.sourceforge.net/${PN}/${P}.src.tar.gz + https://downloads.sourceforge.net/${PN}/${P}.data.tar.gz" +S="${WORKDIR}/${PN}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + media-libs/freetype:2 + media-libs/libsdl[joystick,video] + media-libs/sdl-image[png] + media-libs/sdl-mixer[vorbis] + media-libs/sdl-net + media-libs/sdl-ttf + virtual/libintl + virtual/opengl + virtual/glu" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${P}-gcc47.patch + "${FILESDIR}"/${P}-gcc6.patch + "${FILESDIR}"/${P}-automake-1.13.patch + "${FILESDIR}"/${P}-freetype_pkgconfig.patch + "${FILESDIR}"/${P}-Wc++11-narrowing.patch + "${FILESDIR}"/${PN}-0.21.1-respect-AR.patch + "${FILESDIR}"/${P}-gcc-11.patch +) + +src_prepare() { + default + + # bug #257601 + sed -i \ + -e '/AC_CHECK_HEADERS.*glext/ s:):, [#include <GL/gl.h>] ):' \ + configure.in || die + sed -i \ + -e '/snprintf/s/tmp, 256/tmp, sizeof(tmp)/' \ + src/scourgehandler.cpp || die + + mv configure.{in,ac} || die + eautoreconf +} + +src_configure() { + # -Werror=strict-aliasing + # https://bugs.gentoo.org/859211 + # Upstream sourceforge last updated in 2015, and that appears to have + # been uploading existing files. svn last updated 2011. No bug filed. ;) + # + # Do not trust it for LTO either. + append-flags -fno-strict-aliasing + filter-lto + + econf \ + --disable-rpath \ + --with-data-dir="${EPREFIX}"/usr/share/${PN} +} + +src_install() { + default + + insinto /usr/share/scourge + doins -r ../scourge_data/. + + doicon assets/scourge.png + make_desktop_entry scourge S.C.O.U.R.G.E. +} diff --git a/games-roguelike/stone-soup/Manifest b/games-roguelike/stone-soup/Manifest new file mode 100644 index 000000000000..931dd8175c37 --- /dev/null +++ b/games-roguelike/stone-soup/Manifest @@ -0,0 +1,31 @@ +DIST stone-soup-0.25.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.25.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.26.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.26.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.27.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.27.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.28.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.28.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.29.1.tar.gz 17510846 BLAKE2B 65b84797c8d8a268a3ce95de9d928e131bf6e21a1ea6ac3e72263c75f9d6288e9d95f9df6401528c06aefbda9bb642c79bf78065a65224297d33c050abf37056 SHA512 2ca49c4cd228526d47e4ad7e9556b6c26566595458423cd8e6b762298f229eb7ba273770ae1e12939ba66574a5b55e44812d06c4809d4327ed9bfd738501af04 +DIST stone-soup-0.29.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.29.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.30.1.tar.gz 21502317 BLAKE2B 5fc39bb83c5d6b96a00d55c4bf18ee0e6051dd8513ee397dda7b2a55c730c31a4582860c2077e78fed3fda24b5e51c52ae037c603c7dec3376deb93402e2aa72 SHA512 069c9f9d8115f4865daa277a3621534839e3bd9bd5811ae2a9d1486d25abd66461b8e49f6ef4a4265b261be73c6c66c118c49b97c3f6e05087abde7064bf0d5f +DIST stone-soup-0.30.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.30.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.31.0.tar.gz 22432560 BLAKE2B f3e696915458674e3f7ce2a47d19c740c53de897ab40227efc9c127be42dcfbb4b3ee93258ea4094fb1a18aceb37c4341aac86c1174c42ab1ce300bca3281fc6 SHA512 ad354d57a39d07ad8a1a89a7fd20b33a4cd88fcbf1f2276cdefe8890c223272b7a34969a373f6b1f39cff72499c1e2773592ce368e887307908acd59ca00ca4b +DIST stone-soup-0.31.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.31.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.32.1.tar.gz 24409881 BLAKE2B 29bf6b36c858a7426b6dfc8d75aebe575540cf89a934ce9150134c68e55b23e1e2a2da0cc53db3c3f59eff2810ed68b5577d709e8515d2e51bf46206b8c0710b SHA512 0640b3af9be104963f635b61b71ee59d18f478d3266e6c3319db13584c92b19e6bea3789e6d90bb520424b6995efba4d9e8a56216a0d1a1158a2c01f00799894 +DIST stone-soup-0.32.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.32.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.33.1.tar.gz 27261387 BLAKE2B eb43e3b3f82563b9ab0dc103dd7cc315dbbeca382ac751d59fffc3d50b6755b9da57424444e3772a73a7b1b2ceece4cbc44da030c526e63d30944085e20daaf0 SHA512 ae4476a912477be01e38c3f1294db3bb508a4cf15cdf79a4d5a40581c819893001a39efd0f987781de6f6bc023ae2952f5115a62517f0cb47a76726d2115f957 +DIST stone-soup-0.33.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.33.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone-soup-0.34.0.tar.gz 30036616 BLAKE2B f12554f57cc060b1891e749ca41650f366b2735760b66ad661539b8e25ab4c771b2eb96dfe715d999fa0505e3f01e8388f03f478c73ad4d915d2d53990cb9518 SHA512 371faf1aa67bdfcc27ca97264783a450508bda00f5eff80fa7623147dd2c226894223dcda9812bf71a63555a09354118ee475597446daa32f423a379afab3213 +DIST stone-soup-0.34.1.tar.gz 30041776 BLAKE2B 8b056ceb8e23766b567437effa43696ddacf811e5bd7143588618b124a0c50f02733bc44034c2393794bdc3d69abacd50bc0427cf367a26a2e61b826e210b7fa SHA512 81b51af147487db9735d2f8e7f956c691bd0fcaba04bdc05aff3078fea7a093f0c25b2f39683dbb76b024b37b56cf52d1de20de012e8c344c2690f21f7fc6a6c +DIST stone-soup-0.34.png 1351 BLAKE2B cc31abd59701aa6f0fb0bdcd90630ceebf7b3cb8b60f0e2817f8800c5bc4b3a5b9fef63c90a97b6248f306e7e3da0df3863a2195b8771863344d2443e7956d59 SHA512 4695204c8b936f7aac1ba15b02a6115a955fb2c56aa9a0b968ff007bc9a1a59b608110d60cce5625a9b92cd2c869bbea7e15433a53c1a338622809477a5846bc +DIST stone-soup-0.34.svg 68546 BLAKE2B 7c66286c9e8a3516e8483b3edb628a59fce29d8d248c3fd5b06e308782bbc651814f21ec958b30c36074a2576ced4bb10f291b5236da6f6e865ce1d7cefdf96d SHA512 dca555271faf704eb8ecdf5ee8a763df42cdeba94e9c163608c438cfc73c6fbf53416547050cad57f477ade191842e701785b65b7a9f18e27ceab05df8f2f75f +DIST stone_soup-0.25.1.zip 95477710 BLAKE2B 0b38a6c7cb7c4c87acccb861b5aae665cd2b6b532f6e86d4a9fa594e0d363b86b4af1ea47275f7fd026ea69d85215be8cdf46258bd620e738b4850e5eceed006 SHA512 fa7e8be582c5c6615531884ade4c113542c06c164b6912095c1adf2f16a31cb2ecce057d74132b11b1b1c256a77433037948d4e54819739b7e222cc896cd5220 +DIST stone_soup-0.26.1.zip 95585384 BLAKE2B 6d1cb99fc44e918cad4144608f259e67a26df444b93c8501590ff209e8856fd08c514d4c8c78cb0848d8e6127cdf4360b47d21ced5d919da982421934b46102d SHA512 637f1a07e9f35e18eda10c17dc28449364c56aee8456497e30552acb55608a9433cff8b64af877049c21cb2a42eb2fcad28f58a7e57a1d835eb8c252e580205d +DIST stone_soup-0.27.1.zip 96934633 BLAKE2B 8821920a4faad9474f08a34ae3c272cb9dcd3ddeb9029e033c22eb8e6650ef20bbc30e0c0ca1556d08c1b7b898fdbdd3667a3ac9a8527e0c322cd8c78ab391bb SHA512 845dafc9895ada3712903de63b95cca9eeb66160e4a04ba21193d916447fca8e7248b851f1e938f43b8d3937cf4f4437443bdc4fe2da893fe3918fed4e0b5204 +DIST stone_soup-0.28.0.zip 98876317 BLAKE2B 10f554ea004778b6a2537caa2f994c8e7b12e190ddaaf55f9fb5d2499b91ee6d15d63a9d50167528c1625058bc262c5cba8ba08235fc377e83329ba5f80158be SHA512 7316175ccf6efea376a8a9157f9c4d1786f59c544af39e5ff28a9fcd889e23ef58c2a3680df46807c84b2ce0feb347e661c929195e8affb3d3f98c24832b17e0 diff --git a/games-roguelike/stone-soup/files/avoid-musl-execinfo.patch b/games-roguelike/stone-soup/files/avoid-musl-execinfo.patch new file mode 100644 index 000000000000..923f940c3f57 --- /dev/null +++ b/games-roguelike/stone-soup/files/avoid-musl-execinfo.patch @@ -0,0 +1,12 @@ +--- a/crash.cc 2023-08-14 02:39:46.638062516 +0000 ++++ b/crash.cc 2023-08-14 02:41:28.020698537 +0000 +@@ -27,7 +27,8 @@ + #endif + + #ifdef BACKTRACE_SUPPORTED +-#if defined(TARGET_CPU_MIPS) || \ ++#if !defined(__GLIBC__) || \ ++ defined(TARGET_CPU_MIPS) || \ + defined(TARGET_OS_FREEBSD) || \ + defined(TARGET_OS_NETBSD) || \ + defined(TARGET_OS_OPENBSD) || \ diff --git a/games-roguelike/stone-soup/files/make-advpng.patch b/games-roguelike/stone-soup/files/make-advpng.patch new file mode 100644 index 000000000000..683e478212b4 --- /dev/null +++ b/games-roguelike/stone-soup/files/make-advpng.patch @@ -0,0 +1,21 @@ +--- a/Makefile 2022-05-22 11:54:15.819138403 -0500 ++++ b/Makefile 2022-05-22 11:56:24.475145274 -0500 +@@ -1080,8 +1080,7 @@ + + ifdef TILES_ANY + ifndef NO_OPTIMIZE +- PNGCRUSH = pngcrush -q -m 113 +- PNGCRUSH_LABEL = PNGCRUSH ++ USE_ADVPNG = y + endif + endif + +@@ -1727,7 +1726,8 @@ + $(TILEDEFSRCS) $(TILEDEFHDRS) $(ORIGTILEFILES): build-rltiles + + dat/tiles/%.png: $(RLTILES)/%.png + $(QUIET_PNGCRUSH)$(PNGCRUSH) $< $@ ++ $(QUIET_ADVPNG)$(ADVPNG) $@ + + clean-rltiles: + $(RM) $(DESTTILEFILES) diff --git a/games-roguelike/stone-soup/files/make-v3.patch b/games-roguelike/stone-soup/files/make-v3.patch new file mode 100644 index 000000000000..19a308336cc3 --- /dev/null +++ b/games-roguelike/stone-soup/files/make-v3.patch @@ -0,0 +1,114 @@ +--- a/Makefile 2024-05-27 19:43:53.339479403 -0500 ++++ b/Makefile 2024-05-27 19:45:08.737841222 -0500 +@@ -206,7 +206,7 @@ + uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') + uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') + +-HOST := $(shell sh -c 'cc -dumpmachine || echo unknown') ++HOST := + ARCH := $(HOST) + + ifdef CROSSHOST +@@ -509,15 +509,7 @@ + GCC_VER_SUFFIX:=-$(GCC_VER) + endif + +-# Attempt to use a full compiler name, to make +-# distcc builds work nicely. +-LMACH := $(shell gcc -dumpmachine)- +-ifeq ($(LMACH),-) + LMACH := +-endif +-ifeq ($(shell which $(LMACH)gcc$(GCC_VER_SUFFIX) > /dev/null 2> /dev/null && echo "Yes"),) +-LMACH := +-endif + + ifneq ($(FORCE_CC),) + GCC := $(FORCE_CC) +@@ -862,10 +854,11 @@ + COVERAGE=YesPlease + # current catch2 doesn't support c++11 + STDFLAG = -std=c++14 ++ # tests require this ++ LIBS += -lgcov + endif + + ifdef HURRY +- NO_OPTIMIZE=YesPlease + endif + + ifdef COVERAGE +@@ -1017,7 +1010,7 @@ + INSTALL_FONTS += "$(PROPORTIONAL_FONT)" + endif + else +- SYS_PROPORTIONAL_FONT = $(shell util/find_font "$(OUR_PROPORTIONAL_FONT)") ++ SYS_PROPORTIONAL_FONT = /usr/share/fonts/dejavu/DejaVuSans.ttf + ifneq (,$(SYS_PROPORTIONAL_FONT)) + ifeq (,$(COPY_FONTS)) + DEFINES += -DPROPORTIONAL_FONT=\"$(SYS_PROPORTIONAL_FONT)\" +@@ -1037,7 +1030,7 @@ + INSTALL_FONTS += "$(MONOSPACED_FONT)" + endif + else +- SYS_MONOSPACED_FONT = $(shell util/find_font "$(OUR_MONOSPACED_FONT)") ++ SYS_MONOSPACED_FONT = /usr/share/fonts/dejavu/DejaVuSansMono.ttf + ifneq (,$(SYS_MONOSPACED_FONT)) + ifeq (,$(COPY_FONTS)) + DEFINES += -DMONOSPACED_FONT=\"$(SYS_MONOSPACED_FONT)\" +@@ -1177,14 +1170,8 @@ + + ifdef TILES_ANY + ifndef NO_OPTIMIZE +- ifneq (,$(shell which advpng)) +- USE_ADVPNG = y +- else +- ifneq (,$(shell which pngcrush)) + PNGCRUSH = pngcrush -q -m 113 + PNGCRUSH_LABEL = PNGCRUSH +- endif +- endif + endif + endif + +@@ -1280,9 +1267,8 @@ + + LANGUAGES = $(filter-out en, $(notdir $(wildcard dat/descript/??))) + SRC_PKG_BASE := stone_soup +-SRC_VERSION := $(shell git describe $(MERGE_BASE) 2>/dev/null || cat util/release_ver) ++SRC_VERSION := $(shell cat util/release_ver) + MAJOR_VERSION = $(shell echo "$(SRC_VERSION)"|$(SED) -r 's/-.*//;s/^([^.]+\.[^.]+).*/\1/') +-RECENT_TAG := $(shell git describe --abbrev=0 $(MERGE_BASE)) + WINARCH := $(shell $(GXX) -dumpmachine | grep -q x64_64 && echo win64 || echo win32) + + export SRC_VERSION +@@ -1645,13 +1631,13 @@ + $(COPY) dat/tiles/stone_soup_icon-512x512.png $(prefix_fp)/share/icons/hicolor/512x512/apps/$(XDG_NAME).png + $(COPY) dat/tiles/stone_soup_icon.svg $(prefix_fp)/share/icons/hicolor/scalable/apps/$(XDG_NAME).svg + +-install: all install-data +- [ -d $(prefix_fp)/$(bin_prefix) ] || mkdir -p $(prefix_fp)/$(bin_prefix) +- $(COPY) $(GAME) $(prefix_fp)/$(bin_prefix)/ +- $(STRIP) $(prefix_fp)/$(bin_prefix)/$(GAME) ++install: install-data ++ [ -d $(prefix_fp)$(bin_prefix) ] || mkdir -p $(prefix_fp)$(bin_prefix) ++ $(COPY) $(GAME) $(prefix_fp)$(bin_prefix)/ ++ $(STRIP) $(prefix_fp)$(bin_prefix)/$(GAME) + ifeq ($(USE_DGAMELAUNCH),) +- $(CHOWN) $(INSTALL_UGRP) $(prefix_fp)/$(bin_prefix)/$(GAME) || true +- $(CHMOD) $(MCHMOD) $(prefix_fp)/$(bin_prefix)/$(GAME) || true ++ $(CHOWN) $(INSTALL_UGRP) $(prefix_fp)$(bin_prefix)/$(GAME) || true ++ $(CHMOD) $(MCHMOD) $(prefix_fp)$(bin_prefix)/$(GAME) || true + endif + + clean: clean-rltiles clean-webserver clean-android clean-monster clean-catch2 \ +@@ -1905,9 +1891,6 @@ + + dat/tiles/%.png: $(RLTILES)/%.png + $(QUIET_PNGCRUSH)$(PNGCRUSH) $< $@ +-ifdef USE_ADVPNG +- $(QUIET_ADVPNG)$(ADVPNG) $@ +-endif + + clean-rltiles: + $(RM) $(DESTTILEFILES) diff --git a/games-roguelike/stone-soup/files/make.patch b/games-roguelike/stone-soup/files/make.patch new file mode 100644 index 000000000000..e0d086520099 --- /dev/null +++ b/games-roguelike/stone-soup/files/make.patch @@ -0,0 +1,119 @@ +--- a/Makefile 2022-05-22 11:25:51.733047395 -0500 ++++ b/Makefile 2022-05-22 11:42:54.240102003 -0500 +@@ -186,7 +186,7 @@ + uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') + uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') + +-HOST := $(shell sh -c 'cc -dumpmachine || echo unknown') ++HOST := + ARCH := $(HOST) + + ifdef CROSSHOST +@@ -451,15 +451,7 @@ + GCC_VER_SUFFIX:=-$(GCC_VER) + endif + +-# Attempt to use a full compiler name, to make +-# distcc builds work nicely. +-LMACH := $(shell gcc -dumpmachine)- +-ifeq ($(LMACH),-) + LMACH := +-endif +-ifeq ($(shell which $(LMACH)gcc$(GCC_VER_SUFFIX) > /dev/null 2> /dev/null && echo "Yes"),) +-LMACH := +-endif + + ifneq ($(FORCE_CC),) + GCC := $(FORCE_CC) +@@ -759,7 +751,6 @@ + FULLDEBUG=YesPlease + DEBUG=YesPlease + NO_OPTIMIZE=YesPlease +- COVERAGE=YesPlease + endif + + # Debug-Lite +@@ -767,7 +758,6 @@ + ifneq (,$(filter debug-lite,$(MAKECMDGOALS))) + DEBUG=YesPlease + NO_OPTIMIZE=YesPlease +- COVERAGE=YesPlease + endif + + # Profile +@@ -775,12 +765,10 @@ + ifneq (,$(filter profile,$(MAKECMDGOALS))) + FULLDEBUG=YesPlease + DEBUG=YesPlease +- COVERAGE=YesPlease + endif + + # Unit tests + ifneq (,$(filter catch2-tests,$(MAKECMDGOALS))) +- COVERAGE=YesPlease + endif + + ifdef HURRY +@@ -932,7 +920,7 @@ + INSTALL_FONTS += "$(PROPORTIONAL_FONT)" + endif + else +- SYS_PROPORTIONAL_FONT = $(shell util/find_font "$(OUR_PROPORTIONAL_FONT)") ++ SYS_PROPORTIONAL_FONT = /usr/share/fonts/dejavu/DejaVuSans.ttf + ifneq (,$(SYS_PROPORTIONAL_FONT)) + ifeq (,$(COPY_FONTS)) + DEFINES += -DPROPORTIONAL_FONT=\"$(SYS_PROPORTIONAL_FONT)\" +@@ -952,7 +940,7 @@ + INSTALL_FONTS += "$(MONOSPACED_FONT)" + endif + else +- SYS_MONOSPACED_FONT = $(shell util/find_font "$(OUR_MONOSPACED_FONT)") ++ SYS_MONOSPACED_FONT = /usr/share/fonts/dejavu/DejaVuSansMono.ttf + ifneq (,$(SYS_MONOSPACED_FONT)) + ifeq (,$(COPY_FONTS)) + DEFINES += -DMONOSPACED_FONT=\"$(SYS_MONOSPACED_FONT)\" +@@ -1092,14 +1080,8 @@ + + ifdef TILES_ANY + ifndef NO_OPTIMIZE +- ifneq (,$(shell which advpng)) +- USE_ADVPNG = y +- else +- ifneq (,$(shell which pngcrush)) + PNGCRUSH = pngcrush -q -m 113 + PNGCRUSH_LABEL = PNGCRUSH +- endif +- endif + endif + endif + +@@ -1181,9 +1163,8 @@ + + LANGUAGES = $(filter-out en, $(notdir $(wildcard dat/descript/??))) + SRC_PKG_BASE := stone_soup +-SRC_VERSION := $(shell git describe --tags $(MERGE_BASE) 2>/dev/null || cat util/release_ver) ++SRC_VERSION := $(shell cat util/release_ver) + MAJOR_VERSION = $(shell echo "$(SRC_VERSION)"|$(SED) -r 's/-.*//;s/^([^.]+\.[^.]+).*/\1/') +-RECENT_TAG := $(shell git describe --abbrev=0 --tags $(MERGE_BASE)) + WINARCH := $(shell $(GXX) -dumpmachine | grep -q x64_64 && echo win64 || echo win32) + + export SRC_VERSION +@@ -1511,7 +1492,7 @@ + endif + endif + +-install: all install-data ++install: install-data + [ -d $(prefix_fp)/$(bin_prefix) ] || mkdir -p $(prefix_fp)/$(bin_prefix) + $(COPY) $(GAME) $(prefix_fp)/$(bin_prefix)/ + $(STRIP) $(prefix_fp)/$(bin_prefix)/$(GAME) +@@ -1747,9 +1728,6 @@ + + dat/tiles/%.png: $(RLTILES)/%.png + $(QUIET_PNGCRUSH)$(PNGCRUSH) $< $@ +-ifdef USE_ADVPNG +- $(QUIET_ADVPNG)$(ADVPNG) $@ +-endif + + clean-rltiles: + $(RM) $(DESTTILEFILES) diff --git a/games-roguelike/stone-soup/files/rltiles-make.patch b/games-roguelike/stone-soup/files/rltiles-make.patch new file mode 100644 index 000000000000..9a43932c5989 --- /dev/null +++ b/games-roguelike/stone-soup/files/rltiles-make.patch @@ -0,0 +1,58 @@ +--- a/rltiles/Makefile 2021-08-02 14:03:40.106930544 -0500 ++++ b/rltiles/Makefile 2021-08-02 14:03:51.145931133 -0500 +@@ -1,7 +1,7 @@ + uname_S := $(shell uname -s) + + ifneq (,$(findstring MINGW,$(uname_S))) +-LDFLAGS += -lmingw32 ++LIBS += -lmingw32 + endif + + # Note: since generation of tiles is done on the host, we don't care about +@@ -29,7 +29,7 @@ + endif + + CFLAGS += $(PNG_INCLUDE) +- LDFLAGS += $(PNG_LIB) ++ LIBS += $(PNG_LIB) + + CFLAGS += -DUSE_TILE + endif +@@ -39,26 +39,15 @@ + endif + + ifneq (,$(findstring MINGW,$(uname_S))) +-LDFLAGS += -lgdi32 -lwinmm -lole32 -loleaut32 -limm32 -lshell32 -lversion -luuid ++LIBS += -lgdi32 -lwinmm -lole32 -loleaut32 -limm32 -lshell32 -lversion -luuid + endif + ifeq ($(uname_S),Darwin) +-LDFLAGS += -framework AppKit -framework AudioUnit -framework CoreAudio -framework ForceFeedback -framework Carbon -framework IOKit -framework OpenGL ++LIBS += -framework AppKit -framework AudioUnit -framework CoreAudio -framework ForceFeedback -framework Carbon -framework IOKit -framework OpenGL + endif + ifeq ($(uname_S),Linux) +-LDFLAGS += -ldl -lpthread ++LIBS += -ldl -lpthread + endif + +-# Attempt to use a full compiler name, to make +-# distcc builds work nicely. +-LMACH := $(shell gcc -dumpmachine)- +-ifeq ($(LMACH),-) +-LMACH := +-endif +-ifeq ($(shell which $(LMACH)gcc > /dev/null 2> /dev/null && echo "Yes"),) +-LMACH := +-endif +-HOSTCXX ?= $(LMACH)g++ +- + DELETE = rm -f + + TOOLDIR := tool +@@ -134,6 +123,6 @@ + $(QUIET_HOSTCXX)$(HOSTCXX) $(CFLAGS) -MMD -c $< -o $@ + + $(TILEGEN): $(OBJECTS) +- $(QUIET_HOSTLINK)$(HOSTCXX) $(CFLAGS) $(OBJECTS) -o $@ $(LDFLAGS) ++ $(QUIET_HOSTLINK)$(HOSTCXX) $(CFLAGS) $(OBJECTS) -o $@ $(LDFLAGS) $(LIBS) + + .PHONY: all clean distclean diff --git a/games-roguelike/stone-soup/metadata.xml b/games-roguelike/stone-soup/metadata.xml new file mode 100644 index 000000000000..8011d76ca8c6 --- /dev/null +++ b/games-roguelike/stone-soup/metadata.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>stasibear@gentoo.org</email> + <name>Erik Mackdanz</name> + </maintainer> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <upstream> + <doc lang="en">https://crawl.develz.org</doc> + <bugs-to>https://crawl.develz.org/mantis</bugs-to> + <remote-id type="cpe">cpe:/a:dungeon_crawl_stone_soup_project:dungeon_crawl_stone_soup</remote-id> + </upstream> + <use> + <flag name="advpng">Use alternate png optimization. + </flag> + <flag name="ncurses">Enable for console (uses ncurses) based build. + (can be enabled on top of tiles) + </flag> + <flag name="tiles">Enable for graphical (tiled) build. + (can be enabled on top of ncurses) + </flag> + </use> + <longdescription lang="en"> + Dungeon Crawl Stone Soup is a free roguelike game of exploration + and treasure-hunting in dungeons filled with dangerous and + unfriendly monsters in a quest for the mystifyingly fabulous Orb + of Zot. + + Dungeon Crawl Stone Soup has diverse species and many different + character backgrounds to choose from, deep tactical game-play, + sophisticated magic, religion and skill systems, and a grand + variety of monsters to fight and run from, making each game + unique and challenging. + + Dungeon Crawl Stone Soup can be played offline, or online on a + public telnet/ssh server thanks to the good folks at + crawl.akrasiac.org (CAO) and crawl.develz.org (CDO). These public + servers allow you to meet other players’ ghosts, watch other people + playing, and, in general, have a blast! + </longdescription> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/stone-soup/stone-soup-0.25.1-r104.ebuild b/games-roguelike/stone-soup/stone-soup-0.25.1-r104.ebuild new file mode 100644 index 000000000000..1d0890f2ce34 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.25.1-r104.ebuild @@ -0,0 +1,220 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +MY_P="stone_soup-${PV}" +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.25" +SRC_URI=" + https://github.com/crawl/crawl/releases/download/${PV}/${PN/-/_}-${PV}.zip + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.26.1-r3.ebuild b/games-roguelike/stone-soup/stone-soup-0.26.1-r3.ebuild new file mode 100644 index 000000000000..df5fed18a7f0 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.26.1-r3.ebuild @@ -0,0 +1,224 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +MY_P="stone_soup-${PV}" +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.26" +SRC_URI=" + https://github.com/crawl/crawl/releases/download/${PV}/${PN/-/_}-${PV}.zip + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "Since version 0.25.1-r101, crawl is a slotted install" + elog "that supports having multiple versions installed. The" + elog "binary has the slot appended, e.g. 'crawl-"${SLOT}"'." + elog + elog "The local save directory also has the slot appended." + elog "If you have saved games from 0.25 but before 0.25.1-r101" + elog "you can 'mv ~/.crawl ~/.crawl-0.25' to fix it" + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.27.1-r2.ebuild b/games-roguelike/stone-soup/stone-soup-0.27.1-r2.ebuild new file mode 100644 index 000000000000..dc2adc894930 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.27.1-r2.ebuild @@ -0,0 +1,220 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +MY_P="stone_soup-${PV}" +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.27" +SRC_URI=" + https://github.com/crawl/crawl/releases/download/${PV}/${PN/-/_}-${PV}.zip + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.28.0-r2.ebuild b/games-roguelike/stone-soup/stone-soup-0.28.0-r2.ebuild new file mode 100644 index 000000000000..175b04aed902 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.28.0-r2.ebuild @@ -0,0 +1,239 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.28" +if [ -z "${COMMITSHA}" ]; then + # This is a proper release + SRC_URI=" + https://github.com/crawl/crawl/releases/download/${PV}/${PN/-/_}-${PV}.zip + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg + " + MY_P="stone_soup-${PV}" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.29.1-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.29.1-r1.ebuild new file mode 100644 index 000000000000..3fdc20292784 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.29.1-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.29" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.30.1-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.30.1-r1.ebuild new file mode 100644 index 000000000000..192d93ff1e96 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.30.1-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.30" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.31.0-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.31.0-r1.ebuild new file mode 100644 index 000000000000..83a81b74c2b6 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.31.0-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.31" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.32.1-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.32.1-r1.ebuild new file mode 100644 index 000000000000..212ccb8846fb --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.32.1-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.32" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.33.1-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.33.1-r1.ebuild new file mode 100644 index 000000000000..49c90c2402d3 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.33.1-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.33" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.34.0-r1.ebuild b/games-roguelike/stone-soup/stone-soup-0.34.0-r1.ebuild new file mode 100644 index 000000000000..5d50ba8004a7 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.34.0-r1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.34" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="amd64 x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/stone-soup/stone-soup-0.34.1.ebuild b/games-roguelike/stone-soup/stone-soup-0.34.1.ebuild new file mode 100644 index 000000000000..86f2f5ee6d59 --- /dev/null +++ b/games-roguelike/stone-soup/stone-soup-0.34.1.ebuild @@ -0,0 +1,241 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# There are many slots for this package because people in the community +# like to play old versions. Every release includes content changes +# where species/spells/monsters are added or removed. The public +# servers (e.g. http://crawl.akrasiac.org:8080) usually support playing +# versions back to 0.11. + +# It's not necessary for Gentoo to support these old version but it's +# something nice that our distro can offer that others don't. If the +# maintenance burden becomes excessive than we can revisit that +# position. + +EAPI=8 + +LUA_COMPAT=( lua5-{1,3,4} luajit ) +LUA_REQ_USE="deprecated" +PYTHON_COMPAT=( python3_{13..14} ) +VIRTUALX_REQUIRED="manual" +inherit desktop python-any-r1 lua-single xdg-utils toolchain-funcs + +DESCRIPTION="Role-playing roguelike game of exploration and treasure-hunting in dungeons" +HOMEPAGE="https://crawl.develz.org" + +# Leave empty string if not a _pre release +COMMITSHA="" +if [ -z "${COMMITSHA}" ]; then + # This is a tagged release + # Note the archive URI and file layout changed upstream between 0.29.0 and 0.29.1 + SRC_URI=" + https://github.com/crawl/crawl/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${PV}/crawl-ref" +else + # This is a _pre release + SRC_URI=" + https://github.com/crawl/crawl/archive/${COMMITSHA}.tar.gz -> ${P}.tar.gz + " + MY_P="crawl-${COMMITSHA}/crawl-ref" +fi +# MY_SLOT to satisfy pkgcheck variable order checking +MY_SLOT="0.34" +SRC_URI=" + ${SRC_URI} + https://dev.gentoo.org/~stasibear/distfiles/${PN}.png -> ${PN}-${MY_SLOT}.png + https://dev.gentoo.org/~stasibear/distfiles/${PN}.svg -> ${PN}-${MY_SLOT}.svg +" + +S=${WORKDIR}/${MY_P}/source +# 3-clause BSD: mt19937ar.cc, MSVC/stdint.h +# 2-clause BSD: all contributions by Steve Noonan and Jesse Luehrs +# Public Domain|CC0: most of tiles +# MIT: json.cc/json.h, some .js files in webserver/static/scripts/contrib/ +LICENSE="GPL-2 BSD BSD-2 public-domain CC0-1.0 MIT" +SLOT="${MY_SLOT}" +KEYWORDS="~amd64 ~x86" +IUSE="advpng debug ncurses sound test +tiles" +RESTRICT="!test? ( test )" +REQUIRED_USE="${LUA_REQUIRED_USE}" + +RDEPEND=" + ${LUA_DEPS} + dev-db/sqlite:3 + virtual/zlib:= + !ncurses? ( !tiles? ( sys-libs/ncurses:0 ) ) + ncurses? ( sys-libs/ncurses:0 ) + tiles? ( + media-fonts/dejavu + media-libs/freetype:2 + media-libs/libpng:0 + sound? ( + media-libs/libsdl2[X,opengl,sound,video] + media-libs/sdl2-mixer + ) + !sound? ( media-libs/libsdl2[X,opengl,video] ) + media-libs/sdl2-image[png] + virtual/glu + virtual/opengl + )" +DEPEND="${RDEPEND} + test? ( <dev-cpp/catch-3.0.0:0 ) + tiles? ( + sys-libs/ncurses:0 + ) + " +BDEPEND=" + app-arch/unzip + dev-lang/perl + ${PYTHON_DEPS} + $(python_gen_any_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]') + app-alternatives/lex + tiles? ( + advpng? ( + app-arch/advancecomp + ) + !advpng? ( + media-gfx/pngcrush + ) + ) + virtual/pkgconfig + app-alternatives/yacc + " + +PATCHES=( + "${FILESDIR}"/make-v3.patch + "${FILESDIR}"/rltiles-make.patch + "${FILESDIR}"/avoid-musl-execinfo.patch +) + +python_check_deps() { + python_has_version "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_setup() { + python-any-r1_pkg_setup + + if use !ncurses && use !tiles ; then + ewarn "Neither ncurses nor tiles frontend" + ewarn "selected, choosing ncurses only." + ewarn "Note that you can also enable both." + fi + + if use sound && use !tiles ; then + ewarn "Sound support is only available with tiles." + fi +} + +src_prepare() { + default + python_fix_shebang "${S}/util/species-gen.py" + + if use advpng; then + eapply "${FILESDIR}/make-advpng.patch" + fi + + sed -i -e "s/GAME = crawl$/GAME = crawl-${SLOT}/" "${S}/Makefile" \ + || die "Couldn't append slot to executable name" + + # File required for a _pre build + if ! [ -f "${S}/util/release_ver" ]; then + echo "${SLOT}" >"${S}/util/release_ver" || die "Couldn't write release_ver" + fi + + # Replace bundled catch2 package with system implementation + # https://bugs.gentoo.org/829950 + if use test; then + cp /usr/include/catch2/catch.hpp "${S}/catch2-tests" || die "Couldn't substitute system catch2" + fi +} + +src_compile() { + + # Insurance that we're not using bundled lib sources + rm -rf contrib || die "Couldn't delete contrib directory" + + myemakeargs=( + $(usex debug "FULLDEBUG=y DEBUG=y" "") + BUILD_LUA= + AR="$(tc-getAR)" + CFOPTIMIZE='' + # -DLUA_COMPAT_OPENLIB=1 is required to enable the + # deprecated (in 5.1) luaL_openlib API (#869671) + CFOTHERS="${CXXFLAGS} -DLUA_COMPAT_OPENLIB=1" + CONTRIBS= + DATADIR="/usr/share/${PN}-${SLOT}" + FORCE_CC="$(tc-getCC)" + FORCE_CXX="$(tc-getCXX)" + LDFLAGS="${LDFLAGS}" + MAKEOPTS="${MAKEOPTS}" + PKGCONFIG="$(tc-getPKG_CONFIG)" + RANLIB="$(tc-getRANLIB)" + SAVEDIR="~/.crawl-${SLOT}" + SOUND=$(usex sound "y" "") + STRIP=touch + USE_LUAJIT= + V=1 + prefix="/usr" + ) + + if use ncurses || (use !ncurses && use !tiles) ; then + emake "${myemakeargs[@]}" + # move it in case we build both variants + use tiles && { mv "crawl-${SLOT}" "${WORKDIR}"/crawl-ncurses-${SLOT} || die ;} + fi + + if use tiles ; then + emake "${myemakeargs[@]}" clean + emake "${myemakeargs[@]}" "TILES=y" + fi +} + +src_test() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + catch2-tests +} + +src_install() { + emake "${myemakeargs[@]}" \ + $(usex tiles "TILES=y" "") \ + DESTDIR="${D}" \ + prefix_fp="" \ + bin_prefix="${D}/usr/bin" \ + install + + [[ -e "${WORKDIR}/crawl-ncurses-${SLOT}" ]] && dobin "${WORKDIR}/crawl-ncurses-${SLOT}" + + # don't relocate docs, needed at runtime + rm -rf "${D}/usr/share/${PN}-${SLOT}"/docs/license + + mv "${WORKDIR}/${MY_P}"/docs/crawl.6 "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" \ + || die "Couldn't append slot to man page name" + doman "${WORKDIR}/${MY_P}/docs/crawl-${SLOT}.6" + + # icons and menu for graphical build + if use tiles ; then + doicon -s 48 "${DISTDIR}"/${PN}-${SLOT}.png + doicon -s scalable "${DISTDIR}"/${PN}-${SLOT}.svg + make_desktop_entry "crawl-${SLOT}" "Dungeon Crawl Stone Soup (DCSS) ${SLOT}" "${PN}-${SLOT}" + fi +} + +pkg_postinst() { + xdg_icon_cache_update + + elog "crawl is a slotted install that supports having" + elog "multiple versions installed. The binary has the" + elog "slot appended, e.g. 'crawl-"${SLOT}"'." + + if use tiles && use ncurses ; then + elog + elog "Since you have enabled both tiles and ncurses frontends" + elog "the ncurses binary is called 'crawl-ncurses-"${SLOT}"' and the" + elog "tiles binary is called 'crawl-"${SLOT}"'." + fi +} + +pkg_postrm() { + xdg_icon_cache_update +} diff --git a/games-roguelike/tome/Manifest b/games-roguelike/tome/Manifest new file mode 100644 index 000000000000..dd12b9356167 --- /dev/null +++ b/games-roguelike/tome/Manifest @@ -0,0 +1 @@ +DIST tome-2.4.0_p20251212.tar.gz 2397560 BLAKE2B 609753f4b8d7648f565567ba6ae8288a3c55554377daf39a83b65a9021ae79bb40aea4c1d8eec1b32d58a0da686b44c7b97e4e8abe3031ec0bb142fee29db892 SHA512 d30f68896dfce7992526e462be607f18fd659138a0a211361aefcc1f7e8424230d92e451cc7c55c9a8a4dd8105cdb39461cc2c52782c688629cd43773987b783 diff --git a/games-roguelike/tome/metadata.xml b/games-roguelike/tome/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/tome/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/tome/tome-2.4.0_p20251212.ebuild b/games-roguelike/tome/tome-2.4.0_p20251212.ebuild new file mode 100644 index 000000000000..1d1a9270e3b6 --- /dev/null +++ b/games-roguelike/tome/tome-2.4.0_p20251212.ebuild @@ -0,0 +1,49 @@ +# Copyright 2025-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Fantasy adventure game, based on the works of J.R.R. Tolkien" +HOMEPAGE="https://github.com/tome2/tome2" +MY_COMMIT="8e2f6361e1a55b21e7abcf051e47a22761d41471" +SRC_URI="https://github.com/tome2/tome2/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/tome2-${MY_COMMIT}" + +LICENSE="Moria ToME2-theme" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="X" + +RDEPEND=" + dev-libs/boost:= + >=dev-libs/libfmt-12:= + sys-libs/ncurses:= + X? ( x11-libs/libX11 ) +" +DEPEND=" + ${RDEPEND} + || ( + >=dev-cpp/jsoncons-1.6.0 + <dev-cpp/jsoncons-1.5.0 + ) + dev-cpp/pcg-cpp +" +BDEPEND="virtual/pkgconfig" + +src_configure() { + local mycmakeargs=( + -DSYSTEM_INSTALL=yes + -DBUILD_SHARED_LIBS=no + -DCMAKE_DISABLE_FIND_PACKAGE_X11=$(usex !X) + -DCMAKE_DISABLE_FIND_PACKAGE_GTK2=yes + -DCPM_LOCAL_PACKAGES_ONLY=yes + -DUSE_SYSTEM_PCG_RANDOM=yes + ) + cmake_src_configure +} + +src_test() { + "${BUILD_DIR}"/src/harness || die +} diff --git a/games-roguelike/tomenet/Manifest b/games-roguelike/tomenet/Manifest new file mode 100644 index 000000000000..bc788f22d46a --- /dev/null +++ b/games-roguelike/tomenet/Manifest @@ -0,0 +1 @@ +DIST tomenet-4.9.2.tar.bz2 7601198 BLAKE2B 3b7ac9264973ba04e929bbc29636ccfbd4f3ddc1990e9de50c500b58a8ae2ffd460bbde13656b834853cbbdcc89a399a0620b7069b59aa69e000af98f907ea48 SHA512 efa68b3e0ca4c090659991edf72bade09ed64de34e6dd5c6b9d562d2c24fa3fdad90b8ed5c04deab39820a8430c1149f85b24cc7fc4b943a8b980c15f91de958 diff --git a/games-roguelike/tomenet/files/tomenet-4.9.1-disable-experimental.patch b/games-roguelike/tomenet/files/tomenet-4.9.1-disable-experimental.patch new file mode 100644 index 000000000000..02ee8bad8c90 --- /dev/null +++ b/games-roguelike/tomenet/files/tomenet-4.9.1-disable-experimental.patch @@ -0,0 +1,12 @@ +diff --git a/config.h b/config.h +index 6280af8f0..f8c8ddebf 100644 +--- a/config.h ++++ b/config.h +@@ -833,7 +833,6 @@ + /* + * Use the new meta scheme to do neater things + */ +-#define EXPERIMENTAL_META + #ifdef EXPERIMENTAL_META + /* Retrieve ping times for all servers listed on the meta server. - C. Blue + The number indicates the max number of server names we read (raw, ie duplicates included). diff --git a/games-roguelike/tomenet/files/tomenet-4.9.2-makefile.patch b/games-roguelike/tomenet/files/tomenet-4.9.2-makefile.patch new file mode 100644 index 000000000000..8a66a54a29bd --- /dev/null +++ b/games-roguelike/tomenet/files/tomenet-4.9.2-makefile.patch @@ -0,0 +1,48 @@ +diff --git a/makefile b/makefile +index 60129a707..45ac2639d 100644 +--- a/makefile ++++ b/makefile +@@ -226,7 +226,7 @@ CPP = cpp + #So, -nostdinc will prevent the whole own comment blob of cpp to get generated + #in the first place, as we never asked for it: + #CPPFLAGS = -C -P -nostdinc +-CPPFLAGS = -x c -E -Wp,-C,-P,-nostdinc,-Wno-format-overflow ++CPPFLAGS = -x c -E -Wp,-C,-P,-nostdinc,-Wno-format-overflow $(GENTOO_CPPFLAGS) + + # gcc variant: + #CPP = gcc +@@ -237,6 +237,21 @@ CPPFLAGS = -x c -E -Wp,-C,-P,-nostdinc,-Wno-format-overflow + # For variations with X11 + X11BASE = /usr/X11R6 + ++# Defines ++ifdef USE_SDL ++CFLAGS += -DSOUND_SDL -I/usr/local/include/SDL2 -I/usr/include/SDL2 $(shell sdl-config --cflags) ++SDL_LIBS = $(shell sdl-config --libs) -lSDL2 -lSDL2_mixer ++endif ++ ++ifdef USE_X ++CFLAGS += -DUSE_X11 ++LIBS += -lX11 ++endif ++ ++CFLAGS += -Wall ++CFLAGS += -DUSE_GCU -D_XOPEN_SOURCE -D_DEFAULT_SOURCE -DMEXP=19937 -std=c99 ++LIBS += $(shell ${PKG_CONFIG} --libs ncurses) -lcrypt -lm ${SDL_LIBS} ++ + + # Account editor + ACCEDIT_LIBS = -lncurses -lcrypt +@@ -291,12 +306,10 @@ SERVER_EXTRA_LIBS = -lcrypt + + # With SDL2 + # With sdl2-config +-CFLAGS = -pipe -Wall -DUSE_GCU -D_XOPEN_SOURCE -D_BSD_SOURCE -DMEXP=19937 -std=c99 -D_DEFAULT_SOURCE -DACC32 -fPIE -fsigned-char + # Note: -fsigned-char is important for ARM64, as there 'char' is by default unsigned, while on x86/AM64 it is by default signed! + # With manually set prefix + #CFLAGS = -pipe -Wall -DUSE_X11 -DUSE_GCU -I${X11BASE}/include -D_XOPEN_SOURCE -D_BSD_SOURCE -DMEXP=19937 -std=c99 -DSOUND_SDL -I/usr/local/include/SDL2 -I/usr/include/SDL2 -D_REENTRANT -D_DEFAULT_SOURCE -DACC32 -fPIE -Wno-format-truncation + # With sdl2-config +-LIBS = -L/usr/pkg/lib -lncurses -lm + # With manually set prefix + #LIBS = -L${X11BASE}/lib -L/usr/pkg/lib -lX11 -lncurses -lm -L/usr/local/lib -L/usr/lib -pthread -lSDL2 -lSDL2_mixer + diff --git a/games-roguelike/tomenet/files/tomenet-server-wrapper b/games-roguelike/tomenet/files/tomenet-server-wrapper new file mode 100644 index 000000000000..831fbfb76ed8 --- /dev/null +++ b/games-roguelike/tomenet/files/tomenet-server-wrapper @@ -0,0 +1,6 @@ +#!/bin/sh + +TOMENET_PATH="@LIBDIR@" +export TOMENET_PATH +cd "${TOMENET_PATH}" +exec tomenet.server.bin "$@" diff --git a/games-roguelike/tomenet/files/tomenet-wrapper b/games-roguelike/tomenet/files/tomenet-wrapper new file mode 100644 index 000000000000..71abcb79cf25 --- /dev/null +++ b/games-roguelike/tomenet/files/tomenet-wrapper @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ ! -e ~/.tomenet/.gentoo ] || [ ! -e ~/.tomenet/game ] || [ ! -e ~/.tomenet/text ] ; then + LIBDIR="@LIBDIR@" + [ -e ~/.tomenet ] || mkdir ~/.tomenet + + [ -e ~/.tomenet/game ] || ln -sf "${LIBDIR}"/game ~/.tomenet/game + [ -e ~/.tomenet/text ] || ln -sf "${LIBDIR}"/text ~/.tomenet/text + cp -R "${LIBDIR}"/user "${LIBDIR}"/scpt "${LIBDIR}"/xtra ~/.tomenet/ + [ -e ~/.tomenetrc ] || cp "${LIBDIR}"/.tomenetrc ~/.tomenetrc + + touch ~/.tomenet/.gentoo +fi + +TOMENET_PATH="${HOME}/.tomenet" +export TOMENET_PATH +cd "${TOMENET_PATH}" +exec tomenet.bin "$@" diff --git a/games-roguelike/tomenet/metadata.xml b/games-roguelike/tomenet/metadata.xml new file mode 100644 index 000000000000..c436effe8a27 --- /dev/null +++ b/games-roguelike/tomenet/metadata.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <use> + <flag name="client">Compile client</flag> + <flag name="server">Compile server</flag> + </use> + <longdescription lang="en"> + TomeNET is a multiplayer fantasy dungeon exploration game based on + the works of J.R.R. Tolkien. It is a game that emphasizes intricate, + challenging, and varied gameplay over graphics. Hundreds of + different monsters in randomly-generated, + unpredictable dungeons will strive to slay you by various means, + and you counter - if you survive - by developing the skills of your + choice and wielding mighty + artifacts. + </longdescription> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/tomenet/tomenet-4.9.2.ebuild b/games-roguelike/tomenet/tomenet-4.9.2.ebuild new file mode 100644 index 000000000000..444f60a88e34 --- /dev/null +++ b/games-roguelike/tomenet/tomenet-4.9.2.ebuild @@ -0,0 +1,98 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop toolchain-funcs xdg + +DESCRIPTION="A MMORPG based on the works of J.R.R. Tolkien" +HOMEPAGE="https://www.tomenet.eu" +SRC_URI="https://www.tomenet.eu/downloads/${P}.tar.bz2" + +LICENSE="Moria" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+client server +sound X" +REQUIRED_USE="|| ( client server )" + +RDEPEND="sys-libs/ncurses:0 + client? ( + X? ( + x11-libs/libX11 + ) + sound? ( + media-libs/libsdl2[sound] + media-libs/sdl2-mixer[vorbis,mp3] + ) + )" +DEPEND="${RDEPEND} + client? ( sound? ( app-arch/p7zip ) )" +BDEPEND="virtual/pkgconfig" + +S=${WORKDIR}/${P}/src + +PATCHES=( + "${FILESDIR}"/${P}-makefile.patch + "${FILESDIR}"/${PN}-4.9.1-disable-experimental.patch +) + +src_prepare() { + default + if ! use server; then + rm -r ../lib/{config,data,save} || die + fi + + sed \ + -e "s#@LIBDIR@#${EPREFIX}/usr/share/${PN}#" \ + "${FILESDIR}"/${PN}-wrapper > "${T}"/${PN} || die + + if use server; then + sed \ + -e "s#@LIBDIR@#${EPREFIX}/usr/share/${PN}#" \ + "${FILESDIR}"/${PN}-server-wrapper > "${T}"/${PN}.server || die + fi + + tc-export PKG_CONFIG +} + +src_compile() { + local mytargets="$(usex client "tomenet" "") $(usex server "accedit tomenet.server" "")" + emake \ + $(usex client "$(usex X "USE_X=1" "")" "") \ + $(usex client "$(usex sound "USE_SDL=1" "")" "") \ + CC="$(tc-getCC)" \ + CPP="$(tc-getCPP)" \ + GENTOO_CPPFLAGS="${CPPFLAGS}" \ + -f makefile \ + ${mytargets[@]} +} + +src_install() { + dodoc ../TomeNET-Guide.txt + + if use client ; then + newbin ${PN} ${PN}.bin + dobin "${T}"/${PN} + + doicon -s 48 client/tomenet4.png + make_desktop_entry ${PN} ${PN} ${PN}4 + fi + + if use server ; then + newbin tomenet.server tomenet.server.bin + dobin "${T}"/${PN}.server accedit + fi + + insinto "/usr/share/${PN}" + doins -r ../lib/* + doins ../.tomenetrc +} + +pkg_postinst() { + xdg_pkg_postinst + + if use sound; then + elog "You can get soundpacks from here:" + elog ' https://tomenet.eu/downloads.php' + elog "They must be placed inside ~/.tomenet directory." + fi +} diff --git a/games-roguelike/zangband/Manifest b/games-roguelike/zangband/Manifest new file mode 100644 index 000000000000..7cc60746cf3e --- /dev/null +++ b/games-roguelike/zangband/Manifest @@ -0,0 +1 @@ +DIST zangband-2.7.4c.tar.gz 2821355 BLAKE2B 5d541ad0e24d61000194beb6d5139b3ff5236de3e48ace9861716c953303f5b37c855c933e7aaab711ff7389a7f81e644654535f88f83cd999484d3e4254f4ad SHA512 491dfeb72b6eb34f7feaa45d5360014da8eaeccd173dd75b3f7a1c2034e4fb634817493957b75babc0d9600077a80d88529cf2e86769948fc86d05e59958356e diff --git a/games-roguelike/zangband/files/zangband-2.7.4c-configure.patch b/games-roguelike/zangband/files/zangband-2.7.4c-configure.patch new file mode 100644 index 000000000000..b56fed37cfdb --- /dev/null +++ b/games-roguelike/zangband/files/zangband-2.7.4c-configure.patch @@ -0,0 +1,51 @@ +--- a/configure.in ++++ b/configure.in +@@ -236,48 +236,5 @@ + AC_CHECK_FUNCS([Tk_SetClassProcs TkpSync]) + AC_CHECK_FUNCS([mkstemp usleep getpwuid getpwnam shmget]) + +-dnl A nice function to test compiler options (like warnings) +-AC_DEFUN(AC_CHECK_CC_OPT, +-[FLAG=`echo zangband_cv_cflag_$1 | sed s/-/_/g` +-AC_CACHE_CHECK([whether ${CC-cc} accepts $1], +-[$FLAG], +-[echo 'void f(void); void f(){}' > conftest.c +-if test -z "`${CC-cc} -c ${CFLAGS} $1 conftest.c 2>&1`"; then +- eval $FLAG=yes +-else +- eval $FLAG=no +-fi]) +-if test ${!FLAG} = yes ; then +- CFLAGS="$1 $CFLAGS" +-fi +-]) +- +-dnl Check for lots of extra warning options +-AC_CHECK_CC_OPT(-pedantic) +-AC_CHECK_CC_OPT(-W) +-AC_CHECK_CC_OPT(-Wall) +-AC_CHECK_CC_OPT(-Wmissing-prototypes) +-AC_CHECK_CC_OPT(-Wmissing-declarations) +-AC_CHECK_CC_OPT(-Wno-long-long) +-AC_CHECK_CC_OPT(-Wwrite-strings) +-AC_CHECK_CC_OPT(-Wpointer-arith) +-AC_CHECK_CC_OPT(-Wbad-function-cast) +-AC_CHECK_CC_OPT(-Waggregate-return) +-AC_CHECK_CC_OPT(-Wstrict-prototypes) +-AC_CHECK_CC_OPT(-Wredundant-decls) +-dnl AC_CHECK_CC_OPT(-Wunreachable-code) +-AC_CHECK_CC_OPT(-Wchar-subscripts) +-AC_CHECK_CC_OPT(-Wimplicit) +-AC_CHECK_CC_OPT(-Wparentheses) +-AC_CHECK_CC_OPT(-Wsequence-point) +-AC_CHECK_CC_OPT(-Wreturn-type) +-AC_CHECK_CC_OPT(-Wswitch) +-AC_CHECK_CC_OPT(-Wunused) +-AC_CHECK_CC_OPT(-Wuninitialized) +-AC_CHECK_CC_OPT(-Wundef) +-AC_CHECK_CC_OPT(-Wnested-externs) +-AC_CHECK_CC_OPT(-Wdeclaration-after-statement) +-AC_CHECK_CC_OPT(-Wsign-compare) +- + AC_CONFIG_FILES([makefile]) + AC_OUTPUT diff --git a/games-roguelike/zangband/files/zangband-2.7.4c-makefile.patch b/games-roguelike/zangband/files/zangband-2.7.4c-makefile.patch new file mode 100644 index 000000000000..0fb2821ecfad --- /dev/null +++ b/games-roguelike/zangband/files/zangband-2.7.4c-makefile.patch @@ -0,0 +1,29 @@ +--- a/makefile.in ++++ b/makefile.in +@@ -111,17 +111,6 @@ + %.o: %.c + $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $< -c -o $@ $(DEFS) + +-## +-## Hack - make sure the build system is consistant. +-## +-makefile: configure makefile.in +- $(CONFIGURE) +- +-configure: configure.in +- aclocal +- autoheader +- autoconf +- + dirs: + -mkdir $(DESTDIR) + -mkdir $(addprefix $(DESTDIR),$(filter-out $(srcdirlist), $(dirlist))) +@@ -205,7 +194,7 @@ + @echo $(srcdirlist) $(srcfiles) + + # Hack to remake files depending on DEFAULT_PATH +-.default_path: makefile ++.default_path: + @if [ ! -r .default_path ]; then \ + echo "$(DESTDIR)" > .default_path; \ + fi diff --git a/games-roguelike/zangband/files/zangband-2.7.4c-rng.patch b/games-roguelike/zangband/files/zangband-2.7.4c-rng.patch new file mode 100644 index 000000000000..4ac1b101dc8c --- /dev/null +++ b/games-roguelike/zangband/files/zangband-2.7.4c-rng.patch @@ -0,0 +1,11 @@ +--- zangband/src/z-rand.c ++++ zangband/src/z-rand.c +@@ -168,7 +168,7 @@ + r = (Rand_state[j] += Rand_state[Rand_place]); + + /* Hack -- extract a 28-bit "random" number */ +- r = (r >> 4) / n; ++ r = ((r >> 4) & 0x0FFFFFFF) / n; + + /* Advance the index */ + Rand_place = j; diff --git a/games-roguelike/zangband/files/zangband-2.7.4c-tinfo.patch b/games-roguelike/zangband/files/zangband-2.7.4c-tinfo.patch new file mode 100644 index 000000000000..e9b491e070ca --- /dev/null +++ b/games-roguelike/zangband/files/zangband-2.7.4c-tinfo.patch @@ -0,0 +1,12 @@ +diff '--color=auto' -Naurd zangband.orig/configure.in zangband/configure.in +--- zangband.orig/configure.in 2004-08-01 13:23:14.000000000 +0400 ++++ zangband/configure.in 2019-05-04 19:01:09.287753294 +0300 +@@ -117,6 +117,8 @@ + # Only check termcap if we don't have GCU + AC_SEARCH_LIBS([tgetent], [termcap], + AC_DEFINE(USE_CAP, 1, [Use termcap port]))) ++# tinfo may be in a separate lib ++AC_SEARCH_LIBS([keypad], [tinfow tinfo]) + + if test "x$with_gtk" != "xno" ; then + AC_SEARCH_LIBS([gtk_init_check], [gtk], diff --git a/games-roguelike/zangband/files/zangband-2.7.4c-tk85.patch b/games-roguelike/zangband/files/zangband-2.7.4c-tk85.patch new file mode 100644 index 000000000000..6b4eff9d30da --- /dev/null +++ b/games-roguelike/zangband/files/zangband-2.7.4c-tk85.patch @@ -0,0 +1,19 @@ +--- a/configure.in ++++ b/configure.in +@@ -141,12 +141,12 @@ + ]) + + if test "x$with_tcltk" != "xno" ; then +- AC_SEARCH_LIBS([Tcl_Init], [tcl84 tcl8.4 tcl83 tcl8.3], +- AC_SEARCH_LIBS([Tk_Init], [tk84 tk8.4 tk83 tk8.3], +- [AC_SEARCH_HEADERS(/usr/local/include/tcl.h /usr/local/include/tcl/tcl.h /usr/include/tcl.h /usr/include/tcl8.4/tcl.h /usr/local/include/tcl8.4/tcl.h /usr/include/tcl8.3/tcl.h /usr/local/include/tcl8.3/tcl.h ++ AC_SEARCH_LIBS([Tcl_Init], [tcl86 tcl8.6 tcl85 tcl8.5 tcl84 tcl8.4 tcl83 tcl8.3], ++ AC_SEARCH_LIBS([Tk_Init], [tk86 tk8.6 tk85 tk8.5 tk84 tk8.4 tk83 tk8.3], ++ [AC_SEARCH_HEADERS(/usr/local/include/tcl.h /usr/local/include/tcl/tcl.h /usr/include/tcl.h /usr/include/tcl8.5/tcl.h /usr/include/tcl8.4/tcl.h /usr/local/include/tcl8.4/tcl.h /usr/include/tcl8.3/tcl.h /usr/local/include/tcl8.3/tcl.h + ,BASE_TCL_DIR) + +- AC_SEARCH_HEADERS("$BASE_TCL_DIR/tk.h" /usr/local/include/tk.h /usr/local/include/tcl/tk.h /usr/include/tk.h /usr/include/tk8.4/tk.h /usr/local/include/tk8.4/tk.h /usr/include/tk8.3/tk.h /usr/local/include/tk8.3/tk.h ++ AC_SEARCH_HEADERS("$BASE_TCL_DIR/tk.h" /usr/local/include/tk.h /usr/local/include/tcl/tk.h /usr/include/tk.h /usr/include/tk8.6/tk.h /usr/include/tk8.5/tk.h /usr/include/tk8.4/tk.h /usr/local/include/tk8.4/tk.h /usr/include/tk8.3/tk.h /usr/local/include/tk8.3/tk.h + ,BASE_TK_DIR) + + dnl Checks for libraries. diff --git a/games-roguelike/zangband/metadata.xml b/games-roguelike/zangband/metadata.xml new file mode 100644 index 000000000000..183ecc5ceeeb --- /dev/null +++ b/games-roguelike/zangband/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>games@gentoo.org</email> + <name>Gentoo Games Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/games-roguelike/zangband/zangband-2.7.4c-r1.ebuild b/games-roguelike/zangband/zangband-2.7.4c-r1.ebuild new file mode 100644 index 000000000000..900c08ca15d6 --- /dev/null +++ b/games-roguelike/zangband/zangband-2.7.4c-r1.ebuild @@ -0,0 +1,82 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools + +DESCRIPTION="An enhanced version of the Roguelike game Angband" +HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage" +SRC_URI="ftp://ftp.sunet.se/pub/games/Angband/Variant/ZAngband/${P}.tar.gz" +S="${WORKDIR}"/${PN} + +LICENSE="Moria" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="tk" + +RDEPEND=" + acct-group/gamestat + sys-libs/ncurses:= + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXt + tk? ( + dev-lang/tcl:= + dev-lang/tk:= + ) +" +DEPEND=" + ${RDEPEND} + x11-base/xorg-proto +" +BDEPEND="acct-group/gamestat" + +DOCS=( readme z_faq.txt z_update.txt ) + +PATCHES=( + "${FILESDIR}"/${P}-tk85.patch + "${FILESDIR}"/${P}-rng.patch + "${FILESDIR}"/${P}-tinfo.patch + "${FILESDIR}"/${P}-configure.patch + "${FILESDIR}"/${P}-makefile.patch +) + +src_prepare() { + default + + mv configure.in configure.ac || die + eautoreconf +} + +src_configure() { + local myconf=( + --datadir="${EPREFIX}"/var + --with-setgid=gamestat + --without-gtk + $(use_with tk tcltk) + ) + + econf "${myconf[@]}" +} + +src_install() { + dodir /var/games/${PN} + + # Install the basic files but remove unneeded bits to install ourselves + emake DESTDIR="${ED}"/var/games/${PN}/ installbase + # Covered via DOCS + rm "${ED}"/var/games/${PN}/{angdos.cfg,readme,z_faq.txt,z_update.txt} || die + + # Install everything else and fix the permissions + dobin zangband + + keepdir /var/games/zangband/lib/{bone,info,user,save,xtra/{,help,music}} + + # All users in the games group need write permissions to + # some important dirs + fowners -R :gamestat /var/games/${PN}/lib/{apex,data,save,user} + fperms -R g+w /var/games/${PN}/lib/{apex,data,save,user} + + einstalldocs +} |
