alpine-repo/sakamoto/osu/APKBUILD

143 lines
5.2 KiB
Plaintext

# Contributor: knuxify <knuxify@gmail.com>
# Contributor: Dominika Liberda <ja@sdomi.pl>
# Maintainer: knuxify <knuxify@gmail.com>
pkgname=osu
pkgver=2022.405.0
pkgrel=0
_runtime_ver=3.16
_realmver=10.11.1 # https://github.com/realm/realm-dotnet/releases
_realmcorever=11.13.0 # https://github.com/realm/realm-core/tags
# Taken from dotnet6-build APKBUILD
_get_arch() {
case $1 in
x86_64) local arch=x64;;
aarch64) local arch=arm64;;
armv7|armhf) local arch=arm;;
esac
echo $arch
}
_dotnet_arch=$(_get_arch $CARCH)
pkgdesc="rhythm is just a *click* away!"
url="https://osu.ppy.sh"
arch="x86_64" # others blocked by badly linked libraries or missing dotnet6
license="MIT AND CC-BY-NC-4.0 AND proprietary"
depends="
dotnet6-apphost-pack
dotnet6-runtime
alsa-lib-dev
sdl2
stbi-sharp
$pkgname-data
"
makedepends="dotnet6-sdk
bash cmake flex-dev libuv-dev lld openssl-dev zlib-dev
"
install="$pkgname.pre-install"
source="osu-lazer-$pkgver.tar.gz::https://github.com/ppy/osu/archive/refs/tags/$pkgver.tar.gz
realm-dotnet-$_realmver.tar.gz::https://github.com/realm/realm-dotnet/archive/refs/tags/$_realmver.tar.gz
realm-core-$_realmcorever.tar.gz::https://github.com/realm/realm-core/archive/refs/tags/v$_realmcorever.tar.gz
osu-launcher
osu-lazer.desktop
x-osu-lazer.xml
"
subpackages="$pkgname-lang $pkgname-data::noarch"
builddir="$srcdir/osu-$pkgver"
options="!check" # requires the game to be build in debug mode? todo
build() {
# Build realm-dotnet wrapper lib
cd "$srcdir"/realm-dotnet-$_realmver/wrappers
rm -r realm-core
mv "$srcdir"/realm-core-$_realmcorever realm-core
# Apply build hacks; these would probably be better off as a patch but I'm lazy
sed -i 's/dev_t/uint_fast64_t/g' realm-core/src/realm/util/file.hpp
sed -i 's/dev_t/uint_fast64_t/g' realm-core/src/realm/util/file_mapper.cpp
sed -i 's/dev_t/uint_fast64_t/g' realm-core/src/realm/util/file.cpp
sed -i 's/#if REALM_PLATFORM_APPLE || (defined(__linux__) && \!REALM_ANDROID)/\#if 0/' realm-core/src/realm/util/backtrace.cpp
sed -i 's/\#if (defined _GNU_SOURCE && !REALM_ANDROID) || REALM_PLATFORM_APPLE/\#if 0/' realm-core/src/realm/util/thread.cpp
sed -i 's/\#elif !REALM_ANDROID && _GNU_SOURCE/\#elif 0/' realm-core/src/realm/util/basic_system_errors.cpp
sed -i 's/#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L/\#if 1/' realm-core/src/realm/util/file.cpp
./build.sh \
-DREALM_USE_SYSTEM_OPENSSL=true \
-DOPENSSL_INCLUDE_DIR=/usr/include \
-DOPENSSL_SSL_LIBRARY=/usr/lib/libssl.so \
-DOPENSSL_CRYPTO_LIBRARY=/usr/lib/libcrypto.so
# Build osu-lazer
cd "$builddir"
output="./osu.Desktop/bin/Release/net6.0/alpine.$_runtime_ver-$_dotnet_arch"
DOTNET_CLI_TELEMETRY_OPTOUT=1 dotnet publish osu.Desktop \
--framework net6.0 \
--configuration Release \
--runtime alpine.$_runtime_ver-$_dotnet_arch \
--output $output \
--no-self-contained \
/property:Version=$pkgver
}
check() {
dotnet test ./*.Tests/bin/Release/*/*.Tests.dll
}
package() {
# Compiled binaries, localization files, debug info and rulesets
mkdir -p "$pkgdir"/usr/lib/$pkgname
cd "$builddir"/osu.Desktop/bin/Release/net6.0
cp -r "alpine.$_runtime_ver-$_dotnet_arch"/* "$pkgdir"/usr/lib/$pkgname/
# Remove some precompiled binaries, replace incompatible ones
for lib in libSDL2.so libstbi.so; do
if [ -e "$pkgdir"/usr/lib/$pkgname/$lib ]; then
rm "$pkgdir"/usr/lib/$pkgname/$lib
fi
done
# Replace librealm-wrappers
mv "$srcdir"/realm-dotnet-$_realmver/wrappers/cmake/Linux/src/librealm-wrappers.so \
"$pkgdir"/usr/lib/$pkgname/librealm-wrappers.so
# Wrapper script
install -Dm755 "$srcdir"/osu-launcher \
"$pkgdir"/usr/bin/osu-lazer
# Icon, desktop file and mime types
install -Dm644 "$builddir"/assets/lazer.png \
"$pkgdir"/usr/share/pixmaps/osu-lazer.png
install -Dm644 "$srcdir"/osu-lazer.desktop \
"$pkgdir"/usr/share/applications/osu-lazer.desktop
install -Dm644 "$srcdir"/x-osu-lazer.xml \
"$pkgdir"/usr/share/mime/packages/x-osu-lazer.xml
}
lang() {
for dir in "$pkgdir"/usr/lib/osu/*; do
if [ ! -d $dir ]; then continue; fi
lang=$(basename $dir)
case $lang in
'osu'|'ref'|'linux-'*|'alpine-'*|'en') continue;;
*) amove /usr/lib/osu/$lang;;
esac
done
}
data() {
pkgdesc="$pkgdesc (data files)"
amove /usr/lib/osu/osu.Game.Resources.dll
amove /usr/lib/osu/osu.Game.Rulesets.*
}
sha512sums="
e107f5c159f272bb91c73c7686b176067281ac145ab88b4ebd687234f47ffee72f1eee3148df54300a00d184670f6b7c26fabc0b32db88b65219737e896ea0e2 osu-lazer-2022.405.0.tar.gz
9565d2ff6447f889a67596fbb38602fb43e90c6f15b1da1624804e59c167b397fbe40ddb017f8b908797f33f64751e9e7ee8f4ba1f5d7ab807743fdfcf6f889b realm-dotnet-10.11.1.tar.gz
76cde6fa4e7f8b35d01b86f3e6b8824944c8033c66b17b0180c9608a4c2a67c7157d15d85a7fc3cfd2b8d2491b8cca278d418c04c99188811e4a7784d8be61c5 realm-core-11.13.0.tar.gz
faaaa02570578690f328906a4a6bbf8885374f4ffab40f333df35cfd22bf57a472b65b9dc904d69decfbe1867bf0221a1dcdc6d780254ae332f07eb3dead6643 osu-launcher
64020ebec01220cd7f4fa777c3b64ba149e8df8cc0c86613e3ad8d5c1fc0d3d88582bc460e0a581e62d58b91ecc8ac33b5712f27b3bfa1b75caa3be578468be5 osu-lazer.desktop
0f5e702f8d52425eca4eea45b40b60dc0d6a8a1c11624a2ddfd647b908e1c5e0c9c988b68dcbbf0841fedd05a35b2c7c53cc1edd5f2c509e1c527f228bf768f5 x-osu-lazer.xml
"