From 086d1d11426f1e2e8cb9d817a8d3724511f28ccf Mon Sep 17 00:00:00 2001 From: Luis Ressel Date: Thu, 15 Oct 2015 13:44:09 +0200 Subject: games-roguelike/nethack: Move HACKDIR to /usr/lib Move nethack's HACKDIR (containing its static data) from /usr/share to /usr/lib because its contents are architecture-dependent. /usr/lib is the location recommended by upstream and also used by other distros. X-Gentoo-Bug: 97557 --- games-roguelike/nethack/nethack-3.4.3-r5.ebuild | 232 ++++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 games-roguelike/nethack/nethack-3.4.3-r5.ebuild (limited to 'games-roguelike/nethack') diff --git a/games-roguelike/nethack/nethack-3.4.3-r5.ebuild b/games-roguelike/nethack/nethack-3.4.3-r5.ebuild new file mode 100644 index 000000000000..40ffcfc0dbf7 --- /dev/null +++ b/games-roguelike/nethack/nethack-3.4.3-r5.ebuild @@ -0,0 +1,232 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit eutils toolchain-funcs flag-o-matic user + +MY_PV=${PV//.} +DESCRIPTION="The ultimate old-school single player dungeon exploration game" +HOMEPAGE="http://www.nethack.org/" +SRC_URI="mirror://sourceforge/nethack/${PN}-${MY_PV}-src.tgz" + +LICENSE="nethack" +SLOT="0" +KEYWORDS="~amd64 ~hppa ~ppc ~sparc ~x86 ~x86-fbsd" +IUSE="X" + +RDEPEND=">=sys-libs/ncurses-5.2-r5 + X? ( + x11-libs/libXaw + x11-libs/libXpm + x11-libs/libXt + )" +DEPEND="${RDEPEND} + virtual/pkgconfig + X? ( + x11-proto/xproto + x11-apps/bdftopcf + x11-apps/mkfontdir + )" + +BINDIR="/usr/games/bin" +STATEDIR="/var/games/${PN}" + +NETHACK_GROUP="gamestat" + +pkg_setup() { + HACKDIR="/usr/$(get_libdir)/${PN}" + + enewgroup gamestat 36 +} + +src_prepare() { + # This copies the /sys/unix Makefile.*s to their correct places for + # seding and compiling. + cd "sys/unix" || die "Could not go into sys/unix directory" + source setup.sh || die + + cd ../.. || die "Failed to get back to main directory" + epatch \ + "${FILESDIR}"/${PV}-gentoo-paths.patch \ + "${FILESDIR}"/${PV}-default-options.patch \ + "${FILESDIR}"/${PV}-bison.patch \ + "${FILESDIR}"/${PV}-macos.patch \ + "${FILESDIR}"/${P}-gibc210.patch \ + "${FILESDIR}"/${P}-recover.patch + + epatch_user + + mv doc/recover.6 doc/nethack-recover.6 || die "Could not rename recover.6 to nethack-recover.6" + + sed -i \ + -e "s:GENTOO_STATEDIR:${STATEDIR}:" include/unixconf.h \ + || die "setting statedir" + sed -i \ + -e "s:GENTOO_HACKDIR:${HACKDIR}:" include/config.h \ + || die "setting hackdir" + # set the default pager from the environment bug #52122 + if [[ -n "${PAGER}" ]] ; then + sed -i \ + -e "115c\#define DEF_PAGER \"${PAGER}\"" \ + include/unixconf.h \ + || die "setting statedir" + # bug #57410 + sed -i \ + -e "s/^DATNODLB =/DATNODLB = \$(DATHELP)/" Makefile \ + || die "sed Makefile failed" + fi + + # sys-libs/ncurses[tinfo] + sed -i \ + -e '/^WINTTYLIB/s| = .*| = '"$( + $(tc-getPKG_CONFIG) --libs ncurses + )"'|g' \ + src/Makefile || die + + if use X ; then + epatch "${FILESDIR}/${PV}-X-support.patch" + fi +} + +src_compile() { + local lflags="${LDFLAGS}" + + cd "${S}"/src || die "Failed to enter src directory" + append-flags -I../include + + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LFLAGS="${lflags}" \ + ../util/makedefs + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LFLAGS="${lflags}" + cd "${S}"/util || die "Failed to enter util directory" + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LFLAGS="${lflags}" \ + recover +} + +src_install() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS="${CFLAGS}" \ + LFLAGS="-L/usr/X11R6/lib" \ + GAMEPERM=02755 \ + GAMEUID="root" GAMEGRP="${NETHACK_GROUP}" \ + PREFIX="${D}/usr" \ + GAMEDIR="${D}/${HACKDIR}" \ + SHELLDIR="${D}/${BINDIR}" \ + install + + # We keep this stuff in STATEDIR instead so tidy up. + rm -rf "${D}/${HACKDIR}/"{nethack,recover,save} + + exeinto "${BINDIR}" + newexe src/nethack nethack-bin + newexe util/recover recover-nethack + + # The final nethack is a sh script. This fixes the hard-coded + # HACKDIR directory so it doesn't point to ${D}/usr/share/nethackdir + # and points HACK to BINDIR/nethack-bin (see above) + sed -i \ + -e "s:^\(HACKDIR=\).*$:\1${HACKDIR}:; + s:^\(HACK=\).*$:\1${BINDIR}/nethack-bin:" \ + "${D}/${BINDIR}/nethack" \ + || die "sed /${BINDIR}/nethack failed" + + doman doc/*.6 + dodoc doc/*.txt + + # Can be copied to ~/.nethackrc to set options + # Add this to /etc/.skel as well, thats the place for default configs + insinto "${HACKDIR}" + doins "${FILESDIR}/dot.nethackrc" + + local windowtypes="tty" + use X && windowtypes="${windowtypes} x11" + set -- ${windowtypes} + sed -i \ + -e "s:GENTOO_WINDOWTYPES:${windowtypes}:" \ + -e "s:GENTOO_DEFWINDOWTYPE:$1:" \ + "${D}${HACKDIR}/dot.nethackrc" \ + || die "sed ${HACKDIR}/dot.nethackrc failed" + insinto /etc/skel + newins "${D}/${HACKDIR}/dot.nethackrc" .nethackrc + + if use X ; then + # install nethack fonts + cd "${S}/win/X11" || die "Failed to enter win/X11 directory" + bdftopcf -o nh10.pcf nh10.bdf || die "Converting fonts failed" + bdftopcf -o ibm.pcf ibm.bdf || die "Converting fonts failed" + insinto "${HACKDIR}/fonts" + doins *.pcf + cd "${D}/${HACKDIR}/fonts" || die "Failed to enter fonts directory" + mkfontdir || die "The action mkfontdir ${HACKDIR}/fonts failed" + + # copy nethack x application defaults + cd "${S}/win/X11" || die "Failed to enter win/X11 directory again" + insinto /etc/X11/app-defaults + newins NetHack.ad NetHack + sed -i \ + -e 's:^!\(NetHack.tile_file.*\):\1:' \ + "${D}/etc/X11/app-defaults/NetHack" \ + || die "sed /etc/X11/app-defaults/NetHack failed" + fi + + keepdir "${STATEDIR}/save" + rm "${D}/${HACKDIR}/"{logfile,perm,record} + make_desktop_entry nethack "Nethack" + + fowners -R "root:${NETHACK_GROUP}" "${STATEDIR}" + fperms -R 660 "${STATEDIR}" + fperms 770 "${STATEDIR}" "${STATEDIR}/save" + + fowners "root:${NETHACK_GROUP}" ${BINDIR}/nethack-bin + fperms g+s ${BINDIR}/nethack-bin +} + +pkg_preinst() { + if has_version "<${CATEGORY}/${PN}-3.4.3-r3" ; then + migration=true + + # preserve STATEDIR/{logfile,record} + # (previous ebuild rev mistakenly removes it) + for f in "${ROOT}/${STATEDIR}/"{logfile,record} ; do + if [[ -e "$f" ]] ; then + cp "$f" "$T" || die "Failed to preserve ${ROOT}/${STATEDIR} files" + else + touch "$T/$f" || die "Failed to preserve ${ROOT}/${STATEDIR} files" + fi + done + fi +} + +pkg_postinst() { + cd "${ROOT}/${STATEDIR}" || die "Failed to enter ${STATEDIR} directory" + + if [[ -v migration ]] ; then + cp "$T/"{logfile,record} . || \ + die "Failed to preserve ${ROOT}/${STATEDIR} files" + + chown -R root:"${NETHACK_GROUP}" . && \ + chmod -R 660 . && \ + chmod 770 . save || \ + die "Adjustment of file permissions in ${ROOT}/${STATEDIR} failed" + fi + + # we don't want to overwrite existing files, as they contain user data + local files="logfile perm record" + + touch $files && \ + chmod 660 $files && \ + chown root:"${NETHACK_GROUP}" $files || \ + die "Adjustment of file permissions in "${ROOT}/${STATEDIR}" failed" + + elog "You may want to look at /etc/skel/.nethackrc for interesting options" +} -- cgit v1.2.3-65-gdbad