Browse Source

Build Linux ARM64 AppImage (#2154)

Humberto Dias 6 months ago
parent
commit
1462bd47cf
1 changed files with 22 additions and 15 deletions
  1. 22 15
      .github/workflows/main.yml

+ 22 - 15
.github/workflows/main.yml

@@ -3,7 +3,10 @@ on: [push, pull_request]
 
 
 jobs:
 jobs:
   Linux:
   Linux:
-    runs-on: ubuntu-22.04
+    runs-on: ${{ matrix.runner }}
+    strategy:
+      matrix:
+        runner: [ubuntu-22.04, ubuntu-24.04-arm]
     permissions:
     permissions:
       checks: write
       checks: write
       pull-requests: write
       pull-requests: write
@@ -25,10 +28,14 @@ jobs:
                                           libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \
                                           libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \
                                           libcurl4-openssl-dev libfuse2 wmctrl openbox mesa-vulkan-drivers \
                                           libcurl4-openssl-dev libfuse2 wmctrl openbox mesa-vulkan-drivers \
                                           libvulkan1
                                           libvulkan1
+    - name: Install Vulkan SDK
+      if: ${{ runner.arch == 'X64' }}
+      run: |
+        set -e
         wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
         wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
         sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.283-jammy.list https://packages.lunarg.com/vulkan/1.3.283/lunarg-vulkan-1.3.283-jammy.list
         sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.283-jammy.list https://packages.lunarg.com/vulkan/1.3.283/lunarg-vulkan-1.3.283-jammy.list
-        sudo apt update
-        sudo apt install --assume-yes vulkan-sdk
+        sudo apt-get update
+        sudo apt-get install --assume-yes vulkan-sdk
     - name: Checkout love-appimage-source
     - name: Checkout love-appimage-source
       uses: actions/checkout@v4
       uses: actions/checkout@v4
       with:
       with:
@@ -77,12 +84,12 @@ jobs:
         token: ${{ secrets.GITHUB_TOKEN }}
         token: ${{ secrets.GITHUB_TOKEN }}
     - name: Zip Test Output (opengl)
     - name: Zip Test Output (opengl)
       run: |
       run: |
-        7z a -tzip test-output-linux-opengl.zip love2d-${{ github.sha }}/testing/output/
+        7z a -tzip test-output-linux-opengl-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
     - name: Artifact Test Output (opengl)
     - name: Artifact Test Output (opengl)
       uses: actions/upload-artifact@v4
       uses: actions/upload-artifact@v4
       with:
       with:
-        name: test-output-linux-opengl-${{ steps.report1.outputs.conclusion }}
-        path: test-output-linux-opengl.zip
+        name: test-output-linux-opengl-${{ runner.arch }}-${{ steps.report1.outputs.conclusion }}
+        path: test-output-linux-opengl-${{ runner.arch }}.zip
     # linux opengles tests
     # linux opengles tests
     - name: Run Test Suite (opengles)
     - name: Run Test Suite (opengles)
       env:
       env:
@@ -100,16 +107,16 @@ jobs:
         token: ${{ secrets.GITHUB_TOKEN }}
         token: ${{ secrets.GITHUB_TOKEN }}
     - name: Zip Test Output (opengles)
     - name: Zip Test Output (opengles)
       run: |
       run: |
-        7z a -tzip test-output-linux-opengles.zip love2d-${{ github.sha }}/testing/output/
+        7z a -tzip test-output-linux-opengles-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
     - name: Artifact Test Output (opengles)
     - name: Artifact Test Output (opengles)
       uses: actions/upload-artifact@v4
       uses: actions/upload-artifact@v4
       with:
       with:
-        name: test-output-linux-opengles-${{ steps.report2.outputs.conclusion }}
-        path: test-output-linux-opengles.zip
+        name: test-output-linux-opengles-${{ runner.arch }}-${{ steps.report2.outputs.conclusion }}
+        path: test-output-linux-opengles-${{ runner.arch }}.zip
     # linux vulkan tests
     # linux vulkan tests
     - name: Run Test Suite (vulkan)
     - name: Run Test Suite (vulkan)
       env:
       env:
-        LOVE_GRAPHICS_DEBUG: 1
+        LOVE_GRAPHICS_DEBUG: ${{ runner.arch == 'ARM64' && '0' || '1' }} 
         LOVE_GRAPHICS_VULKAN_ALLOW_SOFTWARE: 1
         LOVE_GRAPHICS_VULKAN_ALLOW_SOFTWARE: 1
       run: |
       run: |
         ./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers vulkan
         ./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers vulkan
@@ -121,12 +128,12 @@ jobs:
         path: love2d-${{ github.sha }}/testing/output/lovetest_all.md
         path: love2d-${{ github.sha }}/testing/output/lovetest_all.md
     - name: Zip Test Output (vulkan)
     - name: Zip Test Output (vulkan)
       run: |
       run: |
-        7z a -tzip test-output-linux-vulkan.zip love2d-${{ github.sha }}/testing/output/
+        7z a -tzip test-output-linux-vulkan-${{ runner.arch }}.zip love2d-${{ github.sha }}/testing/output/
     - name: Artifact Test Output (vulkan)
     - name: Artifact Test Output (vulkan)
       uses: actions/upload-artifact@v4
       uses: actions/upload-artifact@v4
       with:
       with:
-        name: test-output-linux-vulkan
-        path: test-output-linux-vulkan.zip
+        name: test-output-linux-vulkan-${{ runner.arch }}
+        path: test-output-linux-vulkan-${{ runner.arch }}.zip
     - name: Stop xvfb and openbox
     - name: Stop xvfb and openbox
       # should always stop xvfb and openbox even if other steps failed
       # should always stop xvfb and openbox even if other steps failed
       if: always()
       if: always()
@@ -136,12 +143,12 @@ jobs:
     - name: Artifact
     - name: Artifact
       uses: actions/upload-artifact@v4
       uses: actions/upload-artifact@v4
       with:
       with:
-        name: love-linux-x86_64.AppImage
+        name: love-linux-${{ runner.arch }}.AppImage
         path: love-${{ github.sha }}.AppImage
         path: love-${{ github.sha }}.AppImage
     - name: Artifact Debug Symbols
     - name: Artifact Debug Symbols
       uses: actions/upload-artifact@v4
       uses: actions/upload-artifact@v4
       with:
       with:
-        name: love-x86_64-AppImage-debug
+        name: love-${{ runner.arch }}-AppImage-debug
         path: love-${{ github.sha }}.AppImage-debug.tar.gz
         path: love-${{ github.sha }}.AppImage-debug.tar.gz
     - name: Check Tests Passing
     - name: Check Tests Passing
       if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure'
       if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure'