@@ -22,14 +22,35 @@ jobs:
22
22
runner : ubuntu-22.04
23
23
24
24
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
+
25
46
- name : Configure Windows runner
26
47
if : runner.os == 'Windows'
27
48
shell : pwsh
28
49
run : |
29
50
choco install --no-progress ninja 7zip wget
30
51
Install-Module VsDevShell -Force
31
52
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
33
54
34
55
- name : Configure macOS runner
35
56
if : runner.os == 'macOS'
@@ -86,20 +107,26 @@ jobs:
86
107
87
108
- name : Install clang+llvm
88
109
shell : pwsh
110
+ env :
111
+ GH_TOKEN : ${{ github.token }}
89
112
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
94
119
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
98
124
$LLVM_CONFIG="$LLVM_PREFIX/bin/llvm-config.exe"
99
125
} 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
103
130
$LLVM_CONFIG="$LLVM_PREFIX/bin/llvm-config"
104
131
}
105
132
$LLVM_BIN_PATH="$LLVM_PREFIX/bin"
@@ -108,18 +135,6 @@ jobs:
108
135
echo "LLVM_CONFIG=$LLVM_CONFIG" >> $Env:GITHUB_ENV
109
136
echo "PATH=$LLVM_BIN_PATH$([IO.Path]::PathSeparator)$Env:PATH" >> $Env:GITHUB_ENV
110
137
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
-
123
138
- name : Clone project
124
139
uses : actions/checkout@v3
125
140
with :
@@ -146,7 +161,7 @@ jobs:
146
161
shell : pwsh
147
162
working-directory : rust
148
163
run : |
149
- $RustBuildDir = "${{steps.dynamic-variables.outputs.rust-build-dir}} ".Replace('\','\\')
164
+ $RustBuildDir = "$Env:RUST_BUILD_DIR ".Replace('\','\\')
150
165
$RustLlvmConfig = $Env:LLVM_CONFIG.Replace('\','\\')
151
166
$RustHostArch = '${{matrix.arch}}'
152
167
$RustHostPlatform = @{'windows'='pc-windows-msvc';
@@ -197,4 +212,4 @@ jobs:
197
212
uses : actions/upload-artifact@v3
198
213
with :
199
214
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