diff options
author | Dawn Xu <dawn_xu_helloworld@163.com> | 2024-09-27 19:39:33 +0800 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2024-10-09 23:39:29 +0100 |
commit | 81613a0ad2b4957eccdeca5809f20e733068105f (patch) | |
tree | 9b417cc76b5db207eacc9b26c02851de80a9a0e8 /games-roguelike | |
parent | media-libs/sdl-gfx: EAPI8 bump, use https (diff) | |
download | gentoo-81613a0ad2b4957eccdeca5809f20e733068105f.tar.gz gentoo-81613a0ad2b4957eccdeca5809f20e733068105f.tar.bz2 gentoo-81613a0ad2b4957eccdeca5809f20e733068105f.zip |
games-roguelike/nethack: add 3.6.7
Signed-off-by: Dawn Xu <dawn_xu_helloworld@163.com>
Closes: https://github.com/gentoo/gentoo/pull/38798
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
Diffstat (limited to 'games-roguelike')
-rw-r--r-- | games-roguelike/nethack/Manifest | 1 | ||||
-rw-r--r-- | games-roguelike/nethack/nethack-3.6.7.ebuild | 149 |
2 files changed, 150 insertions, 0 deletions
diff --git a/games-roguelike/nethack/Manifest b/games-roguelike/nethack/Manifest index a635bab66434..7d1820acf8d0 100644 --- a/games-roguelike/nethack/Manifest +++ b/games-roguelike/nethack/Manifest @@ -1 +1,2 @@ DIST nethack-3.6.6.tar.gz 5577633 BLAKE2B 7b4b12f3a711785c86208dab83f9de725c33470e056ee57e6d96c3a68f06c1d0d98343ed82eca669986361d0663ddbe56d9a74d9cb45b42bf005c2f323b3cd79 SHA512 579fde93a37a1b5df637d5bac2601194beeb455c175fbe3ef89342122c8567bb8221ce60d8a6168e6b45c67ade7d7b09c86bf202c8cbe2d6294d276be3e53055 +DIST nethack-3.6.7.tar.gz 5577415 BLAKE2B a03cfe973b0470efe052eee49c312818755e33cf5148a2c39beecf052e44dfe951c6c63a3ff58ce826fa656647ad5bbe558b4854a50fcf987d80014ef4707505 SHA512 7890d17e087f4344d30e9a908fa1f24d7c72bc714c4a6415ed59800902cc0aa6b3ce94c5d73857b0222349b96b1fdc8bf3f93b3ac1153477ad1419af7b0d3fb5 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..21b5d8961d16 --- /dev/null +++ b/games-roguelike/nethack/nethack-3.6.7.ebuild @@ -0,0 +1,149 @@ +# 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" INSTDIR="${ED}/usr/$(get_libdir)/nethack" + SHELLDIR="${ED}/usr/bin" VARDIR="${ED}/var/games/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[@]}" 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" +} |