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.
179 lines
4.9 KiB
179 lines
4.9 KiB
# Copyright 1999-2021 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
|
|
LUA_COMPAT=( lua5-1 )
|
|
|
|
inherit lua-single mono-env xdg-utils
|
|
|
|
MY_PV=release-${PV}
|
|
#MY_PV=playtest-${PV}
|
|
|
|
DESCRIPTION="A free RTS engine supporting games like Command & Conquer, Red Alert and Dune2k"
|
|
HOMEPAGE="https://www.openra.net/"
|
|
|
|
# This sed one-liner was used to generate the SRC_URI list
|
|
# below. Ideally we would package these DLLs separately instead but
|
|
# Gentoo Dotnet doesn't seem to be in great shape right now.
|
|
#
|
|
# sed -n -r -e 's@.*curl.*(https:[^ ]+/([^/]+)/([^.]+)([^ ]+)).*@\1 -> \3-\2\4@p' \
|
|
# -e 's@.*noget\.sh ([^ ]+) ([^ ]+).*@https://www.nuget.org/api/v2/package/\1/\2 -> \1-\2.zip@p' \
|
|
# "${S}"/thirdparty/fetch-thirdparty-deps.sh | grep -v 'NUnit\|StyleCop' | sort
|
|
|
|
SRC_URI="https://github.com/OpenRA/OpenRA/archive/${MY_PV}.tar.gz -> ${P}.tar.gz
|
|
https://github.com/OpenRA/Eluant/releases/download/20160124/Eluant.dll -> Eluant-20160124.dll
|
|
https://github.com/OpenRA/OpenAL-CS/releases/download/20151227/OpenAL-CS.dll.config -> OpenAL-CS-20151227.dll.config
|
|
https://github.com/OpenRA/OpenAL-CS/releases/download/20151227/OpenAL-CS.dll -> OpenAL-CS-20151227.dll
|
|
https://github.com/OpenRA/SDL2-CS/releases/download/20161223/SDL2-CS.dll.config -> SDL2-CS-20161223.dll.config
|
|
https://github.com/OpenRA/SDL2-CS/releases/download/20161223/SDL2-CS.dll -> SDL2-CS-20161223.dll
|
|
https://www.nuget.org/api/v2/package/FuzzyLogicLibrary/1.2.0 -> FuzzyLogicLibrary-1.2.0.zip
|
|
https://www.nuget.org/api/v2/package/MaxMind.Db/2.0.0 -> MaxMind.Db-2.0.0.zip
|
|
https://www.nuget.org/api/v2/package/Open.Nat/2.1.0 -> Open.Nat-2.1.0.zip
|
|
https://www.nuget.org/api/v2/package/rix0rrr.BeaconLib/1.0.1 -> rix0rrr.BeaconLib-1.0.1.zip
|
|
https://www.nuget.org/api/v2/package/SharpFont/4.0.1 -> SharpFont-4.0.1.zip
|
|
https://www.nuget.org/api/v2/package/SharpZipLib/0.86.0 -> SharpZipLib-0.86.0.zip"
|
|
|
|
# Engine is GPL-3, dependent DLLs are mixed.
|
|
LICENSE="GPL-3 Apache-2.0 BSD GPL-2 MIT"
|
|
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
IUSE="+debug geoip"
|
|
|
|
REQUIRED_USE="${LUA_REQUIRED_USE}"
|
|
|
|
RESTRICT="mirror test"
|
|
|
|
MONO_DEP=">=dev-lang/mono-4.2"
|
|
BDEPEND="
|
|
app-arch/unzip
|
|
${MONO_DEP}
|
|
"
|
|
DEPEND="
|
|
dev-dotnet/libgdiplus
|
|
${MONO_DEP}
|
|
"
|
|
RDEPEND="${DEPEND}
|
|
app-misc/ca-certificates
|
|
${LUA_DEPS}
|
|
media-libs/freetype:2
|
|
media-libs/libsdl2[opengl,video]
|
|
media-libs/openal
|
|
geoip? ( net-misc/geoipupdate )"
|
|
|
|
S="${WORKDIR}/OpenRA-${MY_PV}"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-system-geoip.patch
|
|
)
|
|
|
|
DOCS=(
|
|
AUTHORS
|
|
CODE_OF_CONDUCT.md
|
|
CONTRIBUTING.md
|
|
README.md
|
|
)
|
|
|
|
pkg_setup() {
|
|
lua-single_pkg_setup
|
|
mono-env_pkg_setup
|
|
}
|
|
|
|
src_unpack() {
|
|
local DOWNLOADS="${S}"/thirdparty/download
|
|
mkdir -p "${DOWNLOADS}" || die
|
|
|
|
# Stub out unnecessary development dependencies.
|
|
touch "${DOWNLOADS}"/{{nunit.framework,StyleCop{,Plus}}.dll,nunit3-console.exe} || die
|
|
|
|
for a in ${A}; do
|
|
case ${a} in
|
|
# Unpack engine sources.
|
|
${P}.tar.gz) unpack ${a} ;;
|
|
|
|
# Symlink other downloads, Makefile will extract and copy.
|
|
*) ln -snf "${DISTDIR}/${a}" "${DOWNLOADS}/${a%-[0-9]*}${a##*[0-9]}" || die ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
src_prepare() {
|
|
# Stub out attempts to download anything.
|
|
sed -i -r 's/^\s*(curl|wget)\b/: #\1/' thirdparty/{fetch-thirdparty-deps,noget}.sh || die
|
|
|
|
# Extract what is needed from the downloads.
|
|
emake cli-dependencies
|
|
|
|
default
|
|
}
|
|
|
|
src_compile() {
|
|
emake $(usex debug "" DEBUG=false)
|
|
emake VERSION=${MY_PV} version man-page
|
|
}
|
|
|
|
src_install() {
|
|
emake $(usex debug "" DEBUG=false) \
|
|
prefix="${EPREFIX}"/usr \
|
|
gameinstalldir='$(prefix)'/share/${PN} \
|
|
DESTDIR="${D}" \
|
|
VERSION=${MY_PV} \
|
|
install \
|
|
install-linux-mime \
|
|
install-linux-shortcuts \
|
|
install-man-page
|
|
|
|
einstalldocs
|
|
}
|
|
|
|
pkg_postinst() {
|
|
xdg_icon_cache_update
|
|
xdg_desktop_database_update
|
|
xdg_mimeinfo_database_update
|
|
|
|
if [[ ! -s ${EROOT}/usr/share/GeoIP/GeoLite2-Country.mmdb ]]; then
|
|
echo
|
|
ewarn "Multiplayer server locations will show as unknown until you install"
|
|
|
|
if use geoip; then
|
|
ewarn "a GeoIP database. Run emerge --config ${CATEGORY}/${PN}"
|
|
ewarn "occasionally to fetch one and keep it current."
|
|
else
|
|
ewarn "a GeoIP database. Start by enabling the geoip USE flag."
|
|
fi
|
|
fi
|
|
|
|
if [[ ! -d ${EROOT}/usr/share/.mono/certs ]]; then
|
|
echo
|
|
ewarn "The multiplayer server listing will not work at all until you install"
|
|
ewarn "CA certificates using Mono's cert-sync. Run emerge --config"
|
|
ewarn "${CATEGORY}/${PN} occasionally to set them up and keep them"
|
|
ewarn "current."
|
|
fi
|
|
}
|
|
|
|
pkg_postrm() {
|
|
xdg_icon_cache_update
|
|
xdg_desktop_database_update
|
|
xdg_mimeinfo_database_update
|
|
}
|
|
|
|
pkg_config() {
|
|
if use geoip; then
|
|
ebegin "Updating GeoIP database"
|
|
geoipupdate -d "${EROOT}"/usr/share/GeoIP
|
|
eend $?
|
|
fi
|
|
|
|
ebegin "Updating Mono CA certificates"
|
|
cert-sync --quiet "${EROOT}"/etc/ssl/certs/ca-certificates.crt
|
|
eend $?
|
|
|
|
if [[ -n ${ROOT} ]]; then
|
|
echo
|
|
ewarn "Mono's cert-sync cannot write to your ROOT system so you must manually"
|
|
ewarn "copy the certificates from ${EPREFIX}/usr/share/.mono to ${EROOT}/usr/share/.mono."
|
|
fi
|
|
}
|