Skip to content

Commit 0cd949a

Browse files
kvpanchelle-jxermicus
authored
Update code base to use LLVM 21 (#434)
Signed-off-by: Cyrill Leutwiler <[email protected]> Co-authored-by: LJ <[email protected]> Co-authored-by: xermicus <[email protected]>
1 parent 927eca8 commit 0cd949a

File tree

31 files changed

+318
-195
lines changed

31 files changed

+318
-195
lines changed

.github/actions/get-llvm/action.yml

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -51,56 +51,71 @@ runs:
5151
result-encoding: string
5252
script: |
5353
let page = 1;
54-
let releases = [];
54+
let allReleases = [];
5555
5656
let target = process.env.target
5757
let versionPrefix = process.env.version_prefix
5858
59-
do {
59+
// Fetch all releases from all pages
60+
core.info('Fetching releases from revive repository...');
61+
let hasMorePages = true;
62+
while (hasMorePages) {
6063
const res = await github.rest.repos.listReleases({
6164
owner: context.repo.owner,
6265
repo: context.repo.repo,
6366
per_page: 50,
6467
page,
6568
});
6669
67-
releases = res.data
68-
releases.sort((a, b) => {
69-
return (a.published_at < b.published_at) ? 1 : ((a.published_at > b.published_at) ? -1 : 0);
70-
});
71-
72-
let llvmRelease;
73-
if (versionPrefix) {
74-
// Search for latest release matching the version prefix
75-
llvmRelease = releases.find(release => {
76-
return release.tag_name.startsWith(versionPrefix);
77-
});
78-
if (llvmRelease) {
79-
core.info(`Found LLVM release matching prefix '${versionPrefix}': ${llvmRelease.tag_name}`);
80-
}
70+
if (res.data.length > 0) {
71+
core.info(`Page ${page}: Fetched ${res.data.length} releases`);
72+
allReleases.push(...res.data);
73+
page++;
8174
} else {
82-
// Find latest LLVM release
83-
llvmRelease = releases.find(release => {
84-
return release.tag_name.startsWith('llvm-');
85-
});
86-
if (llvmRelease) {
87-
core.info(`Found latest LLVM version: ${llvmRelease.tag_name}`);
88-
}
75+
hasMorePages = false;
8976
}
77+
}
78+
79+
core.info(`Total releases fetched: ${allReleases.length}`);
9080
91-
if (llvmRelease){
92-
let asset = llvmRelease.assets.find(asset =>{
93-
return asset.name.includes(target);
94-
});
95-
if (!asset){
96-
core.setFailed(`Artifact for '${target}' not found in release ${llvmRelease.tag_name} (${llvmRelease.html_url})`);
97-
process.exit();
98-
}
99-
return asset.browser_download_url;
81+
// Sort all releases by publication date (newest first)
82+
allReleases.sort((a, b) => new Date(b.published_at) - new Date(a.published_at));
83+
84+
// Debug: Print all LLVM releases
85+
const llvmReleases = allReleases.filter(r => r.tag_name.startsWith('llvm-'));
86+
core.info(`Found ${llvmReleases.length} LLVM releases in total:`);
87+
llvmReleases.forEach(r => {
88+
core.info(` - ${r.tag_name} (published: ${r.published_at})`);
89+
});
90+
91+
// Find the appropriate LLVM release
92+
let llvmRelease;
93+
if (versionPrefix) {
94+
// Search for latest release matching the version prefix
95+
llvmRelease = llvmReleases.find(release => {
96+
return release.tag_name.startsWith(versionPrefix);
97+
});
98+
if (llvmRelease) {
99+
core.info(`Selected LLVM release matching prefix '${versionPrefix}': ${llvmRelease.tag_name}`);
100+
}
101+
} else {
102+
// Find latest LLVM release (first in sorted list)
103+
llvmRelease = llvmReleases[0];
104+
if (llvmRelease) {
105+
core.info(`Selected latest LLVM version: ${llvmRelease.tag_name}`);
100106
}
107+
}
101108
102-
page++;
103-
} while(releases.length > 0);
109+
if (llvmRelease) {
110+
let asset = llvmRelease.assets.find(asset => {
111+
return asset.name.includes(target);
112+
});
113+
if (!asset) {
114+
core.setFailed(`Artifact for '${target}' not found in release ${llvmRelease.tag_name} (${llvmRelease.html_url})`);
115+
process.exit();
116+
}
117+
return asset.browser_download_url;
118+
}
104119
105120
if (versionPrefix) {
106121
core.setFailed(`No LLVM releases matching prefix '${versionPrefix}' found! Please check the version.`);

.github/workflows/benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060

6161
- name: Set LLVM Environment Variables
6262
run: |
63-
echo "LLVM_SYS_181_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
63+
echo "LLVM_SYS_211_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
6464
6565
- name: Build resolc
6666
run: |

.github/workflows/release-llvm.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
cat /etc/apt/sources.list
8686
sudo sed -i 's/jammy/noble/g' /etc/apt/sources.list
8787
cat /etc/apt/sources.list
88-
sudo apt-get update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl xz-utils libc6-dev gcc-multilib
88+
sudo apt-get update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl xz-utils libc6-dev gcc-multilib g++ build-essential linux-libc-dev
8989
9090
- name: Install Dependencies
9191
if: ${{ matrix.host == 'macos' }}
@@ -127,7 +127,7 @@ jobs:
127127
- name: Package Artifact
128128
shell: bash
129129
run: |
130-
mv target-llvm/${{ matrix.builder-arg }}/target-final/ llvm-${{ matrix.target }}
130+
cp -r target-llvm/${{ matrix.builder-arg }}/target-final/ llvm-${{ matrix.target }}
131131
tar -czf "${{ needs.create-release-draft.outputs.version }}-${{ matrix.target }}.tar.gz" llvm-${{ matrix.target }}
132132
133133
- name: Add Artifact to Release

.github/workflows/reusable-build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ on:
3636

3737
env:
3838
CARGO_TERM_COLOR: always
39-
RUST_MUSL_CROSS_IMAGE: messense/rust-musl-cross@sha256:c0154e992adb791c3b848dd008939d19862549204f8cb26f5ca7a00f629e6067
39+
RUST_MUSL_CROSS_IMAGE: messense/rust-musl-cross@sha256:2a8837c43bf12e246f1ebd05191de9ee27fcd22f9ca81511ccd4cf75dc16d71c
4040

4141
jobs:
4242
build:
@@ -95,7 +95,7 @@ jobs:
9595
if: ${{ matrix.type == 'native' }}
9696
shell: bash
9797
run: |
98-
export LLVM_SYS_181_PREFIX=$PWD/llvm-${{ matrix.target }}
98+
export LLVM_SYS_211_PREFIX=$PWD/llvm-${{ matrix.target }}
9999
make install-bin
100100
mv target/release/resolc resolc-${{ matrix.target }} || mv target/release/resolc.exe resolc-${{ matrix.target }}.exe
101101
@@ -106,7 +106,7 @@ jobs:
106106
cd /opt/revive
107107
chown -R root:root .
108108
apt update && apt upgrade -y && apt install -y pkg-config
109-
export LLVM_SYS_181_PREFIX=/opt/revive/llvm-${{ matrix.target }}
109+
export LLVM_SYS_211_PREFIX=/opt/revive/llvm-${{ matrix.target }}
110110
make install-bin
111111
mv target/${{ matrix.target }}/release/resolc resolc-${{ matrix.target }}
112112
"
@@ -169,7 +169,7 @@ jobs:
169169

170170
- name: Build
171171
run: |
172-
export LLVM_SYS_181_PREFIX=$PWD/llvm-x86_64-unknown-linux-gnu
172+
export LLVM_SYS_211_PREFIX=$PWD/llvm-x86_64-unknown-linux-gnu
173173
export REVIVE_LLVM_TARGET_PREFIX=$PWD/llvm-wasm32-unknown-emscripten
174174
source emsdk/emsdk_env.sh
175175
make install-wasm

.github/workflows/test-llvm-builder.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install Dependencies
3434
if: matrix.runner == 'parity-large'
3535
run: |
36-
sudo apt update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl
36+
sudo apt update && sudo apt-get install -y cmake ninja-build curl git libssl-dev pkg-config clang lld musl xz-utils build-essential
3737
3838
- name: Install Dependencies
3939
if: matrix.runner == 'macos-15'

.github/workflows/test-wasm.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050

5151
- name: Set LLVM Environment Variables
5252
run: |
53-
echo "LLVM_SYS_181_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
53+
echo "LLVM_SYS_211_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
5454
echo "REVIVE_LLVM_TARGET_PREFIX=$(pwd)/llvm-wasm32-unknown-emscripten" >> $GITHUB_ENV
5555
5656
- name: Build Revive

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838

3939
- name: Set LLVM Environment Variables
4040
run: |
41-
echo "LLVM_SYS_181_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
41+
echo "LLVM_SYS_211_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV
4242
4343
- name: Install Geth
4444
run: |

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[submodule "llvm"]
22
path = llvm
33
url = https://github.com/llvm/llvm-project.git
4-
branch = release/18.x
4+
branch = release/21.x
55
[submodule "revive-differential-tests"]
66
path = revive-differential-tests
7-
url = https://github.com/paritytech/revive-differential-tests.git
7+
url = https://github.com/paritytech/revive-differential-tests.git

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ This is a development pre-release.
88

99
- npm package: The `--bin` CLI flag was not producing bytecode because the `outputSelection` was not updated to explicitly requested it.
1010

11+
### Changed
12+
13+
- Updated `LLVM` from `18.1.8` to LLVM `21.1.8`
14+
- Updated `musl` to `1.2.5`
15+
- Updated `inkwell` to `0.8.0`
16+
- Updated `polkavm-*` to `0.31.0`
17+
1118
## v1.0.0
1219

1320
Supported `polkadot-sdk` rev: `unstable2507`

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Revive is a Solidity compiler targeting RISC-V on PolkaVM. It uses `solc` (Ether
1414

1515
## Build Commands
1616

17-
**Prerequisites:** Requires `LLVM_SYS_181_PREFIX` environment variable pointing to a compatible LLVM 18.1.8 build. Download from releases or build with `make install-llvm`.
17+
**Prerequisites:** Requires `LLVM_SYS_211_PREFIX` environment variable pointing to a compatible LLVM 18.1.8 build. Download from releases or build with `make install-llvm`.
1818

1919
```bash
2020
# Install resolc binary

0 commit comments

Comments
 (0)