Subversion Repositories KardasA Overlay

Compare Revisions

Ignore whitespace Rev 156 → Rev 157

/games-rpg/amnesia-tdd/amnesia-tdd-1.2.1.ebuild
0,0 → 1,287
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
 
EAPI=4
 
inherit check-reqs eutils games unpacker
 
MY_PN="${PN//-/_}"
MY_REV="-2"
MY_ARCH="${ARCH/amd64/x86_64}"
 
DESCRIPTION="Amnesia: The Dark Descent is a first person survival horror. A game about immersion, discovery and living through a nightmare."
HOMEPAGE="http://www.amnesiagame.com/"
SRC_URI="${MY_PN}_${PV}${MY_REV}.sh"
 
RESTRICT="fetch strip"
LICENSE="Frictional_Games-EULA"
 
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="doc linguas_de linguas_es linguas_fr linguas_it linguas_ru"
 
DEPEND="app-arch/xz-utils"
RDEPEND="media-libs/freealut
>=media-libs/glew-1.5
media-libs/jpeg:62
media-libs/libpng:1.2
media-libs/libtheora
media-libs/libvorbis
media-libs/openal
media-libs/sdl-image
media-libs/sdl-ttf
sys-libs/zlib
x11-libs/libxcb
x11-libs/libXext
virtual/glu
virtual/opengl"
 
CHECKREQS_DISK_BUILD="3500M"
 
S="${WORKDIR}/${PN}"
 
GAMEDIR="${GAMES_PREFIX_OPT}/${PN}"
 
pkg_nofetch() {
einfo ""
einfo "Please buy and download \"${SRC_URI}\" from:"
einfo " ${HOMEPAGE}"
einfo "and move/link it to \"${DISTDIR}\""
einfo ""
}
 
pkg_setup() {
games_pkg_setup
}
 
src_unpack() {
einfo "\nUnpacking files. This will take several minutes.\n"
mkdir "${S}" || die "mkdir "${S}" failed"
cd "${S}" || die "cd '${S}' failed"
 
unpack_makeself || die "unpack_makeself failed"
 
mv "instarchive_all" "../${P}.tar.lzma" || die "move 'instarchive_all' failed"
mv "instarchive_all_${MY_ARCH}" "../${P}-${MY_ARCH}.tar.lzma" || die "move 'instarchive_all_${MY_ARCH}' failed"
 
cd "${WORKDIR}" || die "cd '${WORKDIR}' failed"
 
echo ">>> Unpacking ./${P}.tar.lzma to ${WORKDIR}"
#Standard unpack fails due to poor quality of archive
xz -F lzma -d -c "./${P}.tar.lzma" 2>/dev/null | tar xf - || die "unpacking '${P}.tar.lzma' failed"
rm "./${P}.tar.lzma"
 
unpack "./${P}-${MY_ARCH}.tar.lzma" || die "unpack '${P}-${MY_ARCH}.tar.lzma' failed"
rm "./${P}-${MY_ARCH}.tar.lzma"
}
 
src_prepare() {
# libfltk.so.1.1 is needed because it's no longer in portage
mv "${WORKDIR}"/Amnesia/libs*/all/libfltk* "${WORKDIR}"/Amnesia/libs*/ || die "libfltk extraction failed"
 
#reset ${S} for outprocessing
rm -rf "${S}"
mv "${WORKDIR}/Amnesia" "${S}" || die "mv 'Amnesia' failed"
cd ${S}
 
# Files to remove.
REMOVE="libs*/*
*.pdf
*.rtf
*.sh"
 
# Files to keep.
# Bundled LibIL (media-libs/devil) isn't in portage as too old
KEEP="libs*/libIL*
libs*/libfltk*"
 
# Collect infos about languages...
LINGUAS_ARRAY=() # Linguas - string: E.g.: "linguas_en"
LANG_ARRAY=() # Lang - string: E.g.: "en"
LANGUAGE_ARRAY=() # Language - string: E.g.: "english"
LANGUAGE_SHORT_ARRAY=() # Language Short - string: E.g.: "eng"
USE_ARRAY=() # Used - bool (0,1)
 
local linguas_in_use="0"
for use in ${IUSE}
do
if [[ "${use%%_*}" == "linguas" ]]
then
local tmp="${use}"
LINGUAS_ARRAY=(${LINGUAS_ARRAY[@]} "${tmp}")
 
tmp="${tmp##linguas_}"
LANG_ARRAY=(${LANG_ARRAY[@]} "${tmp}")
 
case "${tmp}" in
"de") tmp="german";;
"es") tmp="spanish";;
"fr") tmp="french";;
"it") tmp="italian";;
"ru") tmp="russian";;
*) tmp="";;
esac
LANGUAGE_ARRAY=(${LANGUAGE_ARRAY[@]} "${tmp}")
LANGUAGE_SHORT_ARRAY=(${LANGUAGE_SHORT_ARRAY[@]} "${tmp:0:3}")
 
if use ${use}
then
USE_ARRAY=(${USE_ARRAY[@]} "1")
linguas_in_use="$(( ${linguas_in_use} + 1 ))"
else
USE_ARRAY=(${USE_ARRAY[@]} "0")
fi
fi
done
 
# ...then process them.
local n="0"
local docs_eng="0"
while [[ "${n}" -lt "${#LINGUAS_ARRAY[@]}" ]]
do
if [[ "${USE_ARRAY[${n}]}" -gt "0" ]]
then
# If only one lang is selected, use it as default.
if [[ "${linguas_in_use}" == "1" ]]
then
sed -e "s#english.lang#${LANGUAGE_ARRAY[${n}]}.lang#g" \
-i config/*main_init.cfg || die "sed \"config/*main_init.cfg\" failed"
fi
else
REMOVE="${REMOVE} $(find config -type f -name "*${LANGUAGE_ARRAY[${n}]}.lang")"
if [[ -d "lang/${LANGUAGE_SHORT_ARRAY[${n}]}" ]]
then
REMOVE="${REMOVE} lang/${LANGUAGE_SHORT_ARRAY[${n}]}"
fi
fi
 
if use doc
then
if [[ -f "EULA_${LANG_ARRAY[${n}]}.rtf" && -f "Manual_${LANG_ARRAY[${n}]}.pdf" ]]
then
KEEP="${KEEP} EULA_${LANG_ARRAY[${n}]}.rtf Manual_${LANG_ARRAY[${n}]}.pdf"
else
local docs_eng="1"
fi
fi
 
n="$(( ${n} + 1 ))"
done
 
if use doc && [[ ( "${linguas_in_use}" == "0" || "${docs_eng}" != "0" ) ]]
then
KEEP="${KEEP} EULA_en.rtf Manual_en.pdf Remember*.pdf"
fi
 
einfo " Removing useless files ..."
for remove in ${REMOVE}
do
local removable="1"
for keep in ${KEEP}
do
if [[ "${remove}" == "${keep}" && "${removable}" == "1" ]]
then
local removable="0"
fi
done
 
if [[ "${removable}" == "1" ]]
then
rm -r "${S}/"${remove} &> /dev/null
fi
done
 
if use amd64
then
mv "Amnesia.bin64" "Amnesia.bin" || die "mv \"Amnesia.bin64\" failed"
mv "Launcher.bin64" "Launcher.bin" || die "mv \"Launcher.bin64\" failed"
fi
}
 
src_install() {
# Install data
insinto "${GAMEDIR}"
 
einfo " Installing game data files ..."
for directory in $(find * -maxdepth 0 -type d ! -name "libs*")
do
doins -r ${directory} || die "doins game data files failed"
done
 
# Other files
find . -maxdepth 1 -type f ! -name "*.bin" \
! -name "*.pdf" \
! -name "*.png" \
! -name "*.rtf" \
! -name "*.sh" \
-exec doins '{}' \; || die "doins other files failed"
 
 
# Install libraries and executables
einfo " Installing libraries and executables ..."
 
if use amd64
then
local libsdir="${GAMEDIR}/libs64"
else
local libsdir="${GAMEDIR}/libs"
fi
 
exeinto "${libsdir}"
doexe libs*/* || die "doexe \"libs\" failed"
dosym "/usr/$(get_libdir)/libGLEW.so" "${libsdir}/libGLEW.so.1.5"
 
exeinto "${GAMEDIR}"
doexe *.bin || die "doexe \".bin\" binaries failed"
 
# Make game wrapper
local wrapper="${S}/${PN}"
local ext="${PN}-justine"
 
cat << EOF > "${wrapper}" || die "echo failed"
#!/bin/sh
if [[ "\$(basename "\${0}")" == "${ext}" ]]
then
params="ptest \${@}"
fi
 
if [[ -w "\${HOME}/.frictionalgames/Amnesia/Main/main_settings.cfg" ]]
then
exec ./Amnesia.bin \${params:-"\${@}"}
else
exec ./Launcher.bin "\${@}"
fi
EOF
 
# Install wrapper
dogamesbin "${wrapper}" || die "dogamesbin ${wrapper} failed"
dosym "${PN}" "${GAMES_BINDIR}/${ext}"
 
# Install icon and desktop file
newicon "Amnesia.png" "${PN}.png" || die "newicon failed"
make_desktop_entry "${PN}" "Amnesia: The Dark Descent" "/usr/share/pixmaps/${PN}.png" || die "make_desktop_entry failed"
make_desktop_entry "${ext}" "Amnesia: The Dark Descent - Justine" "/usr/share/pixmaps/${PN}.png" || die "make_desktop_entry failed"
 
# Install documentation
if use doc
then
dodoc *.rtf *.pdf || die "dodoc failed"
fi
 
# Setting permissions.
einfo " Setting permissions ..."
prepgamesdirs
}
 
pkg_postinst() {
ewarn ""
ewarn "Amnesia: The Dark Descent needs video drivers that provide a complete".
ewarn "GLSL 1.20 implementation. For more information, please visit:"
ewarn "http://www.frictionalgames.com/forum/thread-3760.html"
ewarn ""
ewarn "--------------------------------------------------------------------"
ewarn ""
ewarn "Saved games from previous versions may not be fully compatible."
ewarn ""
}