# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # 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#*.} 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="caribbean cdinstall debug demo dukedc editor gtk nwinter 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 ) dukedc? ( games-fps/duke3d-dukedc[textures=] ) caribbean? ( games-fps/duke3d-caribbean[textures=] ) nwinter? ( games-fps/duke3d-nwinter[textures=] )" 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 epatch "${FILESDIR}"/unpackssi_64bit_fix.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" # Prevent building of map editor, if desired if ! use editor; then sed -e 's/^all: start $(EDUKE32_TARGET) $(MAPSTER32_TARGET) finish$/all: start $(EDUKE32_TARGET) finish/' \ -e 's/@ls -l $(MAPSTER32)//' \ -i Makefile | grep 'sed Makefile' fi } src_compile() { local MY_OPTS=( ARCH= 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 insinto "${GAMES_DATADIR}/${PN}" # Install binaries newgamesbin ${PN} ${PN}.bin use editor && 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 # 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 if use editor; then newicon -s ${i} "${WORKDIR}"/mapster32_${i}x${i}x32.png mapster32.png fi done # Install shortcuts and documentation games_make_wrapper "${PN}" "${GAMES_BINDIR}/${PN}.bin ${ARGS}" make_desktop_entry ${PN} EDuke32 ${PN} use editor && make_desktop_entry mapster32 Mapster32 mapster32 dodoc build/buildlic.txt dodir "${GAMES_LOGDIR}" # Install expansion pack shortcuts if use dukedc; then local EXPARGS="-g dukedc.grp" use textures && EXPARGS+=" -g dukedc_hrp.zip" games_make_wrapper "${PN}-dukedc" "${GAMES_BINDIR}/${PN}.bin ${ARGS} ${EXPARGS}" make_desktop_entry "${PN}-dukedc" "EDuke32 - Duke It Out in D.C." fi 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 }