ref:aea219242dc0f46d0fb193f9839def91eb2b2c07

build(Linux): add aarch64 AppImage (#5627)

SHA: aea219242dc0f46d0fb193f9839def91eb2b2c07
Author: Dave Lane <42013603+ReenigneArcher@users.noreply.github.com>
Date: 2026-09-06 19:50
Parents: af505b7
3 files changed +48 -32
Type
.github/workflows/ci-linux.yml +38 −24
@@ -20,17 +20,23 @@
name: ${{ matrix.name }}
env:
APP_ID: dev.lizardbyte.app.Sunshine
M_ARCH: ${{ matrix.arch }}
VERSION: ${{ inputs.release_version }}
permissions:
contents: read
runs-on: ubuntu-${{ matrix.dist }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- name: AppImage
- name: AppImage-aarch64
EXTRA_ARGS: '--appimage-build'
dist: 22.04
arch: aarch64
runner: ubuntu-22.04-arm
- name: AppImage-x86_64
EXTRA_ARGS: '--appimage-build'
arch: x86_64
runner: ubuntu-22.04
steps:
- name: More space
uses: LizardByte/actions/actions/more_space@188c8ccad593e0f68bcf6aacb6bf84f10359d26f # v2026.905.43751
@@ -70,7 +76,7 @@
gh release download --archive=tar.gz --repo=intel/libva
tar xzf libva-*.tar.gz && rm libva-*.tar.gz
cd libva-*
./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu \
./autogen.sh --prefix=/usr --libdir="/usr/lib/${M_ARCH}-linux-gnu" \
--enable-drm \
--enable-x11 \
--enable-glx \
@@ -98,7 +104,7 @@
echo "::remove-matcher owner=gcc::"
- name: Package Linux - AppImage
if: matrix.name == 'AppImage'
if: startsWith(matrix.name, 'AppImage')
working-directory: build
run: |
# install sunshine to the DESTDIR
@@ -120,42 +126,58 @@
# AppImage
# https://docs.appimage.org/packaging-guide/index.html
wget -q "${LINUXDEPLOY_GH}/releases/download/continuous/linuxdeploy-x86_64.AppImage"
chmod +x linuxdeploy-x86_64.AppImage
url="${LINUXDEPLOY_GH}/releases/download/continuous/linuxdeploy-${M_ARCH}.AppImage"
wget --max-redirect=1 -q "$url" # NOSONAR(githubactions:S6506): GitHub release needs one redirect.
chmod +x "linuxdeploy-${M_ARCH}.AppImage"
# https://github.com/linuxdeploy/linuxdeploy-plugin-qt
url="${LINUXDEPLOY_GH}-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-${M_ARCH}.AppImage"
wget --max-redirect=1 -q "$url" # NOSONAR(githubactions:S6506): GitHub release needs one redirect.
chmod +x "linuxdeploy-plugin-qt-${M_ARCH}.AppImage"
wget -q "${LINUXDEPLOY_GH}-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
export QMAKE=/usr/lib/qt6/bin/qmake
export EXTRA_QT_MODULES="svg;"
"$QMAKE" -query QT_INSTALL_PLUGINS
./linuxdeploy-x86_64.AppImage \
"./linuxdeploy-${M_ARCH}.AppImage" \
--appdir ./AppDir \
--plugin qt \
--executable ./sunshine \
--icon-file "../$ICON_FILE" \
--desktop-file "./$DESKTOP_FILE" \
--output appimage
# print original name of AppImage file
echo "AppImage file: $(ls Sunshine*.AppImage)"
# move
mv Sunshine*.AppImage ../artifacts/sunshine.AppImage
mv Sunshine*.AppImage "../artifacts/Sunshine_${VERSION}_${M_ARCH}.AppImage"
# permissions
chmod +x ../artifacts/sunshine.AppImage
chmod +x "../artifacts/Sunshine_${VERSION}_${M_ARCH}.AppImage"
- name: Delete CUDA
# free up space on the runner
run: |
rm -rf ./build/cuda
- name: Setup python
id: python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Verify AppImage
if: matrix.name == 'AppImage'
if: startsWith(matrix.name, 'AppImage')
run: |
# TODO: switch to upstream after
# https://github.com/TheAssassin/appimagelint/pull/50 and
# https://github.com/TheAssassin/appimagelint/pull/51
APPIMAGELINT_REPOSITORY="git+https://github.com/ReenigneArcher/appimagelint.git"
wget https://github.com/TheAssassin/appimagelint/releases/download/continuous/appimagelint-x86_64.AppImage
chmod +x appimagelint-x86_64.AppImage
APPIMAGELINT_REF="lizardbyte"
python -m pip install -e "${APPIMAGELINT_REPOSITORY}@${APPIMAGELINT_REF}#egg=appimagelint"
appimagelint --help
./appimagelint-x86_64.AppImage ./artifacts/sunshine.AppImage
appimagelint "./artifacts/Sunshine_${VERSION}_${M_ARCH}.AppImage"
- name: Install screenshot dependency
run: |
@@ -168,14 +190,6 @@
- name: Setup virtual desktop
uses: LizardByte/actions/actions/virtual_desktop@188c8ccad593e0f68bcf6aacb6bf84f10359d26f # v2026.905.43751
with:
environment: mate
- name: Setup python
id: python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Setup uv
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
.github/workflows/ci.yml +3 −1
@@ -202,7 +202,9 @@
include:
- name: FreeBSD-amd64
coverage: true
- name: Linux-AppImage
- name: Linux-AppImage-aarch64
coverage: true
- name: Linux-AppImage-x86_64
coverage: true
- name: Archlinux
coverage: true
docs/getting_started.md +7 −7
@@ -76,7 +76,7 @@
<td rowspan="5">13.1.1</td>
<td rowspan="5">590.48.01</td>
<td rowspan="5">50;52;60;61;62;70;72;75;80;86;87;89;90;100;101;103;120;121</td>
<td>sunshine.AppImage</td>
<td>Sunshine_{version}_{arch}.AppImage</td>
</tr>
<tr>
<td>sunshine_{version}-1+{distro}{distro-version}_{arch}.deb</td>
@@ -102,25 +102,25 @@
> The AppImage is built on Ubuntu 22.04, which requires `glibc 2.35` or newer and `libstdc++ 3.4.11` or newer.
##### Install
1. Download [sunshine.AppImage](https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.AppImage)
1. Download `Sunshine_{version}_{arch}.AppImage`
into your home directory.
```bash
cd ~
wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.AppImage
wget https://github.com/LizardByte/Sunshine/releases/latest/download/Sunshine_{version}_{arch}.AppImage
```
2. Open terminal and run the following command.
```bash
./sunshine.AppImage --install
./Sunshine_{version}_{arch}.AppImage --install
```
##### Run
```bash
./sunshine.AppImage --install && ./sunshine.AppImage
./Sunshine_{version}_{arch}.AppImage --install && ./Sunshine_{version}_{arch}.AppImage
```
##### Uninstall
```bash
./Sunshine_{version}_{arch}.AppImage --remove
./sunshine.AppImage --remove
```
#### ArchLinux
@@ -650,7 +650,7 @@
sunshine --help
```}
@tab{ AppImage | ```bash
./Sunshine_{version}_{arch}.AppImage --help
./sunshine.AppImage --help
```}
@tab{ Flatpak | ```bash
flatpak run --command=sunshine dev.lizardbyte.app.Sunshine --help