Skip to content

Commit

Permalink
Pin CI runner images to explicit versions (#507)
Browse files Browse the repository at this point in the history
* Pin CI runner images to explicit versions

CI is run infrequently enough on this repository that there's a
nontrivial chance that GitHub updates the definition of `ubuntu-latest`
for example between two CI runs. This can be confusing for contributors
as PRs seemingly break CI when in reality they have nothing to do with
the breakage and it's due to the image changing.

This PR pins all images to the definition of `*-latest` at this time.
The one exception is that one builder was pinned to 22.04 and I'm going
to update it to 24.04 here and see if I can't fix CI issues that come up.

This'll require explicit PRs to update these images in the future, but
hopefully that's only once every few ~years so not too much of a burden.

* Try not custom-installing clang 18

* Try to fix CI issue

* Fix CI again (attempt)

* Further try to fix CI

* Another fix for CI

Surely if I keep making commits that say "another fix" eventually I'll
run out of fixes. Surely, right? I'd put this in limerick form to be
more amusing if someone comes to read this but I'm not clever enough to
do that, so instead I'll just abruptly
  • Loading branch information
alexcrichton authored Jan 27, 2025
1 parent 67283cc commit e6a8337
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
28 changes: 12 additions & 16 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
matrix:
include:
- artifact: x86_64-linux
os: ubuntu-latest
os: ubuntu-24.04

- artifact: arm64-linux
os: ubuntu-latest
os: ubuntu-24.04
rust_target: aarch64-unknown-linux-gnu
env:
# Don't build a sysroot for this cross-compiled target since it
Expand All @@ -41,15 +41,15 @@ jobs:
-DRUST_TARGET=aarch64-unknown-linux-gnu
- artifact: arm64-macos
os: macos-latest
os: macos-14
rust_target: aarch64-apple-darwin
env:
WASI_SDK_CI_TOOLCHAIN_LLVM_CMAKE_ARGS: >-
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.12
-DCMAKE_OSX_ARCHITECTURES=arm64
- artifact: x86_64-macos
os: macos-latest
os: macos-14
rust_target: x86_64-apple-darwin
env:
WASI_SDK_CI_SKIP_SYSROOT: 1
Expand All @@ -58,7 +58,7 @@ jobs:
-DCMAKE_OSX_ARCHITECTURES=x86_64
- artifact: x86_64-windows
os: windows-latest
os: windows-2022

env: ${{ matrix.env || fromJSON('{}') }}
steps:
Expand Down Expand Up @@ -165,25 +165,21 @@ jobs:

build-only-sysroot:
name: Build only sysroot
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ./.github/actions/checkout
- uses: ./.github/actions/install-deps
- run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
name=$(lsb_release -s -c)
sudo add-apt-repository -y "deb http://apt.llvm.org/$name/ llvm-toolchain-$name-18 main"
sudo add-apt-repository -y "deb-src http://apt.llvm.org/$name/ llvm-toolchain-$name-18 main"
sudo apt-get install -y clang-18 llvm-18 lld-18
- run: cargo install [email protected]
- run: cargo install [email protected]
- run: |
cmake -G Ninja -B build -S . \
-DCMAKE_C_COMPILER=/usr/lib/llvm-18/bin/clang \
-DCMAKE_SYSTEM_NAME=WASI \
-DWASI_SDK_INCLUDE_TESTS=ON
-DWASI_SDK_INCLUDE_TESTS=ON \
-DCMAKE_C_LINKER_DEPFILE_SUPPORTED=OFF \
-DCMAKE_CXX_LINKER_DEPFILE_SUPPORTED=OFF
- run: ninja -C build
- run: ctest --output-on-failure --parallel 10 --test-dir build/tests

Expand All @@ -193,7 +189,7 @@ jobs:
finalize:
name: Finalize wasi-sdk artifacts
needs: build
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -253,7 +249,7 @@ jobs:
test-standalone:
name: Test standalone toolchain
needs: build
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
Expand Down
8 changes: 7 additions & 1 deletion cmake/wasi-sdk-sysroot.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,13 @@ set(default_cmake_args
-DCMAKE_C_COMPILER_WORKS=ON
-DCMAKE_CXX_COMPILER_WORKS=ON
-DCMAKE_SYSROOT=${wasi_sysroot}
-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/cmake)
-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/cmake
# CMake detects this based on `CMAKE_C_COMPILER` alone and when that compiler
# is just a bare "clang" installation then it can mistakenly deduce that this
# feature is supported when it's not actually supported for WASI targets.
# Currently `wasm-ld` does not support the linker flag for this.
-DCMAKE_C_LINKER_DEPFILE_SUPPORTED=OFF
-DCMAKE_CXX_LINKER_DEPFILE_SUPPORTED=OFF)

if(CMAKE_C_COMPILER_LAUNCHER)
list(APPEND default_cmake_args -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER})
Expand Down

0 comments on commit e6a8337

Please sign in to comment.