fangorn/sunshine-qemu
public
ref:main
# Edit on GitHub: https://github.com/LizardByte/Sunshine/blob/master/packaging/linux/Alpine/APKBUILD
# Reference: https://wiki.alpinelinux.org/wiki/APKBUILD_Reference
: "${_run_unit_tests:=false}" # Run the test suite and generate coverage; useful in CI.
: "${_coverage_dir:=}" # Copy CI coverage artifacts to this directory when set.
: "${_source_dir:=}" # Build an existing checkout instead of cloning; useful in CI.
: "${_commit:=@GITHUB_COMMIT@}"
pkgname=sunshine
pkgver=@PROJECT_VERSION@@SUNSHINE_SUB_VERSION@
pkgrel=0
pkgdesc="@PROJECT_DESCRIPTION@"
url="@PROJECT_HOMEPAGE_URL@"
arch="x86_64 aarch64"
license="GPL-3.0-only"
install="$pkgname.post-install $pkgname.post-upgrade"
options="net"
# Shared-library dependencies are added automatically by abuild. These packages
# provide runtime tools and Qt platform plugins that ELF dependency scanning
# cannot discover.
depends="
eudev
kmod
libcap-utils
qt6-qtbase-x11
xrandr
"
makedepends="
appstream
appstream-glib
build-base
cmake
curl-dev
desktop-file-utils
eudev-dev
freetype-dev
git
glib-dev
glslang
gnutls-dev
lame-dev
libass-dev
libcap-dev
libdrm-dev
libevdev-dev
libtool
libva-dev
libvorbis-dev
libx11-dev
libxcb-dev
libxfixes-dev
libxrandr-dev
libxtst-dev
linux-headers
mesa-dev
meson
miniupnpc-dev
nasm
nodejs
npm
numactl-dev
openssl-dev
opus-dev
pipewire-dev
pkgconf
pulseaudio-dev
py3-jinja2
qt6-qtbase-dev
qt6-qtsvg-dev
samurai
sdl2-dev
shaderc-dev
vulkan-loader-dev
wayland-dev
zlib-dev
"
checkdepends="
gcovr
imagemagick
xvfb-run
"
case "$_run_unit_tests" in
[tT]*) ;;
*) options="$options !check" ;;
esac
if [ -n "$_source_dir" ]; then
builddir="$_source_dir"
else
builddir="$srcdir/$pkgname"
source="$pkgname::git+@GITHUB_CLONE_URL@#commit=$_commit"
sha512sums="SKIP"
fi
_build_dir="$srcdir/cmake-build-alpine"
prepare() {
default_prepare
if [ -z "$_source_dir" ]; then
git -C "$builddir" submodule update --recursive --init --depth 1
fi
}
build() {
export BRANCH="@GITHUB_BRANCH@"
export BUILD_VERSION="@BUILD_VERSION@"
export COMMIT="$_commit"
_build_tests=OFF
case "$_run_unit_tests" in
[tT]*) _build_tests=ON ;;
esac
cmake -S "$builddir" -B "$_build_dir" -G Ninja -Wno-dev \
-DBUILD_DOCS=OFF \
-DBUILD_TESTS="$_build_tests" \
-DBUILD_WERROR=ON \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/usr \
-DFFMPEG_RELEASE_ASSET_NAME="Alpine-$CARCH-ffmpeg.tar.gz" \
-DSUNSHINE_ASSETS_DIR=share/sunshine \
-DSUNSHINE_ENABLE_CUDA=OFF \
-DCUDA_FAIL_ON_MISSING=OFF \
-DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
-DSUNSHINE_PUBLISHER_NAME=LizardByte \
-DSUNSHINE_PUBLISHER_WEBSITE=https://app.lizardbyte.dev \
-DSUNSHINE_PUBLISHER_ISSUE_URL=https://app.lizardbyte.dev/support
appstreamcli validate --no-net "$_build_dir/dev.lizardbyte.app.Sunshine.metainfo.xml"
appstream-util validate "$_build_dir/dev.lizardbyte.app.Sunshine.metainfo.xml"
desktop-file-validate "$_build_dir/dev.lizardbyte.app.Sunshine.desktop"
desktop-file-validate "$_build_dir/dev.lizardbyte.app.Sunshine.terminal.desktop"
cmake --build "$_build_dir"
}
check() {
cd "$_build_dir/tests"
GCOV_EXIT_AT_ERROR=1 xvfb-run -a ./test_sunshine \
--gtest_color=yes \
--gtest_output=xml:test_results.xml
cd "$_build_dir"
gcovr --gcov-executable gcov . -r "$builddir/src" \
--exclude-noncode-lines \
--exclude-throw-branches \
--exclude-unreachable-branches \
--xml-pretty \
-o coverage.xml
if [ -n "$_coverage_dir" ]; then
mkdir -p "$_coverage_dir/tests"
cp coverage.xml "$_coverage_dir/coverage.xml"
cp tests/test_results.xml "$_coverage_dir/tests/test_results.xml"
fi
./sunshine --version
}
package() {
DESTDIR="$pkgdir" cmake --install "$_build_dir"
install -Dm644 "$builddir/src_assets/linux/misc/60-sunshine.conf" \
"$pkgdir/etc/modules-load.d/60-sunshine.conf"
}