CI: Simplify upgrading toolchain versions in CI
Set the gcc and llvm versions as variables, and use them anywhere we install a specific version. We then export these as outputs so that any interested caller can retrieve the installed versions. Our check for llvm.list also will have prevented us from upgrading llvm versions. We now check that it contains the exact version we expect.
This commit is contained in:
parent
b9c6263408
commit
f200920a6c
4 changed files with 125 additions and 24 deletions
95
.github/actions/setup/action.yml
vendored
95
.github/actions/setup/action.yml
vendored
|
|
@ -14,6 +14,23 @@ inputs:
|
|||
description: 'Toolchain to set up'
|
||||
required: true
|
||||
default: 'Clang'
|
||||
gcc_version:
|
||||
description: 'GCC version to install'
|
||||
required: false
|
||||
default: '14'
|
||||
llvm_version:
|
||||
description: 'LLVM version to install'
|
||||
required: false
|
||||
default: '20'
|
||||
|
||||
outputs:
|
||||
gcc_version:
|
||||
description: 'The installed GCC version'
|
||||
value: ${{ steps.export-versions.outputs.gcc_version }}
|
||||
llvm_version:
|
||||
description: 'The installed LLVM version'
|
||||
value: ${{ steps.export-versions.outputs.llvm_version }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
|
|
@ -34,25 +51,58 @@ runs:
|
|||
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
|
||||
if [ ! -f /etc/apt/sources.list.d/llvm.list ]; then
|
||||
UBUNTU_RELEASE=$(lsb_release -cs)
|
||||
|
||||
LLVM_LIST="/etc/apt/sources.list.d/llvm.list"
|
||||
LLVM_TOOLCHAIN="llvm-toolchain-${UBUNTU_RELEASE}-${{ inputs.llvm_version }}"
|
||||
|
||||
if [ ! -f "${LLVM_LIST}" ] || ! grep -q "${LLVM_TOOLCHAIN}" "${LLVM_LIST}" ; then
|
||||
curl -f -o /usr/share/keyrings/llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key
|
||||
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" | sudo tee -a /etc/apt/sources.list.d/llvm.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/${UBUNTU_RELEASE}/ ${LLVM_TOOLCHAIN} main" | sudo tee "${LLVM_LIST}"
|
||||
fi
|
||||
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 \
|
||||
gcc-14 g++-14 libcurl4-openssl-dev libdrm-dev libegl1-mesa-dev libgl1-mesa-dev libpulse-dev libssl-dev \
|
||||
libstdc++-14-dev lld-20 llvm-20 nasm ninja-build qt6-base-dev qt6-tools-dev-tools tar unzip zip
|
||||
sudo apt-get install -y \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
build-essential \
|
||||
ccache \
|
||||
cmake \
|
||||
curl \
|
||||
fonts-liberation2 \
|
||||
g++-${{ inputs.gcc_version }} \
|
||||
gcc-${{ inputs.gcc_version }} \
|
||||
libcurl4-openssl-dev \
|
||||
libdrm-dev \
|
||||
libegl1-mesa-dev \
|
||||
libgl1-mesa-dev \
|
||||
libpulse-dev \
|
||||
libssl-dev \
|
||||
libstdc++-${{ inputs.gcc_version }}-dev \
|
||||
lld-${{ inputs.llvm_version }} \
|
||||
llvm-${{ inputs.llvm_version }} \
|
||||
nasm \
|
||||
ninja-build \
|
||||
qt6-base-dev \
|
||||
qt6-tools-dev-tools \
|
||||
tar \
|
||||
unzip \
|
||||
zip
|
||||
|
||||
if ${{ inputs.toolchain == 'Clang' }} ; then
|
||||
sudo apt-get install -y clang-20 clang++-20 clang-tools-20
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100
|
||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
|
||||
sudo apt-get install -y \
|
||||
clang-${{ inputs.llvm_version }} \
|
||||
clang++-${{ inputs.llvm_version }} \
|
||||
clang-tools-${{ inputs.llvm_version }}
|
||||
|
||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ inputs.llvm_version }} 100
|
||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{ inputs.llvm_version }} 100
|
||||
fi
|
||||
|
||||
sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-20 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/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${{ inputs.llvm_version }} 100
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc_version }} 100
|
||||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc_version }} 100
|
||||
|
||||
- name: Ensure clang-cl is available
|
||||
if: ${{ inputs.os == 'Windows' && inputs.toolchain == 'ClangCL' }}
|
||||
|
|
@ -80,7 +130,21 @@ runs:
|
|||
run: |
|
||||
set -e
|
||||
brew update
|
||||
brew install autoconf autoconf-archive automake bash ccache coreutils libtool llvm@20 nasm ninja pkg-config qt unzip
|
||||
|
||||
brew install \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
bash \
|
||||
ccache \
|
||||
coreutils \
|
||||
libtool \
|
||||
llvm@${{ inputs.llvm_version }} \
|
||||
nasm \
|
||||
ninja \
|
||||
pkg-config \
|
||||
qt \
|
||||
unzip
|
||||
|
||||
- name: 'Install wasm-tools'
|
||||
shell: bash
|
||||
|
|
@ -122,3 +186,10 @@ runs:
|
|||
- name: 'Install vcpkg'
|
||||
shell: bash
|
||||
run: ./Toolchain/BuildVcpkg.py
|
||||
|
||||
- name: 'Export installed versions'
|
||||
id: 'export-versions'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "gcc_version=${{ inputs.gcc_version }}" >> "$GITHUB_OUTPUT"
|
||||
echo "llvm_version=${{ inputs.llvm_version }}" >> "$GITHUB_OUTPUT"
|
||||
|
|
|
|||
7
.github/workflows/js-and-wasm-artifacts.yml
vendored
7
.github/workflows/js-and-wasm-artifacts.yml
vendored
|
|
@ -13,7 +13,7 @@ on:
|
|||
env:
|
||||
LADYBIRD_SOURCE_DIR: ${{ github.workspace }}
|
||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||
VCPKG_ROOT: ${{ github.workspace }}/Build/vcpkg
|
||||
VCPKG_ROOT: ${{ github.workspace }}/Build/vcpkg
|
||||
|
||||
jobs:
|
||||
build-and-package:
|
||||
|
|
@ -64,6 +64,7 @@ jobs:
|
|||
|
||||
- name: "Set up environment"
|
||||
uses: ./.github/actions/setup
|
||||
id: 'setup'
|
||||
with:
|
||||
os: ${{ matrix.os_name }}
|
||||
arch: ${{ matrix.arch }}
|
||||
|
|
@ -83,8 +84,8 @@ jobs:
|
|||
- name: Create build directory Ubuntu
|
||||
run: |
|
||||
cmake --preset Distribution \
|
||||
-DCMAKE_C_COMPILER=clang-20 \
|
||||
-DCMAKE_CXX_COMPILER=clang++-20 \
|
||||
-DCMAKE_C_COMPILER=clang-${{ steps.setup.outputs.llvm_version }} \
|
||||
-DCMAKE_CXX_COMPILER=clang++-${{ steps.setup.outputs.llvm_version }} \
|
||||
-DENABLE_CI_BASELINE_CPU=ON \
|
||||
-DENABLE_GUI_TARGETS=OFF
|
||||
if: ${{ matrix.os_name == 'Linux' }}
|
||||
|
|
|
|||
9
.github/workflows/lagom-template.yml
vendored
9
.github/workflows/lagom-template.yml
vendored
|
|
@ -54,6 +54,7 @@ jobs:
|
|||
|
||||
- name: Set Up Environment
|
||||
uses: ./.github/actions/setup
|
||||
id: 'setup'
|
||||
with:
|
||||
os: ${{ inputs.os_name }}
|
||||
arch: ${{ inputs.arch }}
|
||||
|
|
@ -75,11 +76,11 @@ jobs:
|
|||
fi
|
||||
|
||||
if ${{ inputs.toolchain == 'Clang' }} ; then
|
||||
echo "host_cc=clang-20" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cxx=clang++-20" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cc=clang-${{ steps.setup.outputs.llvm_version }}" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cxx=clang++-${{ steps.setup.outputs.llvm_version }}" >> "$GITHUB_OUTPUT"
|
||||
elif ${{ inputs.toolchain == 'GNU' }} ; then
|
||||
echo "host_cc=gcc-14" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cxx=g++-14" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cc=gcc-${{ steps.setup.outputs.gcc_version }}" >> "$GITHUB_OUTPUT"
|
||||
echo "host_cxx=g++-${{ steps.setup.outputs.gcc_version }}" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
elif ${{ inputs.os_name == 'macOS' }} ; then
|
||||
echo "host_cc=$(xcrun --find clang)" >> "$GITHUB_OUTPUT"
|
||||
|
|
|
|||
38
.github/workflows/libjs-test262.yml
vendored
38
.github/workflows/libjs-test262.yml
vendored
|
|
@ -6,6 +6,7 @@ on:
|
|||
|
||||
env:
|
||||
LADYBIRD_SOURCE_DIR: ${{ github.workspace }}
|
||||
LLVM_VERSION: 20
|
||||
VCPKG_ROOT: ${{ github.workspace }}/Build/vcpkg
|
||||
|
||||
jobs:
|
||||
|
|
@ -50,10 +51,37 @@ jobs:
|
|||
repository: tc39/test262-parser-tests
|
||||
path: test262-parser-tests
|
||||
|
||||
# FIXME: Use the setup action from .github/actions/setup/action.yml.
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
UBUNTU_RELEASE=$(lsb_release -cs)
|
||||
|
||||
LLVM_LIST="/etc/apt/sources.list.d/llvm.list"
|
||||
LLVM_TOOLCHAIN="llvm-toolchain-${UBUNTU_RELEASE}-${LLVM_VERSION}"
|
||||
|
||||
if [ ! -f "${LLVM_LIST}" ] || ! grep -q "${LLVM_TOOLCHAIN}" "${LLVM_LIST}" ; then
|
||||
curl -f -o /usr/share/keyrings/llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key
|
||||
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/${UBUNTU_RELEASE}/ ${LLVM_TOOLCHAIN} main" | sudo tee "${LLVM_LIST}"
|
||||
fi
|
||||
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build unzip clang-20 clang++-20 jq curl zip tar autoconf autoconf-archive automake nasm pkg-config libgl1-mesa-dev rsync libtool
|
||||
sudo apt-get install -y \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
clang++-${LLVM_VERSION} \
|
||||
clang-${LLVM_VERSION} \
|
||||
curl \
|
||||
jq \
|
||||
libgl1-mesa-dev \
|
||||
libtool \
|
||||
nasm \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
rsync \
|
||||
tar \
|
||||
unzip \
|
||||
zip
|
||||
|
||||
# We are currently limited to CMake 3.28 in Ubuntu 24.04. Our build requires CMake 3.30 or later.
|
||||
CMAKE_VERSION=4.2.3
|
||||
|
|
@ -112,11 +140,11 @@ jobs:
|
|||
export HOME=${{ github.workspace }}/home
|
||||
mkdir -p $HOME
|
||||
|
||||
env CC=clang-20 \
|
||||
CXX=clang++-20 \
|
||||
env CC=clang-${LLVM_VERSION} \
|
||||
CXX=clang++-${LLVM_VERSION} \
|
||||
cmake --preset Release -B libjs-test262/Build \
|
||||
-DCMAKE_C_COMPILER=clang-20 \
|
||||
-DCMAKE_CXX_COMPILER=clang++-20 \
|
||||
-DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \
|
||||
-DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \
|
||||
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
|
||||
-DINCLUDE_WASM_SPEC_TESTS=ON \
|
||||
-DENABLE_GUI_TARGETS=OFF
|
||||
|
|
|
|||
Loading…
Reference in a new issue