@@ -22,14 +22,35 @@ jobs:
2222 runner : ubuntu-22.04
2323
2424 steps :
25+ - name : Preflight
26+ shell : pwsh
27+ run : |
28+ $LlvmVersion = "16.0.6"
29+ $LlvmRunId = '${{ github.event.inputs.run_id }}'
30+ if ($LlvmRunId -eq 'latest') {
31+ $LlvmRunId = $(gh run list -w 'LLVM prebuilt' --json 'status,databaseId,conclusion') |
32+ ConvertFrom-Json | Where-Object { ($_.status -eq 'completed') -and ($_.conclusion -eq 'success') } |
33+ Select-Object -First 1 -ExpandProperty databaseId
34+ }
35+ echo "LLVM_VERSION=$LlvmVersion" >> $Env:GITHUB_ENV
36+ echo "LLVM_RUN_ID=$LlvmRunId" >> $Env:GITHUB_ENV
37+
38+ $RustBuildDir = if ($IsWindows) { "C:\rust" } else { "${{runner.temp}}" }
39+ echo "RUST_BUILD_DIR=$RustBuildDir" >> $Env:GITHUB_ENV
40+
41+ - name : Set up Python
42+ uses : actions/setup-python@v4
43+ with :
44+ python-version : ' 3.9'
45+
2546 - name : Configure Windows runner
2647 if : runner.os == 'Windows'
2748 shell : pwsh
2849 run : |
2950 choco install --no-progress ninja 7zip wget
3051 Install-Module VsDevShell -Force
3152 docker system prune -a -f # free some space on C:\
32- New-Item -Path "C:\rust" -ItemType Directory | Out-Null
53+ New-Item -Path $Env:RUST_BUILD_DIR -ItemType Directory | Out-Null
3354
3455 - name : Configure macOS runner
3556 if : runner.os == 'macOS'
@@ -86,20 +107,26 @@ jobs:
86107
87108 - name : Install clang+llvm
88109 shell : pwsh
110+ env :
111+ GH_TOKEN : ${{ github.token }}
89112 run : |
90- $CLANG_LLVM_OS='${{matrix.os}}'.ToLower()
91- $CLANG_LLVM_BASE_URL="https://github.com/awakecoding/llvm-prebuilt/releases/download/v2022.2.0"
92- $CLANG_LLVM_NAME="clang+llvm-14.0.6-x86_64-${CLANG_LLVM_OS}"
93- wget -q "${CLANG_LLVM_BASE_URL}/${CLANG_LLVM_NAME}.tar.xz"
113+ $LlvmPlatform='${{matrix.os}}'
114+ $LlvmArch='x86_64'
115+ $LlvmVersion = $Env:LLVM_VERSION
116+ $LlvmRunId = $Env:LLVM_RUN_ID
117+ $LlvmName="clang+llvm-${LlvmVersion}-${LlvmArch}-${LlvmPlatform}"
118+ & gh run download $LlvmRunId --repo $Env:GITHUB_REPOSITORY -n $LlvmName
94119 if ($IsWindows) {
95- $LLVM_PREFIX="C:/llvm"
96- cmd.exe /c "7z.exe x ${CLANG_LLVM_NAME}.tar.xz -so | 7z x -si -ttar -o`"C:/temp`""
97- mv "C:/temp/${CLANG_LLVM_NAME}" $LLVM_PREFIX
120+ $TempDir = "C:/temp"
121+ $LLVM_PREFIX = "C:/llvm"
122+ cmd.exe /c "7z.exe x ${LlvmName}.tar.xz -so | 7z x -si -ttar -o`"C:/temp`""
123+ mv "$TempDir/${LlvmName}" $LLVM_PREFIX
98124 $LLVM_CONFIG="$LLVM_PREFIX/bin/llvm-config.exe"
99125 } else {
100- $LLVM_PREFIX="/opt/llvm"
101- tar -xf "${CLANG_LLVM_NAME}.tar.xz" -C /tmp
102- sudo mv "/tmp/${CLANG_LLVM_NAME}" $LLVM_PREFIX
126+ $TempDir = "/tmp"
127+ $LLVM_PREFIX = "/opt/llvm"
128+ tar -xvf "${LlvmName}.tar.xz" -C $TempDir
129+ sudo mv "$TempDir/${LlvmName}" $LLVM_PREFIX
103130 $LLVM_CONFIG="$LLVM_PREFIX/bin/llvm-config"
104131 }
105132 $LLVM_BIN_PATH="$LLVM_PREFIX/bin"
@@ -108,18 +135,6 @@ jobs:
108135 echo "LLVM_CONFIG=$LLVM_CONFIG" >> $Env:GITHUB_ENV
109136 echo "PATH=$LLVM_BIN_PATH$([IO.Path]::PathSeparator)$Env:PATH" >> $Env:GITHUB_ENV
110137
111- - name : Setup dynamic variables
112- id : dynamic-variables
113- shell : pwsh
114- run : |
115- $RustBuildDir = if ($IsWindows) { "C:\rust" } else { "${{runner.temp}}" }
116- echo "::set-output name=rust-build-dir::$RustBuildDir"
117-
118- - name : Setup Python
119- uses : actions/setup-python@v4
120- with :
121- python-version : ' 3.9'
122-
123138 - name : Clone project
124139 uses : actions/checkout@v3
125140 with :
@@ -146,7 +161,7 @@ jobs:
146161 shell : pwsh
147162 working-directory : rust
148163 run : |
149- $RustBuildDir = "${{steps.dynamic-variables.outputs.rust-build-dir}} ".Replace('\','\\')
164+ $RustBuildDir = "$Env:RUST_BUILD_DIR ".Replace('\','\\')
150165 $RustLlvmConfig = $Env:LLVM_CONFIG.Replace('\','\\')
151166 $RustHostArch = '${{matrix.arch}}'
152167 $RustHostPlatform = @{'windows'='pc-windows-msvc';
@@ -197,4 +212,4 @@ jobs:
197212 uses : actions/upload-artifact@v3
198213 with :
199214 name : rust-${{matrix.version}}-${{matrix.arch}}-${{matrix.os}}
200- path : ${{steps.dynamic-variables.outputs.rust-build-dir }}/dist
215+ path : ${{ env.RUST_BUILD_DIR }}/dist
0 commit comments