Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docker/archlinux.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ ENV BUILD_VERSION=${BUILD_VERSION}
ENV COMMIT=${COMMIT}
ENV CLONE_URL=${CLONE_URL}

# PKGBUILD options
ENV _use_cuda=true
ENV _run_unit_tests=true
ENV _support_headless_testing=true

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

RUN <<_SETUP
Expand Down
96 changes: 75 additions & 21 deletions packaging/linux/Arch/PKGBUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Edit on github: https://github.com/LizardByte/Sunshine/blob/master/packaging/linux/Arch/PKGBUILD
# Reference: https://wiki.archlinux.org/title/PKGBUILD

## options
: "${_run_unit_tests:=false}" # if set to true; unit tests will be executed post build; useful in CI
: "${_support_headless_testing:=false}"
: "${_use_cuda:=detect}" # nvenc

: "${_commit:=@GITHUB_COMMIT@}"

pkgname='sunshine'
pkgver=@PROJECT_VERSION@@SUNSHINE_SUB_VERSION@
pkgrel=1
Expand Down Expand Up @@ -41,7 +48,6 @@ makedepends=(
'appstream-glib'
'cmake'
'desktop-file-utils'
'cuda'
"gcc${_gcc_version}"
'git'
'make'
Expand All @@ -50,17 +56,46 @@ makedepends=(
)

optdepends=(
'cuda: Nvidia GPU encoding support'
'libva-mesa-driver: AMD GPU encoding support'
'xorg-server-xvfb: Virtual X server for headless testing'
)

provides=()
conflicts=()

source=("$pkgname::git+@GITHUB_CLONE_URL@#commit=@GITHUB_COMMIT@")
source=("$pkgname::git+@GITHUB_CLONE_URL@#commit=${_commit}")
sha256sums=('SKIP')

# Options Handling
if [[ "${_use_cuda::1}" == "d" ]] && pacman -Qi cuda &> /dev/null; then
_use_cuda=true
fi

if [[ "${_use_cuda::1}" == "t" ]]; then
makedepends+=('cuda')
optdepends+=(
'cuda: Nvidia GPU encoding support'
)
fi

if [[ "${_support_headless_testing::1}" == "t" ]]; then
optdepends+=(
'xorg-server-xvfb: Virtual X server for headless testing'
)
fi

# Ensure makedepends, checkdepends, optdepends are sorted
if [ -n "${makedepends+x}" ]; then
mapfile -t tmp_array < <(printf '%s\n' "${makedepends[@]}" | sort)
makedepends=("${tmp_array[@]}")
unset tmp_array
fi

if [ -n "${optdepends+x}" ]; then
mapfile -t tmp_array < <(printf '%s\n' "${optdepends[@]}" | sort)
optdepends=("${tmp_array[@]}")
unset tmp_array
fi

prepare() {
cd "$pkgname"
git submodule update --recursive --init
Expand All @@ -69,26 +104,39 @@ prepare() {
build() {
export BRANCH="@GITHUB_BRANCH@"
export BUILD_VERSION="@BUILD_VERSION@"
export COMMIT="@GITHUB_COMMIT@"
export COMMIT="${_commit}"

export CC="gcc-${_gcc_version}"
export CXX="g++-${_gcc_version}"

export CFLAGS="${CFLAGS/-Werror=format-security/}"
export CXXFLAGS="${CXXFLAGS/-Werror=format-security/}"

cmake \
-S "$pkgname" \
-B build \
-Wno-dev \
-D BUILD_DOCS=OFF \
-D BUILD_WERROR=ON \
-D CMAKE_INSTALL_PREFIX=/usr \
-D SUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
-D SUNSHINE_ASSETS_DIR="share/sunshine" \
-D SUNSHINE_PUBLISHER_NAME='LizardByte' \
-D SUNSHINE_PUBLISHER_WEBSITE='https://app.lizardbyte.dev' \
-D SUNSHINE_PUBLISHER_ISSUE_URL='https://app.lizardbyte.dev/support'
export MAKEFLAGS="${MAKEFLAGS:--j$(nproc)}"

local _cmake_options=(
-S "$pkgname"
-B build
-Wno-dev
-D BUILD_DOCS=OFF
-D BUILD_WERROR=ON
-D CMAKE_INSTALL_PREFIX=/usr
-D SUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine
-D SUNSHINE_ASSETS_DIR="share/sunshine"
-D SUNSHINE_PUBLISHER_NAME='LizardByte'
-D SUNSHINE_PUBLISHER_WEBSITE='https://app.lizardbyte.dev'
-D SUNSHINE_PUBLISHER_ISSUE_URL='https://app.lizardbyte.dev/support'
)

if [[ "${_use_cuda::1}" != "t" ]]; then
_cmake_options+=(-DSUNSHINE_ENABLE_CUDA=OFF -DCUDA_FAIL_ON_MISSING=OFF)
fi

if [[ "${_run_unit_tests::1}" != "t" ]]; then
_cmake_options+=(-DBUILD_TESTS=OFF)
fi

cmake "${_cmake_options[@]}"

appstreamcli validate "build/dev.lizardbyte.app.Sunshine.metainfo.xml"
appstream-util validate "build/dev.lizardbyte.app.Sunshine.metainfo.xml"
Expand All @@ -99,13 +147,19 @@ build() {
}

check() {
export CC="gcc-${_gcc_version}"
export CXX="g++-${_gcc_version}"
cd "${srcdir}/build"
./sunshine --version

if [[ "${_run_unit_tests::1}" == "t" ]]; then
export CC="gcc-${_gcc_version}"
export CXX="g++-${_gcc_version}"

cd "${srcdir}/build/tests"
./test_sunshine --gtest_color=yes
cd "${srcdir}/build/tests"
./test_sunshine --gtest_color=yes
fi
}

package() {
export MAKEFLAGS="${MAKEFLAGS:--j$(nproc)}"
make -C build install DESTDIR="$pkgdir"
}
3 changes: 1 addition & 2 deletions packaging/linux/Arch/sunshine.install
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
do_setcap() {
setcap cap_sys_admin+p $(readlink -f $(which sunshine))
setcap cap_sys_admin+p $(readlink -f usr/bin/sunshine)
}

do_udev_reload() {
Expand All @@ -19,4 +19,3 @@ post_upgrade() {
do_setcap
do_udev_reload
}

Loading