diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 22:58:41 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-29 22:58:41 -0400 |
| commit | 093fc7661800fc05419a1ab26e7b8859c55c0908 (patch) | |
| tree | fa9b1916b1c603393e1386775fb0be14ccdc7cde /.github | |
| parent | a0f857085829b4944a06dad87ab2447cde152456 (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.yml | 35 |
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)." |
