You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/games-fps/eduke32/eduke32-20130317.3572-r1.eb...

217 lines
6.3 KiB

# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/games-fps/eduke32/eduke32-20130317.3572-r1.ebuild,v 1.3 2013/04/11 14:16:54 hasufell Exp $
# TODO/FIXME:
# lunatic broken
# lunatic? ( >=dev-lang/luajit-2.0.0_beta10:2 )
# $(usex lunatic "LUNATIC=1" "LUNATIC=0")
#
# extras? ( games-fps/${PN}-extras )
EAPI=5
inherit eutils gnome2-utils games
MY_PV=${PV%.*}
MY_BUILD=${PV#*.}
# extensions
MY_HRP=5.2
MY_SC55=3.0
MY_OPL=2.0
MY_XXX=1.33
DESCRIPTION="Port of Duke Nukem 3D for SDL"
HOMEPAGE="http://www.eduke32.com/ http://hrp.duke4.net/"
SRC_URI="http://dukeworld.duke4.net/eduke32/synthesis/${MY_PV}-${MY_BUILD}/${PN}_src_${MY_PV}-${MY_BUILD}.tar.bz2
http://dev.gentoo.org/~hasufell/distfiles/eduke32-icons.tar
textures? ( http://www.duke4.org/files/nightfright/duke3d_hrp.zip -> duke3d_hrp_${MY_HRP}.zip )
sc55-musicpack? ( http://www.duke4.org/files/nightfright/music/duke3d_mus.zip -> duke3d_mus_${MY_SC55}.zip )
opl-musicpack? ( http://www.duke4.org/files/nightfright/music/duke3d_musopl.zip -> duke3d_musopl_${MY_OPL}.zip )
offensive? ( http://www.duke4.org/files/nightfright/duke3d_xxx.zip -> duke3d_xxx_${MY_XXX}.zip )"
LICENSE="GPL-2 BUILDLIC textures? ( hrp_art )"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="cdinstall debug demo gtk offensive +opengl opl-musicpack +png samples sc55-musicpack +server textures tools +vpx"
REQUIRED_USE="vpx? ( opengl )
textures? ( opengl )
offensive? ( textures )
?? ( opl-musicpack sc55-musicpack )"
RDEPEND="media-libs/flac
media-libs/libogg
media-libs/libsdl[X,joystick,opengl?,video]
media-libs/libvorbis
media-libs/sdl-mixer[timidity]
sys-libs/zlib
gtk? ( x11-libs/gtk+:2 )
opengl? ( virtual/glu
virtual/opengl )
png? ( media-libs/libpng:0=
sys-libs/zlib )
vpx? ( media-libs/libvpx )"
DEPEND="${RDEPEND}
app-arch/unzip
x86? ( dev-lang/nasm )"
PDEPEND="cdinstall? ( games-fps/duke3d-data )
demo? ( games-fps/duke3d-demodata )"
S=${WORKDIR}/${PN}_${MY_PV}-${MY_BUILD}
src_unpack() {
unpack ${PN}_src_${MY_PV}-${MY_BUILD}.tar.bz2 eduke32-icons.tar
if use textures; then
unzip -q "${DISTDIR}"/duke3d_hrp_${MY_HRP}.zip "hrp_readme.txt" \
|| die "unzip hrp readme"
if use offensive; then
unzip -q "${DISTDIR}"/duke3d_xxx_${MY_XXX}.zip "xxx_readme.txt" \
|| die "unzip xxx readme"
fi
fi
if use opl-musicpack; then
unzip -q "${DISTDIR}"/duke3d_musopl_${MY_OPL}.zip "readme.txt" \
|| die "unzip musopl readme"
mv readme.txt musopl_readme.txt || die "mv musopl_readme"
elif use sc55-musicpack; then
unzip -q "${DISTDIR}"/duke3d_mus_${MY_SC55}.zip "music_readme.txt" \
|| die "unzip mus readme"
fi
}
src_prepare() {
epatch "${FILESDIR}"/${P}-QA.patch \
"${FILESDIR}"/${P}-libpng-1.6.patch
# Point eduke32 to data files in shared duke3d folder.
# Multiple search paths can be defined, so that with the default configuration as of
# the 20130128 release, this adds /usr/share/games/duke3d in ADDITION to
# /usr/share/games/eduke32 so that eduke32 and duke3d's base data can be kept separate.
# also redirect log file so it's not always written in $PWD
sed -i \
-e "s;/usr/local/share/games/${PN};${GAMES_DATADIR}/duke3d;" \
-e "s;mapster32.log;${GAMES_LOGDIR}/mapster32.log;" \
source/astub.c || die "sed astub.c path update failed"
sed -i \
-e "s;/usr/local/share/games/${PN};${GAMES_DATADIR}/duke3d;" \
-e "s;${PN}.log;${GAMES_LOGDIR}/${PN}.log;" \
source/game.c || die "sed game.c path update failed"
}
src_compile() {
local MY_OPTS=(
AS=$(type -P nasm)
ARCH=
SYSARCH=
LTO=0
PRETTY_OUTPUT=0
RELEASE=1
LUNATIC=0
STRIP=touch
LINKED_GTK=1
CPLUSPLUS=0
$(usex gtk "WITHOUT_GTK=0" "WITHOUT_GTK=1")
$(usex debug "DEBUGANYWAY=1" "DEBUGANYWAY=0")
$(usex x86 "NOASM=0" "NOASM=1")
$(usex server "NETCODE=1" "NETCODE=0")
$(usex opengl "USE_OPENGL=1 POLYMER=1" "USE_OPENGL=0 POLYMER=0")
$(usex png "USE_LIBPNG=1" "USE_LIBPNG=0")
$(usex vpx "USE_LIBVPX=1" "USE_LIBVPX=0")
)
emake ${MY_OPTS[@]}
if use tools; then
emake -C build ${MY_OPTS[@]}
fi
}
src_install() {
local ARGS
newgamesbin ${PN} ${PN}.bin
dogamesbin mapster32
if use tools; then
dobin build/{arttool,bsuite,cacheinfo,generateicon,givedepth,kextract,kgroup,kmd2tool,md2tool,mkpalette,transpal,unpackssi,wad2art,wad2map}
dodoc build/doc/*.txt
fi
insinto "${GAMES_DATADIR}/${PN}"
# Install optional components
if use textures; then
newins "${DISTDIR}"/duke3d_hrp_${MY_HRP}.zip duke3d_hrp.zip
dodoc "${WORKDIR}"/hrp_readme.txt
ARGS+=" -g duke3d_hrp.zip"
if use offensive; then
newins "${DISTDIR}"/duke3d_xxx_${MY_XXX}.zip duke3d_xxx.zip
dodoc "${WORKDIR}"/xxx_readme.txt
ARGS+=" -g duke3d_xxx.zip"
fi
fi
if use opl-musicpack; then
newins "${DISTDIR}"/duke3d_musopl_${MY_OPL}.zip duke3d_musopl.zip
dodoc "${WORKDIR}"/musopl_readme.txt
ARGS+=" -g duke3d_musopl.zip"
elif use sc55-musicpack; then
newins "${DISTDIR}"/duke3d_mus_${MY_SC55}.zip duke3d_mus.zip
dodoc "${WORKDIR}"/music_readme.txt
ARGS+=" -g duke3d_mus.zip"
fi
# Install game data
doins package/{SEHELP.HLP,STHELP.HLP,m32help.hlp,names.h,tiles.cfg}
use samples && doins -r package/samples
local i
for i in 16 32 128 256 ; do
newicon -s ${i} "${WORKDIR}"/${PN}_${i}x${i}x32.png ${PN}.png
newicon -s ${i} "${WORKDIR}"/mapster32_${i}x${i}x32.png mapster32.png
done
games_make_wrapper "${PN}" "${GAMES_BINDIR}/${PN}.bin ${ARGS}"
make_desktop_entry ${PN} EDuke32 ${PN}
make_desktop_entry mapster32 Mapster32 mapster32
dodoc build/buildlic.txt
dodir "${GAMES_LOGDIR}"
prepgamesdirs
}
pkg_preinst() {
games_pkg_preinst
gnome2_icon_savelist
}
pkg_postinst() {
games_pkg_postinst
gnome2_icon_cache_update
use cdinstall || use demo || {
elog "Note: You must also install the game data files, either manually or with"
elog "games-fps/duke3d-demodata or games-fps/duke3d-data before playing."
}
einfo
elog "${PN} reads data files from ${GAMES_DATADIR}/duke3d"
einfo
[[ -e ${ROOT}/${GAMES_LOGDIR} ]] || mkdir -p "${ROOT}/${GAMES_LOGDIR}"
touch "${ROOT}/${GAMES_LOGDIR}"/${PN}.log
touch "${ROOT}/${GAMES_LOGDIR}"/mapster32.log
chown ${GAMES_USER}:${GAMES_GROUP} "${ROOT}/${GAMES_LOGDIR}"/${PN}.log
chown ${GAMES_USER}:${GAMES_GROUP} "${ROOT}/${GAMES_LOGDIR}"/mapster32.log
chmod g+w "${ROOT}/${GAMES_LOGDIR}"/${PN}.log
chmod g+w "${ROOT}/${GAMES_LOGDIR}"/mapster32.log
}
pkg_postrm() {
gnome2_icon_cache_update
}