# 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:0= 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/bin" STATEDIR="/var/games/${PN}" NETHACK_GROUP="gamestat" pkg_setup() { HACKDIR="/usr/$(get_libdir)/${PN}" enewgroup gamestat 36 } src_prepare() { epatch "${FILESDIR}/${P}-recover.patch" epatch_user cp "${FILESDIR}/${P}-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 -I../include -DDLB -DSECURE -DLINUX -DTIMED_DELAY -DVISION_TABLES append-cflags '-DCOMPRESS=\"/bin/gzip\"' '-DCOMPRESS_EXTENSION=\".gz\"' append-cflags "-DHACKDIR=\\\"${HACKDIR}\\\"" "-DVAR_PLAYGROUND=\\\"${STATEDIR}\\\"" append-cflags "-DLOCKDIR=\\\"${STATEDIR}\\\"" "-DDEF_PAGER=\\\"${PAGER}\\\"" append-cflags -DSYSCF "-DSYSCF_FILE=\\\"/etc/nethack.sysconf\\\"" use X && append-cflags -DX11_GRAPHICS -DUSE_XPM emake \ CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" \ WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" \ HACKDIR="${HACKDIR}" INSTDIR="${D}/${HACKDIR}" \ SHELLDIR="${D}/${BINDIR}" VARDIR="${D}/${STATEDIR}" \ nethack recover Guidebook spec_levs # Upstream still has some parallel compilation bugs emake -j1 \ CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" \ WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" \ HACKDIR="${HACKDIR}" INSTDIR="${D}/${HACKDIR}" \ SHELLDIR="${D}/${BINDIR}" VARDIR="${D}/${STATEDIR}" \ all } src_install() { emake \ CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}" \ WINTTYLIB="$($(tc-getPKG_CONFIG) --libs ncurses)" \ HACKDIR="${HACKDIR}" INSTDIR="${D}/${HACKDIR}" \ SHELLDIR="${D}/${BINDIR}" VARDIR="${D}/${STATEDIR}" \ install exeinto "${BINDIR}" newexe util/recover recover-nethack rm "${D}/${HACKDIR}/recover" || die "Failed to remove HACKDIR/recover" 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}/dot.nethackrc" .nethackrc local windowtypes="tty" use X && windowtypes="x11 ${windowtypes}" set -- ${windowtypes} sed -i \ -e "s:GENTOO_WINDOWTYPES:${windowtypes}:" \ -e "s:GENTOO_DEFWINDOWTYPE:$1:" \ "${D}/etc/skel/.nethackrc" \ || die "sed /etc/skel/.nethackrc failed" if use X ; then cd "${S}/win/X11" || die "Failed to enter win/X11 directory" # copy nethack x application defaults insinto /etc/X11/app-defaults newins NetHack.ad NetHack rm "${D}/${HACKDIR}/NetHack.ad" || die "Failed to remove 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 "${HACKDIR}/fonts" doins *.pcf cd "${D}/${HACKDIR}/fonts" || die "Failed to enter fonts directory" mkfontdir || die "The action mkfontdir ${HACKDIR}/fonts failed" fi rm -r "${D}/${STATEDIR}" || die "Failed to clean STATEDIR" keepdir "${STATEDIR}/save" fowners -R "root:${NETHACK_GROUP}" "${STATEDIR}" fperms 770 "${STATEDIR}" "${STATEDIR}/save" fowners "root:${NETHACK_GROUP}" "${HACKDIR}/nethack" fperms g+s "${HACKDIR}/nethack" } 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" fi touch logfile perm record xlogfile || die "Failed to create log files" chown -R root:"${NETHACK_GROUP}" . && chmod -R 660 . && chmod 770 . save || die "Adjustment of file permissions in ${ROOT}/${STATEDIR} failed" touch -c bones* save/* # non-critical elog "A minimal default .nethackrc has been placed in /etc/skel/" elog "The sysconf file is at /etc/nethack.sysconf" if has_version "<${CATEGORY}/${PN}-3.6.0" ; then elog elog "Nethack 3.6 includes many new features." elog "You might want to review your options and local patchset." elog "Have a look at http://www.nethack.org/v360/release.html" fi }