# Copyright 2015-2016 Julian Ospald # Distributed under the terms of the GNU General Public License v2 require desktop-utils gtk-icon-cache freedesktop-desktop freedesktop-mime require lua [ whitelist="5.1" multibuild=false ] require github [ user=OpenRA project=OpenRA tag=release-${PV} ] SUMMARY="A free RTS engine supporting games like Command & Conquer and Red Alert" HOMEPAGE="http://www.openra.net/" ## this is a massive amount of 3rd party deps that would otherwise ## be fetched during build time NG_SRC="https://nuget.org/api/v2/package" # 3rd party deps StyleCopPlus_MSBuild="${NG_SRC}/StyleCopPlus.MSBuild/4.7.49.5 -> StyleCopPlus_MSBuild-4.7.49.5.zip" StyleCop_MSBuild="${NG_SRC}/StyleCop.MSBuild/4.7.49.0 -> StyleCop_MSBuild-4.7.49.0.zip" SharpZipLib="${NG_SRC}/SharpZipLib/0.86.0 -> SharpZipLib-0.86.0.zip" MaxMind_Db="${NG_SRC}/MaxMind.Db/1.1.0.0 -> MaxMind_Db-1.1.0.0.zip" Newtonsoft_Json="${NG_SRC}/Newtonsoft.Json/7.0.1 -> Newtonsoft_Json-7.0.1.zip" RestSharp="${NG_SRC}/RestSharp/105.2.3 -> RestSharp-105.2.3.zip" MaxMind_GeoIP2="${NG_SRC}/MaxMind.GeoIP2/2.3.1 -> MaxMind_GeoIP2-2.3.1.zip" SharpFont="${NG_SRC}/SharpFont/3.0.1 -> SharpFont-3.0.1.zip" NUnit="${NG_SRC}/NUnit/2.6.4 -> NUnit-2.6.4.zip" Mono_Nat="${NG_SRC}/Mono.Nat/1.2.21 -> Mono_Nat-1.2.21.zip" FuzzyLogicLibrary="${NG_SRC}/FuzzyLogicLibrary/1.2.0 -> FuzzyLogicLibrary-1.2.0.zip" SDL2CS="https://github.com/OpenRA/SDL2-CS/releases/download/20150709/SDL2-CS.dll -> SDL2-CS.dll.20150709" Eluant="https://github.com/OpenRA/Eluant/releases/download/20140425/Eluant.dll -> Eluant.dll.20140425" SmartIrc4net="${NG_SRC}/SmartIrc4net/0.4.5.1 -> SmartIrc4net-0.4.5.1.zip" # unfortunately, this may randomly change GEO_IP_DB="http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz -> GeoLite2-Country-2015-10-18.mmdb.gz" DOWNLOADS="${DOWNLOADS} ${StyleCopPlus_MSBuild} ${StyleCop_MSBuild} ${SharpZipLib} ${MaxMind_Db} ${Newtonsoft_Json} ${RestSharp} ${MaxMind_GeoIP2} ${SharpFont} ${NUnit} ${Mono_Nat} ${FuzzyLogicLibrary} ${SDL2CS} ${Eluant} ${SmartIrc4net} ${GEO_IP_DB} " LICENCES="GPL-3" SLOT="0" PLATFORMS="~amd64 ~x86" MYOPTIONS=" ( providers: ijg-jpeg jpeg-turbo ) [[ number-selected = exactly-one ]] " DEPENDENCIES=" build: virtual/unzip build+run: dev-dotnet/libgdiplus dev-lang/mono[>=3.2] media-libs/freetype:2 media-libs/SDL:2[X] media-libs/openal x11-dri/mesa providers:ijg-jpeg? ( media-libs/jpeg:= ) providers:jpeg-turbo? ( media-libs/libjpeg-turbo ) " WORK=${WORKBASE}/OpenRA-release-${PV} src_unpack() { unpack openra-release-${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 } src_configure() { :; } src_prepare() { # register game-version emake VERSION="${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}"/ } src_compile() { emake VERSION="${PV}" core tools } src_install() { emake \ datadir="/usr/share" \ bindir="/usr/$(exhost --target)/bin" \ libdir="/usr/$(exhost --target)/libexec" \ VERSION="${PV}" \ DESTDIR="${IMAGE}" \ install-all install-linux-scripts install-linux-mime install-linux-icons exeinto /usr/$(exhost --target)/libexec/openra doexe Eluant.dll.config # desktop entries install_desktop_entry "Exec=${PN} Game.Mod=cnc" "Name=OpenRA CNC" install_desktop_entry "Exec=${PN} Game.Mod=ra" "Name=OpenRA RA" install_desktop_entry "Exec=${PN} Game.Mod=d2k" "Name=OpenRA Dune2k" install_desktop_entry "Exec=${PN}-editor" "Name=OpenRA Map Editor" } pkg_postinst() { gtk-icon-cache_pkg_postinst freedesktop-mime_pkg_postinst freedesktop-desktop_pkg_postinst } pkg_postrm() { gtk-icon-cache_pkg_postrm freedesktop-desktop_pkg_postrm freedesktop-mime_pkg_postrm }