summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/actions/common-setup/action.yml48
1 files changed, 42 insertions, 6 deletions
diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml
index 2f16b77d3..8bdb9c172 100644
--- a/.github/actions/common-setup/action.yml
+++ b/.github/actions/common-setup/action.yml
@@ -73,24 +73,60 @@ runs:
echo "bin_dir=$bin_dir" >> "$GITHUB_ENV"
echo "lib_dir=$lib_dir" >> "$GITHUB_ENV"
- # Try to restore a LLVM install, and build it otherwise
- - uses: actions/cache/restore@v4
+ # Try to restore a LLVM build cache, and build it otherwise
+ - name: "Restore cache (attempt: 1/2)"
+ uses: actions/cache/restore@v4
id: cache-llvm
if: inputs.build-llvm == 'true'
with:
path: ${{ github.workspace }}/build/llvm-project-install
# Use os*compiler*platform in lieu of an ABI key here, which is what we really want
key: llvm-${{ inputs.os }}-${{ inputs.compiler }}-${{ inputs.platform }}-${{ hashFiles('external/build-llvm.sh') }}
- - name: Build LLVM
+
+ # Checkout while waiting for the second try of restoring the cache
+ - name: Checkout LLVM project if restore cache failed
+ uses: actions/checkout@v4
+ id: checkout-llvm
if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true'
- shell: bash
- run: ./external/build-llvm.sh --install-prefix "${{ github.workspace }}/build/llvm-project-install"
- - uses: actions/cache/save@v4
+ with:
+ #repository: llvm/llvm-project
+ repository: shader-slang/llvm-project
+ ref: llvmorg-13.0.1
+ path: build/llvm-source
+ fetch-depth: '1'
+ fetch-tags: true
+
+ # Once the cache server is busy, it usually becomes busy for awhile.
+ # The second attempt here is more likely to fail again.
+ # But the overhead of retry is very low, and let's try after spending some time checking out LLVM repo.
+ - name: "Restore cache (attempt: 2/2)"
+ uses: actions/cache/restore@v4
+ id: cache-llvm-2
if: inputs.build-llvm == 'true' && steps.cache-llvm.outputs.cache-hit != 'true'
with:
path: ${{ github.workspace }}/build/llvm-project-install
key: ${{ steps.cache-llvm.outputs.cache-primary-key }}
+ # Build LLVM only if all attempts of the restoring the cache failed.
+ - name: Build LLVM
+ id: build-llvm
+ if: steps.checkout-llvm.outcome == 'success' && steps.cache-llvm-2.outputs.cache-hit != 'true'
+ shell: bash
+ run: |
+ ./external/build-llvm.sh \
+ --install-prefix "${{ github.workspace }}/build/llvm-project-install" \
+ --repo "${{github.workspace}}/build/llvm-source" \
+ --branch llvmorg-13.0.1
+
+ # Save LLVM cache if the building step was successful
+ - name: Save LLVM cache
+ uses: actions/cache/save@v4
+ if: steps.build-llvm.outcome == 'success'
+ with:
+ path: ${{ github.workspace }}/build/llvm-project-install
+ key: ${{ steps.cache-llvm.outputs.cache-primary-key }}
+
+
# Run this after building llvm, it's pointless to fill the caches with
# infrequent llvm build products
- name: Set up sccache