diff options
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)." |
