ci.yml (1752B)
1 name: Toolchain checks 2 3 on: 4 push: 5 pull_request: 6 workflow_dispatch: 7 inputs: 8 source_llvm: 9 description: Also build LLVM host tools from source 10 type: boolean 11 default: false 12 13 permissions: 14 contents: read 15 16 jobs: 17 driver: 18 runs-on: ubuntu-24.04 19 steps: 20 - uses: actions/checkout@v4 21 - run: make check 22 23 cross: 24 runs-on: ubuntu-24.04 25 timeout-minutes: ${{ inputs.source_llvm && 360 || 90 }} 26 strategy: 27 fail-fast: false 28 matrix: 29 arch: [x86_64, aarch64] 30 env: 31 ARCH: ${{ matrix.arch }} 32 LLVM_MODE: ${{ inputs.source_llvm && 'source' || 'system' }} 33 steps: 34 - uses: actions/checkout@v4 35 - name: Install host dependencies 36 run: | 37 sudo apt-get update 38 sudo apt-get install -y clang-19 lld-19 llvm-19 llvm-19-dev cmake ninja-build curl xz-utils perl rsync pkg-config qemu-user 39 echo /usr/lib/llvm-19/bin >> "$GITHUB_PATH" 40 - uses: actions/cache@v4 41 with: 42 path: sources 43 key: sources-${{ hashFiles('sources.list') }} 44 - name: Build and run smoke tests 45 run: | 46 if [ "$ARCH" = aarch64 ]; then 47 make JOBS=2 RUNNER=qemu-aarch64 48 else 49 make JOBS=2 50 fi 51 - name: Check a resumed build 52 run: make runtimes JOBS=2 53 - name: Save build diagnostics 54 if: failure() 55 uses: actions/upload-artifact@v4 56 with: 57 name: diagnostics-${{ matrix.arch }} 58 path: | 59 build/work/**/CMakeCache.txt 60 build/work/**/CMakeFiles/CMakeConfigureLog.yaml 61 build/work/**/verify/*.header 62 build/work/**/verify/*.segments 63 build/work/**/verify/*.dynamic