Skip to content

Try using ccache for the workflow action builds: #16553

Try using ccache for the workflow action builds:

Try using ccache for the workflow action builds: #16553

Workflow file for this run

name: Build and Run Tests
on:
workflow_call:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
cmake-linux-local:
runs-on: ubuntu-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: scripts/build-local.sh
working-directory: ${{ github.workspace }}
cmake-linux-aarch64:
runs-on: arm-ubuntu-arm-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: scripts/build-linux-aarch64.sh -DCMAKE_BUILD_TYPE=Release
working-directory: ${{ github.workspace }}
- name: Run tests
run: ctest --output-on-failure --parallel $(nproc)
working-directory: ${{ github.workspace }}/build/linux/aarch64
cmake-linux-armhf:
runs-on: arm-ubuntu-arm-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Install armhf cross-toolchain
run: sudo apt install crossbuild-essential-armhf
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: scripts/build-linux-armhf.sh -DCMAKE_BUILD_TYPE=Release
working-directory: ${{ github.workspace }}
- name: Link the armhf loader to run the test binaries
run: sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /usr/lib/ld-linux-armhf.so.3
- name: Run tests
env:
LD_LIBRARY_PATH: /usr/arm-linux-gnueabihf/lib/:${{ env.LD_LIBRARY_PATH }}
run: ctest --output-on-failure --parallel $(nproc)
working-directory: ${{ github.workspace }}/build/linux/armhf
cmake-linux-riscv64:
runs-on: ubuntu-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Install riscv64 cross-toolchain
run: sudo apt install crossbuild-essential-riscv64
- name: Install qemu-riscv64
run: sudo apt install qemu-user
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: scripts/build-linux-riscv64.sh -DCMAKE_BUILD_TYPE=Release -DXNNPACK_ENABLE_RISCV_VECTOR=OFF
working-directory: ${{ github.workspace }}
- name: Run tests
run: ctest --output-on-failure --parallel $(nproc)
working-directory: ${{ github.workspace }}/build/linux/riscv64
cmake-linux-riscv64-rvv:
runs-on: ubuntu-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Download and Install riscv64 cross-toolchain tarball
run: |
wget -nv https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2024.04.12/riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.04.12-nightly.tar.gz
tar zxf riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.04.12-nightly.tar.gz
working-directory: ${{ github.workspace }}
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: |
scripts/build-linux-riscv64.sh \
-DCMAKE_BUILD_TYPE=Release \
-DXNNPACK_ENABLE_RISCV_VECTOR=ON \
-DUSE_GNU_SOURCE=ON \
-DRISCV_TOOLCHAIN_ROOT=${{ github.workspace }}/riscv/ \
-DRISCV_QEMU_ROOT=${{ github.workspace }}/riscv/
working-directory: ${{ github.workspace }}
- name: Run tests (no operator tests)
run: ctest --output-on-failure -LE operator --parallel $(nproc)
working-directory: ${{ github.workspace }}/build/linux/riscv64
cmake-windows-arm64:
runs-on: windows-2022-32core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Configure and build
run: scripts/build-windows-arm64.cmd
shell: cmd
working-directory: ${{ github.workspace }}
cmake-windows-arm64:

Check failure on line 140 in .github/workflows/build.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build.yml

Invalid workflow file

