[llvm] workflows/release-binaries: Do a preliminary build to fill ccache (PR #72576)
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 16 14:00:59 PST 2023
https://github.com/tstellar created https://github.com/llvm/llvm-project/pull/72576
Build clang with the host compiler and ccache enabled in order to speed up the phase 1 builds. This helps reduce the amount of time spent running on the non-free builders.
>From 961e9937a20507e4d05508a7c44041cc07a37f2a Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Tue, 14 Nov 2023 21:38:26 -0800
Subject: [PATCH] workflows/release-binaries: Do a preliminary build to fill
ccache
Build clang with the host compiler and ccache enabled in order to speed
up the phase 1 builds. This helps reduce the amount of time spent
running on the non-free builders.
---
.github/workflows/release-binaries.yml | 48 ++++++++++++++++++++++++--
1 file changed, 46 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/release-binaries.yml b/.github/workflows/release-binaries.yml
index e52e52f5d3f36fa..75d4f419ab1fdc1 100644
--- a/.github/workflows/release-binaries.yml
+++ b/.github/workflows/release-binaries.yml
@@ -57,17 +57,52 @@ jobs:
fi
bash .github/workflows/set-release-binary-outputs.sh "${{ github.actor }}" "$tag" "$upload"
+ # Try to get around the 6 hour timeout by first running a job to fill
+ # the build cache.
+ fill-cache:
+ name: "Fill Cache ${{ matrix.os }}"
+ needs: prepare
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os:
+ - ubuntu-22.04
+ steps:
+ - name: Checkout LLVM
+ uses: actions/checkout at v4
+ with:
+ ref: ${{ inputs.tag || github.ref_name }}
+
+ - name: Install Ninja
+ uses: llvm/actions/install-ninja at main
+
+ - name: Setup sccache
+ uses: hendrikmuhs/ccache-action at v1
+ with:
+ max-size: 250M
+ key: sccache-${{ matrix.os }}-release
+ variant: sccache
+
+ - name: Build Clang
+ run: |
+ cmake -G Ninja -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_BUILD_TYPE=Release -DCMAKE_ENABLE_ASSERTIONS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DLLVM_ENABLE_PROJECTS=clang -S llvm -B build
+ ninja -v -C build
+
+
build-binaries:
name: ${{ matrix.target.triple }}
permissions:
contents: write # To upload assets to release.
- needs: prepare
+ needs:
+ - prepare
+ - fill-cache
runs-on: ${{ matrix.target.runs-on }}
strategy:
fail-fast: false
matrix:
target:
- triple: x86_64-linux-gnu-ubuntu-22.04
+ os: ubuntu-22.04
runs-on: ubuntu-22.04-16x64
debian-build-deps: >
chrpath
@@ -81,6 +116,14 @@ jobs:
ref: ${{ needs.prepare.outputs.ref }}
path: ${{ needs.prepare.outputs.build-dir }}/llvm-project
+ - name: Setup sccache
+ uses: hendrikmuhs/ccache-action at v1
+ with:
+ max-size: 250M
+ key: sccache-${{ matrix.target.os }}-release
+ save: false
+ variant: sccache
+
- name: Install Brew build dependencies
if: matrix.target.brew-build-deps != ''
run: brew install ${{ matrix.target.brew-build-deps }}
@@ -102,7 +145,8 @@ jobs:
-triple ${{ matrix.target.triple }} \
-use-ninja \
-no-checkout \
- -no-test-suite
+ -no-test-suite \
+ -configure-flags "-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
- name: Upload binaries
if: ${{ always() && needs.prepare.outputs.upload == 'true' }}
More information about the llvm-commits
mailing list