aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 22:58:41 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-29 22:58:41 -0400
commit093fc7661800fc05419a1ab26e7b8859c55c0908 (patch)
treefa9b1916b1c603393e1386775fb0be14ccdc7cde /.github
parenta0f857085829b4944a06dad87ab2447cde152456 (diff)
ci: ship the Linux build as a self-contained AppImage
The Linux artifact was the bare eglantine binary, which only ran with the same Qt 6.8 and libraries installed. Package eglantine and eden-cli with linuxdeploy and its Qt plugin instead (Qt, FFmpeg and the other libraries bundled; glibc, display libraries, the GPU driver and the Vulkan loader come from the system), and say so in the release notes.
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/release-binaries.yml35
1 files changed, 32 insertions, 3 deletions
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index 1a8083febb..f986f13b23 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -133,13 +133,42 @@ jobs:
shell: bash
run: cmake --build build/release --target yuzu yuzu-cmd --parallel
- - name: Package Linux binary
+ # A self-contained AppImage: linuxdeploy bundles every library the two programs need except
+ # the base system ones (glibc, X11/Wayland client libraries, the GPU driver and Vulkan loader),
+ # and its Qt plugin adds the Qt libraries and platform plugins. Runs on glibc 2.39+ systems.
+ - name: Package Linux AppImage
if: matrix.platform == 'linux-x86_64'
shell: bash
run: |
+ set -euo pipefail
test -x build/release/bin/eglantine
test -x build/release/bin/eden-cli
- tar -C build/release/bin -czf "eglantine-${GITHUB_SHA}-linux-x86_64.tar.gz" eglantine eden-cli
+ # Libraries Qt's xcb platform plugin needs, so linuxdeploy can resolve and bundle them.
+ sudo apt-get install -y --no-install-recommends libxcb-cursor0 libxcb-icccm4 libxcb-image0 \
+ libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 libxcb-xkb1
+ tools="$RUNNER_TEMP/linuxdeploy"
+ mkdir -p "$tools"
+ curl -fsSL -o "$tools/linuxdeploy-x86_64.AppImage" \
+ https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
+ curl -fsSL -o "$tools/linuxdeploy-plugin-qt-x86_64.AppImage" \
+ https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
+ chmod +x "$tools"/*.AppImage
+ # The desktop file names its icon dev.eglantine.eglantine.
+ icon="$RUNNER_TEMP/dev.eglantine.eglantine.png"
+ cp dist/Eglantine.png "$icon"
+ export APPIMAGE_EXTRACT_AND_RUN=1
+ export QMAKE="$QT_ROOT_DIR/bin/qmake"
+ export LDAI_OUTPUT="eglantine-${GITHUB_SHA}-linux-x86_64.AppImage"
+ export OUTPUT="$LDAI_OUTPUT"
+ "$tools/linuxdeploy-x86_64.AppImage" --appdir AppDir \
+ --executable build/release/bin/eglantine \
+ --executable build/release/bin/eden-cli \
+ --desktop-file dist/dev.eden_emu.eden.desktop \
+ --icon-file "$icon" \
+ --plugin qt \
+ --output appimage
+ test -s "$LDAI_OUTPUT"
+ ls -la "$LDAI_OUTPUT"
- name: Package Windows binary
if: matrix.platform == 'windows-x86_64'
@@ -193,4 +222,4 @@ jobs:
--notes "Automatic build of ${GITHUB_REF_NAME} at ${GITHUB_SHA}.
Windows: extract the zip and run eglantine.exe, or eden-cli.exe from a terminal.
- Linux: extract the tar.gz; it needs Qt 6.8 and the libraries Eglantine is built against installed on the system."
+ Linux: make the AppImage executable (chmod +x) and run it; it bundles its libraries and needs glibc 2.39 or newer (Ubuntu 24.04, Fedora 40, Debian 13, Arch)."