You have an error in your yaml syntax on line 140
runs-on: windows-2022-32core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Setup build environment
shell: bash
run: |
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
- name: Configure and build
run: scripts/build-windows-arm64.cmd
shell: cmd
working-directory: ${{ github.workspace }}
env:
CFLAGS: "/UNDEBUG"
CXXFLAGS: "/UNDEBUG"
cmake-windows-x64:
runs-on: windows-2022-32core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Setup build environment
shell: bash
run: |
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
- name: Configure and build
run: scripts/build-windows-x64.cmd
shell: cmd
working-directory: ${{ github.workspace }}
env:
CFLAGS: "/UNDEBUG"
CXXFLAGS: "/UNDEBUG"
- name: Run tests
run: ctest -C Release --output-on-failure --parallel $NUMBER_OF_PROCESSORS
working-directory: ${{ github.workspace }}/build/windows/x64
cmake-windows-x86:
runs-on: windows-2022-32core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Setup build environment
shell: bash
run: |
echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
- name: Configure and build
run: scripts/build-windows-x86.cmd
shell: cmd
working-directory: ${{ github.workspace }}
env:
CFLAGS: "/UNDEBUG"
CXXFLAGS: "/UNDEBUG"
- name: Run tests
run: ctest -C Release --output-on-failure --parallel $NUMBER_OF_PROCESSORS
working-directory: ${{ github.workspace }}/build/windows/x86
cmake-macos-arm64:
runs-on: macos-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Install ninja
run: brew install ninja
- name: Create output directory
run: mkdir -p build/macos/arm64
working-directory: ${{ github.workspace }}
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Generate CMake project
run: |
cmake \
-G Ninja \
-DCMAKE_CONFIGURATION_TYPES=Release \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DHAVE_STD_REGEX=TRUE \
../../..
working-directory: ${{ github.workspace }}/build/macos/arm64
- name: Build with Xcode
run: |
cmake \
--build \
build/macos/arm64 \
-j$((2*$(sysctl -n hw.ncpu)))
working-directory: ${{ github.workspace }}
cmake-android:
strategy:
matrix:
script: [build-android-arm64.sh, build-android-armv7.sh, build-android-x86.sh]
runs-on: ubuntu-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install ninja
run: sudo apt install ninja-build
- name: Setup Android NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: r23b
add-to-path: false
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: "${{ github.job }}"
max-size: "1G"
save: ${{ github.event.review.state == 'APPROVED' }}
- name: Configure and build
run: scripts/${{ matrix.script }}
working-directory: ${{ github.workspace }}
env:
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
cmake-ios-arm64:
runs-on: macos-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Create output directory
run: mkdir -p build/ios/arm64
working-directory: ${{ github.workspace }}
- name: Generate CMake project
run: cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 -DXNNPACK_BUILD_BENCHMARKS=OFF -DXNNPACK_BUILD_TESTS=OFF ../../..
working-directory: ${{ github.workspace }}/build/ios/arm64
- name: Build with Xcode
run: cmake --build build/ios/arm64 --parallel $(sysctl -n hw.ncpu) -- -quiet
working-directory: ${{ github.workspace }}
cmake-ios-x86_64:
runs-on: macos-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Create output directory
run: mkdir -p build/ios/x86_64
working-directory: ${{ github.workspace }}
- name: Generate CMake project
run: cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=x86_64 -DXNNPACK_BUILD_BENCHMARKS=OFF -DXNNPACK_BUILD_TESTS=OFF ../../..
working-directory: ${{ github.workspace }}/build/ios/x86_64
- name: Build with Xcode
run: cmake --build build/ios/x86_64 --parallel $(sysctl -n hw.ncpu) -- -sdk iphonesimulator -quiet
working-directory: ${{ github.workspace }}
bazel-linux-x86_64:
runs-on: ubuntu-22.04-8core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install clang-18
working-directory: ${{ github.workspace }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 18
- name: Restore bazel cache
uses: actions/cache/restore@v4
with:
path: "/home/runner/.cache/bazel"
key: "${{ github.job }}"
- name: Build and run tests
env:
CC: clang-18
CXX: clang++-18
run: |
bazel test --test_output=errors test:all
working-directory: ${{ github.workspace }}
- name: Save bazel cache
if: github.event.review.state == 'APPROVED'
uses: actions/cache/save@v4
with:
path: "/home/runner/.cache/bazel"
key: "${{ github.job }}"
bazel-linux-aarch64:
runs-on: arm-ubuntu-arm-22.04-4core
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Update apt
run: sudo apt update
- name: Install clang-18
working-directory: ${{ github.workspace }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 18
- name: Restore bazel cache
uses: actions/cache/restore@v4
with:
path: "/home/runner/.cache/bazel"
key: "${{ github.job }}"
- name: Build and run tests
env:
CC: clang-18
CXX: clang++-18
run: |
# We only test the KleidiAI integration for now.
bazel test \
--define=xnn_enable_jit=false \
--test_output=all \
--test_filter=*QP8* \
test:qp8_f32_qc4w_gemm_minmax_test \
test:fully_connected_nc_test \
test:fully_connected_test
working-directory: ${{ github.workspace }}
- name: Save bazel cache
if: github.event.review.state == 'APPROVED'
uses: actions/cache/save@v4
with:
path: "/home/runner/.cache/bazel"
key: "${{ github.job }}"