ref: 1fcb507e98d51bbf6c03967964d02f3c621daf6c
dir: /.github/workflows/release-appimage-aarch64.yml/
name: Release AppImage aarch64 on: [workflow_dispatch, workflow_call] env: SDL2_VERSION: "2.28.1" APPIMAGETOOL_VERSION: "13" GAME_SHORTNAME: "candycrisis" GAME_LONGNAME: "Candy Crisis" jobs: release-appimage-aarch64: runs-on: ubuntu-20.04 timeout-minutes: 100 # this job may take up to an hour steps: - uses: actions/checkout@v3 with: submodules: 'recursive' # Create shared directory ON HOST. (If it's done within qemu, it'll be created with root permissions) - name: Create artifacts directory shared with docker run: | mkdir -p "artifacts" # QEMU can't run appimagetool-aarch64, so we have to build the AppImage on x86_64 - name: Download appimagetool run : | pushd artifacts wget -q https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage wget -q https://github.com/AppImage/AppImageKit/releases/download/13/runtime-aarch64 chmod +x appimagetool-x86_64.AppImage chmod +x runtime-aarch64 popd - name: Get SDL source run: | git clone --depth 1 --branch release-${{env.SDL2_VERSION}} https://github.com/libsdl-org/SDL - uses: uraimo/run-on-arch-action@v2 name: Build game via QEMU id: buildgame with: arch: aarch64 # Distro must be kept in sync with `runs-on` above. # See: https://github.com/uraimo/run-on-arch-action#supported-platforms distro: ubuntu20.04 # (Optional) Speeds up builds by storing container images in a GitHub package registry. githubToken: ${{ github.token }} # Mount the artifacts directory as /artifacts in the container dockerRunArgs: | --volume "${PWD}/artifacts:/artifacts" # Install build tools for the game and SDL build dependencies. # See: https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md (last updated for SDL 2.26.0) install: | apt update -y apt install -y build-essential cmake #apt install -y libsdl2-dev #----- for quick testing apt install -y libasound2-dev libpulse-dev \ libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \ libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \ libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev # Build the aarch64 version under dist/, then tar it up and move the tarball to /artifacts. # (We're not building directly in /artifacts as this would cause permission issues when moving back to the x86_64 host) run: | #cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo #----- for quick testing cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SDL_FROM_SOURCE=1 -DSTATIC_SDL=1 cmake --build build bash packaging/prepare_appimage_appdir.sh build/${{env.GAME_SHORTNAME}} cd build tar cvf /artifacts/aarch64-dist.tar ./*.AppDir ./version.txt # QEMU can't run appimagetool-aarch64, so we have to build the AppImage on x86_64 - name: Create AppImage on x86_64 host run: | cd artifacts tar xvf aarch64-dist.tar GAME_VERSION=$(cat version.txt) ARTIFACT_NAME="${{env.GAME_SHORTNAME}}-$GAME_VERSION-linux-aarch64.AppImage" echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV APPIMAGE_INPUT=$(ls -d --indicator-style=none *.AppDir) ./appimagetool-x86_64.AppImage -v --runtime-file runtime-aarch64 --no-appstream $APPIMAGE_INPUT $ARTIFACT_NAME - name: Upload uses: actions/upload-artifact@v3 with: name: ${{ env.ARTIFACT_NAME }} path: artifacts/${{ env.ARTIFACT_NAME }}