mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-03 08:08:43 +00:00
CI: Update the Clang pipeline to Clang 20
This commit is contained in:
parent
a65bbae4c9
commit
70d2b0b6f3
Notes:
github-actions[bot]
2025-05-14 08:07:10 +00:00
Author: https://github.com/trflynn89
Commit: 70d2b0b6f3
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4715
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/BertalanD
Reviewed-by: https://github.com/InvalidUsernameException
8 changed files with 26 additions and 25 deletions
13
.github/actions/setup/action.yml
vendored
13
.github/actions/setup/action.yml
vendored
|
@ -34,18 +34,19 @@ runs:
|
||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||||
|
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||||
sudo add-apt-repository 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main'
|
||||||
|
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 \
|
sudo apt-get install -y autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 \
|
||||||
gcc-14 g++-14 libcurl4-openssl-dev libegl1-mesa-dev libgl1-mesa-dev libpulse-dev libssl-dev \
|
gcc-14 g++-14 libcurl4-openssl-dev libegl1-mesa-dev libgl1-mesa-dev libpulse-dev libssl-dev \
|
||||||
libstdc++-14-dev lld-19 nasm ninja-build qt6-base-dev qt6-tools-dev-tools tar unzip zip
|
libstdc++-14-dev lld-20 nasm ninja-build qt6-base-dev qt6-tools-dev-tools tar unzip zip
|
||||||
|
|
||||||
if ${{ inputs.toolchain == 'Clang' }} ; then
|
if ${{ inputs.toolchain == 'Clang' }} ; then
|
||||||
sudo apt-get install -y clang-19 clang++-19 clang-tools-19
|
sudo apt-get install -y clang-20 clang++-20 clang-tools-20
|
||||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100
|
||||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100
|
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
|
||||||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
|
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
|
||||||
|
|
||||||
|
@ -112,7 +113,7 @@ runs:
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
brew update
|
brew update
|
||||||
brew install autoconf autoconf-archive automake bash ccache coreutils llvm@19 nasm ninja pkg-config qt unzip wabt
|
brew install autoconf autoconf-archive automake bash ccache coreutils llvm@20 nasm ninja pkg-config qt unzip wabt
|
||||||
|
|
||||||
- name: 'Set required environment variables'
|
- name: 'Set required environment variables'
|
||||||
if: ${{ inputs.os == 'Linux' && inputs.arch == 'arm64' }}
|
if: ${{ inputs.os == 'Linux' && inputs.arch == 'arm64' }}
|
||||||
|
|
4
.github/workflows/js-artifacts.yml
vendored
4
.github/workflows/js-artifacts.yml
vendored
|
@ -51,8 +51,8 @@ jobs:
|
||||||
- name: Create build directory Ubuntu
|
- name: Create build directory Ubuntu
|
||||||
run: |
|
run: |
|
||||||
cmake --preset Distribution_CI \
|
cmake --preset Distribution_CI \
|
||||||
-DCMAKE_C_COMPILER=clang-19 \
|
-DCMAKE_C_COMPILER=clang-20 \
|
||||||
-DCMAKE_CXX_COMPILER=clang++-19 \
|
-DCMAKE_CXX_COMPILER=clang++-20 \
|
||||||
-DENABLE_GUI_TARGETS=OFF
|
-DENABLE_GUI_TARGETS=OFF
|
||||||
if: ${{ matrix.os_name == 'Linux' }}
|
if: ${{ matrix.os_name == 'Linux' }}
|
||||||
|
|
||||||
|
|
6
.github/workflows/js-benchmarks.yml
vendored
6
.github/workflows/js-benchmarks.yml
vendored
|
@ -37,9 +37,9 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang++-19 python3-venv
|
sudo apt-get install -y clang++-20 python3-venv
|
||||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100
|
||||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100
|
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
|
||||||
|
|
||||||
- name: 'Download JS repl artifact'
|
- name: 'Download JS repl artifact'
|
||||||
id: download-artifact
|
id: download-artifact
|
||||||
|
|
4
.github/workflows/lagom-template.yml
vendored
4
.github/workflows/lagom-template.yml
vendored
|
@ -71,8 +71,8 @@ jobs:
|
||||||
CMAKE_OPTIONS="$CMAKE_OPTIONS -DENABLE_SWIFT=ON"
|
CMAKE_OPTIONS="$CMAKE_OPTIONS -DENABLE_SWIFT=ON"
|
||||||
elif ${{ inputs.os_name == 'Linux' }} ; then
|
elif ${{ inputs.os_name == 'Linux' }} ; then
|
||||||
if ${{ inputs.toolchain == 'Clang' }} ; then
|
if ${{ inputs.toolchain == 'Clang' }} ; then
|
||||||
echo "host_cc=clang-19" >> "$GITHUB_OUTPUT"
|
echo "host_cc=clang-20" >> "$GITHUB_OUTPUT"
|
||||||
echo "host_cxx=clang++-19" >> "$GITHUB_OUTPUT"
|
echo "host_cxx=clang++-20" >> "$GITHUB_OUTPUT"
|
||||||
elif ${{ inputs.toolchain == 'GNU' }} ; then
|
elif ${{ inputs.toolchain == 'GNU' }} ; then
|
||||||
echo "host_cc=gcc-14" >> "$GITHUB_OUTPUT"
|
echo "host_cc=gcc-14" >> "$GITHUB_OUTPUT"
|
||||||
echo "host_cxx=g++-14" >> "$GITHUB_OUTPUT"
|
echo "host_cxx=g++-14" >> "$GITHUB_OUTPUT"
|
||||||
|
|
12
.github/workflows/libjs-test262.yml
vendored
12
.github/workflows/libjs-test262.yml
vendored
|
@ -51,10 +51,10 @@ jobs:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||||
sudo add-apt-repository 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main'
|
||||||
|
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y ninja-build unzip clang-19 clang++-19 jq wget curl zip tar autoconf autoconf-archive automake nasm pkg-config libgl1-mesa-dev rsync
|
sudo apt-get install -y ninja-build unzip clang-20 clang++-20 jq wget curl zip tar autoconf autoconf-archive automake nasm pkg-config libgl1-mesa-dev rsync
|
||||||
|
|
||||||
test -e /opt/wabt-1.0.35 || (
|
test -e /opt/wabt-1.0.35 || (
|
||||||
cd /tmp
|
cd /tmp
|
||||||
|
@ -96,11 +96,11 @@ jobs:
|
||||||
export HOME=${{ github.workspace }}/home
|
export HOME=${{ github.workspace }}/home
|
||||||
mkdir -p $HOME
|
mkdir -p $HOME
|
||||||
env PATH="/opt/wabt-1.0.35/bin:$PATH" \
|
env PATH="/opt/wabt-1.0.35/bin:$PATH" \
|
||||||
CC=clang-19 \
|
CC=clang-20 \
|
||||||
CXX=clang++-19 \
|
CXX=clang++-20 \
|
||||||
cmake --preset CI -B libjs-test262/Build \
|
cmake --preset CI -B libjs-test262/Build \
|
||||||
-DCMAKE_C_COMPILER=clang-19 \
|
-DCMAKE_C_COMPILER=clang-20 \
|
||||||
-DCMAKE_CXX_COMPILER=clang++-19 \
|
-DCMAKE_CXX_COMPILER=clang++-20 \
|
||||||
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
|
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
|
||||||
-DINCLUDE_WASM_SPEC_TESTS=ON \
|
-DINCLUDE_WASM_SPEC_TESTS=ON \
|
||||||
-DENABLE_GUI_TARGETS=OFF
|
-DENABLE_GUI_TARGETS=OFF
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Qt6 development packages, nasm, additional build tools, and a C++23 capable compiler are required.
|
Qt6 development packages, nasm, additional build tools, and a C++23 capable compiler are required.
|
||||||
|
|
||||||
We currently use gcc-14 and clang-19 in our CI pipeline. If these versions are not available on your system, see
|
We currently use gcc-14 and clang-20 in our CI pipeline. If these versions are not available on your system, see
|
||||||
[`Meta/find_compiler.sh`](../Meta/find_compiler.sh) for the minimum compatible version.
|
[`Meta/find_compiler.sh`](../Meta/find_compiler.sh) for the minimum compatible version.
|
||||||
|
|
||||||
CMake 3.25 or newer must be available in $PATH.
|
CMake 3.25 or newer must be available in $PATH.
|
||||||
|
@ -52,10 +52,10 @@ sudo wget -O /usr/share/keyrings/llvm-snapshot.gpg.key https://apt.llvm.org/llvm
|
||||||
# Optional: Verify the GPG key manually
|
# Optional: Verify the GPG key manually
|
||||||
|
|
||||||
# Use the key to authorize an entry for apt.llvm.org in apt sources list
|
# Use the key to authorize an entry for apt.llvm.org in apt sources list
|
||||||
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] https://apt.llvm.org/$(lsb_release -sc)/ llvm-toolchain-$(lsb_release -sc)-19 main" | sudo tee -a /etc/apt/sources.list.d/llvm.list
|
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] https://apt.llvm.org/$(lsb_release -sc)/ llvm-toolchain-$(lsb_release -sc)-20 main" | sudo tee -a /etc/apt/sources.list.d/llvm.list
|
||||||
|
|
||||||
# Update apt package list and install clang and associated packages
|
# Update apt package list and install clang and associated packages
|
||||||
sudo apt update -y && sudo apt install clang-19 clangd-19 clang-tools-19 clang-format-19 clang-tidy-19 lld-19 -y
|
sudo apt update -y && sudo apt install clang-20 clangd-20 clang-tools-20 clang-format-20 clang-tidy-20 lld-20 -y
|
||||||
```
|
```
|
||||||
|
|
||||||
- Alternative: Install gcc from [Ubuntu Toolchain PPA](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test):
|
- Alternative: Install gcc from [Ubuntu Toolchain PPA](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test):
|
||||||
|
@ -122,7 +122,7 @@ brew install autoconf autoconf-archive automake ccache cmake nasm ninja pkg-conf
|
||||||
|
|
||||||
If you wish to use clang from homebrew instead:
|
If you wish to use clang from homebrew instead:
|
||||||
```
|
```
|
||||||
brew install llvm@19
|
brew install llvm@20
|
||||||
```
|
```
|
||||||
|
|
||||||
If you also plan to use the Qt UI on macOS:
|
If you also plan to use the Qt UI on macOS:
|
||||||
|
|
|
@ -14,7 +14,7 @@ die() {
|
||||||
|
|
||||||
pick_clang() {
|
pick_clang() {
|
||||||
local BEST_VERSION=0
|
local BEST_VERSION=0
|
||||||
for CLANG_CANDIDATE in clang clang-17 clang-18 clang-19 /opt/homebrew/opt/llvm/bin/clang ; do
|
for CLANG_CANDIDATE in clang clang-17 clang-18 clang-19 clang-20 /opt/homebrew/opt/llvm/bin/clang ; do
|
||||||
if ! command -v $CLANG_CANDIDATE >/dev/null 2>&1; then
|
if ! command -v $CLANG_CANDIDATE >/dev/null 2>&1; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -56,7 +56,7 @@ pick_host_compiler() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find_newest_compiler clang clang-17 clang-18 clang-19 /opt/homebrew/opt/llvm/bin/clang
|
find_newest_compiler clang clang-17 clang-18 clang-19 clang-20 /opt/homebrew/opt/llvm/bin/clang
|
||||||
if is_supported_compiler "$HOST_COMPILER"; then
|
if is_supported_compiler "$HOST_COMPILER"; then
|
||||||
export CC="${HOST_COMPILER}"
|
export CC="${HOST_COMPILER}"
|
||||||
export CXX="${HOST_COMPILER/clang/clang++}"
|
export CXX="${HOST_COMPILER/clang/clang++}"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue