name: qt-linux-arm64 on: push: branches: [ main ] tags: [ 'v*' ] pull_request: branches: [ main ] workflow_dispatch: jobs: qt-linux-arm64: runs-on: arm64-native steps: - uses: actions/checkout@v4 - name: Install build dependencies run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y \ build-essential cmake ninja-build qt6-base-dev \ imagemagick file curl - name: Configure + build run: | set -eu cmake -S . -B build-out -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build-out --parallel "$(nproc)" - name: Build AppImage (arm64) run: | set -eu rm -rf AppDir artifacts mkdir -p AppDir/usr/bin AppDir/usr/share/applications AppDir/usr/share/icons/hicolor/256x256/apps artifacts cp build-out/qt_tray_demo AppDir/usr/bin/qt_tray_demo chmod +x AppDir/usr/bin/qt_tray_demo convert build/appicon.svg -resize 256x256 AppDir/usr/share/icons/hicolor/256x256/apps/qt_tray_demo.png cat > AppDir/usr/share/applications/qt_tray_demo.desktop <<'DESKTOP' [Desktop Entry] Type=Application Name=Qt Tray Demo Exec=qt_tray_demo Icon=qt_tray_demo Terminal=false Categories=Utility; DESKTOP curl -L -o linuxdeploy.AppImage https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage curl -L -o linuxdeploy-plugin-qt.AppImage https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-aarch64.AppImage chmod +x linuxdeploy.AppImage linuxdeploy-plugin-qt.AppImage export QMAKE=qmake6 APPIMAGE_EXTRACT_AND_RUN=1 ./linuxdeploy.AppImage --appdir AppDir \ -e AppDir/usr/bin/qt_tray_demo \ -d AppDir/usr/share/applications/qt_tray_demo.desktop \ -i AppDir/usr/share/icons/hicolor/256x256/apps/qt_tray_demo.png \ --plugin qt --output appimage generated=$(ls -1 *.AppImage | head -n 1) out="artifacts/qt_tray_demo-linux-arm64-run${{ github.run_number }}.AppImage" mv "$generated" "$out" chmod +x "$out" - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: qt_tray_demo-linux-arm64-run${{ github.run_number }} path: artifacts/ retention-days: 14