From fe66b1f5125cdca44924331e1576cb9f789a6b12 Mon Sep 17 00:00:00 2001 From: Live session user Date: Thu, 23 Oct 2025 14:42:01 -0700 Subject: [PATCH] Linux: ARM AppImage --- .github/workflows/build.yml | 41 ++++++++++++++++++++++++++----------- dist/linux/appimage.sh | 16 ++++++++------- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 145256ab..eef5ef5d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,10 +13,22 @@ on: env: VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg" VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' - + VCPKG_FORCE_DOWNLOADED_BINARIES: true + jobs: build-ubuntu: - runs-on: ubuntu-22.04 + continue-on-error: true + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + arch: x64 + - os: ubuntu-22.04-arm + arch: arm + + name: build-ubuntu-${{ matrix.arch }} + runs-on: ${{ matrix.os }} steps: - name: "Checkout repo" uses: actions/checkout@v4 @@ -41,11 +53,6 @@ jobs: sudo apt update -qq sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev - - name: "Setup cmake" - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.29.0' - - name: "Bootstrap vcpkg" run: | bash ./dependencies/vcpkg/bootstrap-vcpkg.sh @@ -78,11 +85,21 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: cemu-bin-linux-x64 + name: cemu-bin-linux-${{ matrix.arch }} path: ./bin/Cemu build-appimage: - runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + arch: x64 + - os: ubuntu-22.04-arm + arch: arm + + name: build-appimage-${{ matrix.arch }} + runs-on: ${{ matrix.os }} needs: build-ubuntu steps: - name: Checkout Upstream Repo @@ -90,7 +107,7 @@ jobs: - uses: actions/download-artifact@v4 with: - name: cemu-bin-linux-x64 + name: cemu-bin-linux-${{ matrix.arch }} path: bin - name: "Install system dependencies" @@ -102,12 +119,12 @@ jobs: run: | export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" export DEPLOY_GTK_VERSION=3 - dist/linux/appimage.sh + dist/linux/appimage.sh ${{ runner.arch }} - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: cemu-appimage-x64 + name: cemu-appimage-${{ matrix.arch }} path: artifacts build-windows: diff --git a/dist/linux/appimage.sh b/dist/linux/appimage.sh index b66326d7..fbadd733 100755 --- a/dist/linux/appimage.sh +++ b/dist/linux/appimage.sh @@ -1,20 +1,22 @@ #!/bin/bash +if [ "$1" == 'X64' ]; then CPU_ARCH="x86_64"; else CPU_ARCH="aarch64"; fi + if [[ -z "${GITHUB_WORKSPACE}" ]]; then export GITHUB_WORKSPACE="." fi -curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" +curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-"${CPU_ARCH}".AppImage" chmod a+x linuxdeploy*.AppImage -curl -sSfL https://github.com"$(curl https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous | grep "mkappimage-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)" -o mkappimage.AppImage +curl -sSfL https://github.com"$(curl https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous | grep "mkappimage-.*-"${CPU_ARCH}".AppImage" | head -n 1 | cut -d '"' -f 2)" -o mkappimage.AppImage chmod a+x mkappimage.AppImage curl -sSfLO "https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh" chmod a+x linuxdeploy-plugin-gtk.sh curl -sSfLO "https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh" chmod a+x linuxdeploy-plugin-checkrt.sh -if [[ ! -e /usr/lib/x86_64-linux-gnu ]]; then - sed -i 's#lib\/x86_64-linux-gnu#lib64#g' linuxdeploy-plugin-gtk.sh +if [[ ! -e /usr/lib/"${CPU_ARCH}"-linux-gnu ]]; then + sed -i 's#lib\/"${CPU_ARCH}"-linux-gnu#lib64#g' linuxdeploy-plugin-gtk.sh fi mkdir -p AppDir/usr/bin @@ -32,11 +34,11 @@ cp -r bin/* AppDir/usr/share/Cemu mv AppDir/usr/share/Cemu/Cemu AppDir/usr/bin/ chmod +x AppDir/usr/bin/Cemu -cp /usr/lib/x86_64-linux-gnu/{libsepol.so.1,libffi.so.7,libpcre.so.3,libGLU.so.1,libthai.so.0} AppDir/usr/lib +cp /usr/lib/"${CPU_ARCH}"-linux-gnu/{libsepol.so.1,libffi.so.7,libpcre.so.3,libGLU.so.1,libthai.so.0} AppDir/usr/lib export UPD_INFO="gh-releases-zsync|cemu-project|Cemu|ci|Cemu.AppImage.zsync" export NO_STRIP=1 -./linuxdeploy-x86_64.AppImage --appimage-extract-and-run \ +./linuxdeploy-"${CPU_ARCH}".AppImage --appimage-extract-and-run \ --appdir="${GITHUB_WORKSPACE}"/AppDir/ \ -d "${GITHUB_WORKSPACE}"/AppDir/info.cemu.Cemu.desktop \ -i "${GITHUB_WORKSPACE}"/AppDir/info.cemu.Cemu.png \ @@ -54,4 +56,4 @@ echo -e "export LC_ALL=C\nexport FONTCONFIG_PATH=/etc/fonts" >> AppDir/apprun-ho VERSION="${GITVERSION}" ./mkappimage.AppImage --appimage-extract-and-run "${GITHUB_WORKSPACE}"/AppDir mkdir -p "${GITHUB_WORKSPACE}"/artifacts/ -mv Cemu-"${GITVERSION}"-x86_64.AppImage "${GITHUB_WORKSPACE}"/artifacts/ +mv Cemu-"${GITVERSION}"-"${CPU_ARCH}".AppImage "${GITHUB_WORKSPACE}"/artifacts/