Skip to content

Commit 80aa88e

Browse files
Marc-André Moreauawakecoding
authored andcommitted
update Rust
1 parent 7cb75c2 commit 80aa88e

File tree

2 files changed

+49
-32
lines changed

2 files changed

+49
-32
lines changed

.github/workflows/rust-prebuilt.yml

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

patches/rust-1.73.0-force-windows-msvc-dynamic-runtime-linking.patch

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
From 83b2827d0c833b8676677a0053e5c6ea55be668b Mon Sep 17 00:00:00 2001
1+
From e0a1ccb6e00c27ce541f3883d3484827928d24e9 Mon Sep 17 00:00:00 2001
22
From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= <[email protected]>
3-
Date: Thu, 2 Nov 2023 09:45:19 -0400
3+
Date: Wed, 8 Nov 2023 11:47:42 -0500
44
Subject: [PATCH] [PATCH] force Windows MSVC dynamic runtime linking
55

66
---
77
src/bootstrap/bin/rustc.rs | 2 +-
88
src/bootstrap/bootstrap.py | 2 +-
99
src/bootstrap/builder.rs | 2 +-
10-
src/bootstrap/cc_detect.rs | 4 ++--
11-
4 files changed, 5 insertions(+), 5 deletions(-)
10+
src/bootstrap/cc_detect.rs | 6 +++---
11+
4 files changed, 6 insertions(+), 6 deletions(-)
1212

1313
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
1414
index 10718aeb89f..6bff20c84c1 100644
@@ -50,14 +50,16 @@ index b3666192853..198b1e0a46d 100644
5050
rustflags.arg("-Ctarget-feature=-crt-static");
5151
}
5252
diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
53-
index 2496c2a9db5..6f0985310ae 100644
53+
index 2496c2a9db5..b745a05b78e 100644
5454
--- a/src/bootstrap/cc_detect.rs
5555
+++ b/src/bootstrap/cc_detect.rs
56-
@@ -75,11 +75,11 @@ fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
56+
@@ -74,12 +74,12 @@ fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
57+
.target(&target.triple)
5758
.host(&build.build.triple);
5859
match build.crt_static(target) {
59-
Some(a) => {
60+
- Some(a) => {
6061
- cfg.static_crt(a);
62+
+ Some(_a) => {
6163
+ cfg.static_crt(false);
6264
}
6365
None => {

0 commit comments

Comments
 (0)