blob: f627cad5b44b9d4c38c1dc01afba0ae94d2b8db4 [file] [log] [blame]
# 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}/${PN}-3.4.3-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
}