diff --git a/.github/actions/linux-prereq/action.yml b/.github/actions/linux-prereq/action.yml index eb4a542a59..ecf9c9d2b7 100644 --- a/.github/actions/linux-prereq/action.yml +++ b/.github/actions/linux-prereq/action.yml @@ -11,24 +11,13 @@ runs: echo "set man-db/auto-update false" | sudo debconf-communicate sudo dpkg-reconfigure man-db - # Install ninja - source ./build/common/get-ninja.sh - - # Install CMake - mkdir -p cmake - cd cmake - - sudo wget https://github.com/Kitware/CMake/releases/download/v$GITHUB_CMAKE_VERSION/cmake-$GITHUB_CMAKE_VERSION-Linux-x86_64.sh - sudo chmod +x ./cmake-$GITHUB_CMAKE_VERSION-Linux-x86_64.sh - sudo ./cmake-$GITHUB_CMAKE_VERSION-Linux-x86_64.sh --skip-license > /dev/null - sudo update-alternatives --install /usr/bin/cmake cmake $(pwd)/bin/cmake 1000 --force - cd .. sudo wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-get update sudo apt-get install clang-$GITHUB_CLANG_VERSION libc++-$GITHUB_CLANG_VERSION-dev libc++abi-$GITHUB_CLANG_VERSION-dev sudo apt-get install mesa-common-dev libxi-dev libxxf86vm-dev + sudo apt-get install cmake ninja-build # For dawn sudo apt-get install libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libx11-xcb-dev diff --git a/.github/actions/web-prereq/action.yml b/.github/actions/web-prereq/action.yml index d239dea0f1..2503469c87 100644 --- a/.github/actions/web-prereq/action.yml +++ b/.github/actions/web-prereq/action.yml @@ -8,7 +8,7 @@ runs: uses: actions/cache@v4 # Use a specific version with: path: emsdk - key: ${{ runner.os }}-emsdk-${{ env.GITHUB_EMSDK_VERSION }} + key: ${{ runner.os }}-${{ runner.arch }}-emsdk-${{ env.GITHUB_EMSDK_VERSION }} - name: Install Web Prerequisites shell: bash run: | diff --git a/.github/workflows/postsubmit.yml b/.github/workflows/postsubmit.yml index c03cc34ecd..b2fd0c5826 100644 --- a/.github/workflows/postsubmit.yml +++ b/.github/workflows/postsubmit.yml @@ -13,7 +13,6 @@ jobs: # We intentially use a larger runner here to enable larger disk space # (standard linux runner will fail on disk space and faster build time). runs-on: 'ubuntu-24.04-4core' - steps: - uses: actions/checkout@v4.1.6 with: @@ -27,7 +26,6 @@ jobs: build-ios: name: build-ios runs-on: 'macos-14' - steps: - uses: actions/checkout@v4.1.6 with: @@ -46,8 +44,7 @@ jobs: build-linux: name: build-linux - runs-on: 'ubuntu-24.04-4core' - + runs-on: 'arm-ubuntu-24.04-16core' steps: - uses: actions/checkout@v4.1.6 with: @@ -58,13 +55,12 @@ jobs: cd build/linux && printf "y" | ./build.sh continuous - uses: actions/upload-artifact@v4 with: - name: filament-linux - path: out/filament-release-linux.tgz + name: filament-arm-linux + path: out/filament-release-arm-linux.tgz build-mac: name: build-mac runs-on: 'macos-14' - steps: - uses: actions/checkout@v4.1.6 with: @@ -80,8 +76,7 @@ jobs: build-web: name: build-web - runs-on: 'ubuntu-24.04' - + runs-on: 'arm-ubuntu-24.04-16core' steps: - uses: actions/checkout@v4.1.6 with: diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index a96aefd641..730751a4f2 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -76,7 +76,7 @@ jobs: build-desktop-linux: name: build-linux - runs-on: 'ubuntu-24.04-4core' + runs-on: 'arm-ubuntu-24.04-16core' needs: [check-verification] if: > always() && !cancelled() && @@ -189,7 +189,7 @@ jobs: build-web: name: build-web - runs-on: 'ubuntu-24.04-4core' + runs-on: 'arm-ubuntu-24.04-16core' needs: [check-verification] if: > always() && !cancelled() && @@ -317,7 +317,7 @@ jobs: validate-wgsl-webgpu: name: validate-wgsl-webgpu - runs-on: 'ubuntu-24.04-4core' + runs-on: 'arm-ubuntu-24.04-16core' needs: [check-verification] if: > always() && !cancelled() && diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7d716f4f22..89428e6e58 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,6 +63,39 @@ jobs: const globber = await glob.create('out/*.tgz'); await upload({ github, context }, await globber.glob(), TAG); + build-arm-linux: + name: build-arm-linux + runs-on: 'arm-ubuntu-24.04-16core' + if: github.event_name == 'release' || github.event.inputs.platform == 'desktop' + steps: + - name: Decide Git ref + id: git_ref + run: | + REF=${RELEASE_TAG:-${GITHUB_REF}} + TAG=${REF##*/} + echo "ref=${REF}" >> $GITHUB_OUTPUT + echo "tag=${TAG}" >> $GITHUB_OUTPUT + - uses: actions/checkout@v4.1.6 + with: + ref: ${{ steps.git_ref.outputs.ref }} + - uses: ./.github/actions/linux-prereq + - name: Run build script + env: + TAG: ${{ steps.git_ref.outputs.tag }} + run: | + cd build/linux && printf "y" | ./build.sh release + cd ../.. + mv out/filament-release-linux.tgz out/filament-${TAG}-arm-linux.tgz + - uses: actions/github-script@v6 + env: + TAG: ${{ steps.git_ref.outputs.tag }} + with: + script: | + const upload = require('./build/common/upload-release-assets'); + const { TAG } = process.env; + const globber = await glob.create('out/*.tgz'); + await upload({ github, context }, await globber.glob(), TAG); + build-mac: name: build-mac runs-on: macos-14-xlarge @@ -99,7 +132,7 @@ jobs: build-web: name: build-web - runs-on: 'ubuntu-24.04-16core' + runs-on: 'arm-ubuntu-24.04-16core' if: github.event_name == 'release' || github.event.inputs.platform == 'web' steps: