hasufell-repository/packages/games-strategy/openra/openra-build.exlib

158 lines
4.8 KiB
Bash

# Copyright 2016 Julian Ospald <hasufell@posteo.de>
# Distributed under the terms of the GNU General Public License v2
require desktop-utils gtk-icon-cache freedesktop-desktop freedesktop-mime
require alternatives
export_exlib_phases src_unpack src_prepare src_configure src_compile src_install pkg_postinst pkg_postrm
SUMMARY="A free RTS engine supporting games like Command & Conquer and Red Alert"
HOMEPAGE="http://www.openra.net/"
LICENCES="GPL-3"
MYOPTIONS="
( providers: ijg-jpeg jpeg-turbo ) [[ number-selected = exactly-one ]]
"
DEPENDENCIES="
build:
virtual/unzip
build+run:
dev-dotnet/libgdiplus
dev-lang/mono[>=4.2]
media-libs/SDL:2[X]
media-libs/freetype:2
media-libs/openal
x11-dri/mesa
providers:ijg-jpeg? ( media-libs/jpeg:= )
providers:jpeg-turbo? ( media-libs/libjpeg-turbo )
run:
!games-strategy/openra:0
x11-apps/xdg-utils
suggestion:
gnome-desktop/zenity [[ description = [ Graphical error dialogs ] ]]
"
WORK=${WORKBASE}/OpenRA-${SLOT}-${PV}
MV_FILES=(
/usr/share/applications/openra.desktop
/usr/share/applications/openra-replays.desktop
/usr/share/applications/openra-join-servers.desktop
/usr/share/icons/hicolor/128x128/apps/openra.png
/usr/share/icons/hicolor/16x16/apps/openra.png
/usr/share/icons/hicolor/32x32/apps/openra.png
/usr/share/icons/hicolor/48x48/apps/openra.png
/usr/share/icons/hicolor/64x64/apps/openra.png
/usr/share/icons/hicolor/scalable/apps/openra.svg
)
openra-build_src_unpack() {
unpack openra-${SLOT}-${PV}.tar.gz
# this is pure crapshit, but it will successfully die
# if upstream has added/changed files
edo cd "${WORK}"/thirdparty
edo sed -i \
-e 's/get()/furz()/' \
-e 's|curl |: |' \
fetch-thirdparty-deps.sh
edo mkdir "${WORK}"/thirdparty/download
get() {
# don't add dies here
local archive="${1/./_}"
local version="${2}"
mkdir -p "${WORK}"/thirdparty/download/${1}
unzip -o -qq "${FETCHEDDIR}"/${archive}-${version}.zip \
-d "${WORK}"/thirdparty/download/${1}
}
export -f get
edo ./fetch-thirdparty-deps.sh
unset get
edo cd "${WORK}"/thirdparty/download
edo cp "${FETCHEDDIR}"/${SDL2CS##* } ./SDL2-CS.dll
edo cp "${FETCHEDDIR}"/${Eluant##* } ./Eluant.dll
edo cp "${FETCHEDDIR}"/${GEO_IP_DB##* } ./GeoLite2-Country.mmdb.gz
edo cp "${FETCHEDDIR}"/${OpenAL_CS##* } ./OpenAL-CS.dll
edo cp "${FETCHEDDIR}"/${OpenAL_CS_config##* } ./OpenAL-CS.dll.config
}
openra-build_src_configure() { :; }
openra-build_src_prepare() {
# register game-version
emake VERSION="${SLOT}-${PV}" version
edo sed \
-e "s/@LIBLUA51@/liblua5.1.so/" \
"${WORK}"/thirdparty/Eluant.dll.config.in > Eluant.dll.config
edo cd "${WORK}"/thirdparty/download
edo cp *.dll *.dll.config GeoLite2-Country.mmdb.gz "${WORK}"/
}
openra-build_src_compile() {
emake VERSION="${SLOT}-${PV}" core tools
}
openra-build_src_install() {
emake \
datadir="/usr/share" \
bindir="/usr/$(exhost --target)/bin" \
libdir="/usr/$(exhost --target)/libexec" \
gameinstalldir="/usr/$(exhost --target)/libexec/${PN}-${SLOT}" \
VERSION="${SLOT}-${PV}" \
DESTDIR="${IMAGE}" \
install-all install-linux-scripts install-linux-mime \
install-linux-icons install-linux-desktop install-linux-appdata
exeinto /usr/$(exhost --target)/libexec/${PN}-${SLOT}
doexe Eluant.dll.config
# fix desktop files
edo sed -i \
-e "s#^Name=.*#Name=OpenRA (${SLOT})#" \
-e "/^Exec=/s#openra#openra-${SLOT}#" \
-e "s#^Icon=.*#Icon=openra-${SLOT}#" \
"${IMAGE%/}"/usr/share/applications/*.desktop
# make sure slots don't have file collisions
local i
for i in /usr/$(exhost --target)/bin/openra \
/usr/$(exhost --target)/bin/openra-server \
/usr/share/mime/packages/openra.xml \
/usr/share/appdata/openra.appdata.xml
do
edo mv "${IMAGE%/}"${i} "${IMAGE%/}"${i}-${SLOT}
done
unset i
for i in ${MV_FILES[@]}
do
edo mv "${IMAGE%/}"${i} "${IMAGE%/}"${i%.*}-${SLOT}.${i##*.}
done
# set up alternatives
alternatives_for _openra ${SLOT} ${PV} \
/usr/$(exhost --target)/bin/openra{,-${SLOT}} \
/usr/$(exhost --target)/bin/openra-server{,-${SLOT}} \
/usr/share/appdata/openra.appdata.xml{,-${SLOT}} \
/usr/share/mime/packages/openra.xml{,-${SLOT}}
}
openra-build_pkg_postinst() {
alternatives_pkg_postinst
gtk-icon-cache_pkg_postinst
freedesktop-mime_pkg_postinst
freedesktop-desktop_pkg_postinst
}
openra-build_pkg_postrm() {
gtk-icon-cache_pkg_postrm
freedesktop-desktop_pkg_postrm
freedesktop-mime_pkg_postrm
}