mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 15:04:59 +00:00
Everywhere: Require version >= 12 for GCC host compiler
So far we've gotten away with using GCC 11 for Lagom and to compile the toolchain, but via #15795 we discovered a compiler bug that has been fixed in the latest version but would error the build with CI's GCC 11. Time for an upgrade :^) We already use ubuntu-22.04 images in most places, so this is pretty straightforward. The only exception is Idan's self-hosted runner, which uses Ubuntu Focal. LibJS should build fine with GCC 11, still.
This commit is contained in:
parent
28bc3a76d9
commit
bc2ebcadc0
11 changed files with 40 additions and 44 deletions
12
.github/workflows/cmake.yml
vendored
12
.github/workflows/cmake.yml
vendored
|
@ -47,7 +47,7 @@ jobs:
|
||||||
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/jammy/ llvm-toolchain-jammy-14 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-14 ccache e2fsprogs gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip
|
sudo apt-get install -y clang-format-14 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build optipng qemu-utils qemu-system-i386 unzip
|
||||||
- name: Install JS dependencies
|
- name: Install JS dependencies
|
||||||
run: sudo npm install -g prettier@2.7.1
|
run: sudo npm install -g prettier@2.7.1
|
||||||
- name: Install Python dependencies
|
- name: Install Python dependencies
|
||||||
|
@ -56,7 +56,7 @@ jobs:
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install flake8 requests
|
pip install flake8 requests
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-11 --version; clang-format --version; clang-format-14 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version
|
run: set +e; g++ --version; g++-12 --version; clang-format --version; clang-format-14 --version; prettier --version; python --version; python3 --version; ninja --version; flake8 --version; ccache --version; qemu-system-i386 --version
|
||||||
|
|
||||||
# === PREPARE FOR BUILDING ===
|
# === PREPARE FOR BUILDING ===
|
||||||
|
|
||||||
|
@ -147,8 +147,8 @@ jobs:
|
||||||
-DSERENITY_ARCH=${{ matrix.arch }} \
|
-DSERENITY_ARCH=${{ matrix.arch }} \
|
||||||
-DSERENITY_TOOLCHAIN=GNU \
|
-DSERENITY_TOOLCHAIN=GNU \
|
||||||
-DBUILD_LAGOM=ON \
|
-DBUILD_LAGOM=ON \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11 \
|
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||||
-DENABLE_ALL_DEBUG_FACILITIES=ON \
|
-DENABLE_ALL_DEBUG_FACILITIES=ON \
|
||||||
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
||||||
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
||||||
|
@ -161,8 +161,8 @@ jobs:
|
||||||
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
||||||
-DSERENITY_ARCH=${{ matrix.arch }} \
|
-DSERENITY_ARCH=${{ matrix.arch }} \
|
||||||
-DSERENITY_TOOLCHAIN=GNU \
|
-DSERENITY_TOOLCHAIN=GNU \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11 \
|
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||||
-DENABLE_UNDEFINED_SANITIZER=ON \
|
-DENABLE_UNDEFINED_SANITIZER=ON \
|
||||||
-DDUMP_REGIONS_ON_CRASH=ON \
|
-DDUMP_REGIONS_ON_CRASH=ON \
|
||||||
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
||||||
|
|
|
@ -28,10 +28,10 @@ jobs:
|
||||||
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/jammy/ llvm-toolchain-jammy-14 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-14 gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio
|
sudo apt-get install -y clang-format-14 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip pvs-studio
|
||||||
|
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-11 --version; ninja --version;
|
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
||||||
|
|
||||||
- name: Prepare useful stamps
|
- name: Prepare useful stamps
|
||||||
id: stamps
|
id: stamps
|
||||||
|
@ -73,8 +73,8 @@ jobs:
|
||||||
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
||||||
-DSERENITY_ARCH=${{ env.PVS_STUDIO_ANALYSIS_ARCH }} \
|
-DSERENITY_ARCH=${{ env.PVS_STUDIO_ANALYSIS_ARCH }} \
|
||||||
-DSERENITY_TOOLCHAIN=GNU \
|
-DSERENITY_TOOLCHAIN=GNU \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11 \
|
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||||
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
||||||
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
||||||
|
|
||||||
|
|
|
@ -61,10 +61,10 @@ jobs:
|
||||||
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/jammy/ llvm-toolchain-jammy-14 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y clang-format-14 gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build unzip
|
sudo apt-get install -y clang-format-14 gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build unzip
|
||||||
|
|
||||||
- name: Check versions
|
- name: Check versions
|
||||||
run: set +e; g++ --version; g++-11 --version; ninja --version;
|
run: set +e; g++ --version; g++-12 --version; ninja --version;
|
||||||
|
|
||||||
- name: Prepare useful stamps
|
- name: Prepare useful stamps
|
||||||
id: stamps
|
id: stamps
|
||||||
|
@ -106,8 +106,8 @@ jobs:
|
||||||
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \
|
||||||
-DSERENITY_ARCH=${{ env.SONAR_ANALYSIS_ARCH }} \
|
-DSERENITY_ARCH=${{ env.SONAR_ANALYSIS_ARCH }} \
|
||||||
-DSERENITY_TOOLCHAIN=GNU \
|
-DSERENITY_TOOLCHAIN=GNU \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11 \
|
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||||
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
||||||
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
-DENABLE_USB_IDS_DOWNLOAD=OFF
|
||||||
|
|
||||||
|
|
|
@ -11,13 +11,10 @@ sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2
|
||||||
```
|
```
|
||||||
Optional: `fuse2fs` for [building images without root](https://github.com/SerenityOS/serenity/pull/11224).
|
Optional: `fuse2fs` for [building images without root](https://github.com/SerenityOS/serenity/pull/11224).
|
||||||
|
|
||||||
#### GCC 11
|
#### GCC 12
|
||||||
|
|
||||||
On Ubuntu gcc-11 is available in the repositories of 21.04 (Hirsuite) and later - add the `ubuntu-toolchain-r/test` PPA if you're running an older version:
|
On Ubuntu gcc-12 is available in the repositories of 22.04 (Jammy) and later.
|
||||||
|
If you are running an older version, you will either need to upgrade, or find an alternative installation source.
|
||||||
```console
|
|
||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
||||||
```
|
|
||||||
|
|
||||||
Next, update your local package information from this repository:
|
Next, update your local package information from this repository:
|
||||||
|
|
||||||
|
@ -25,10 +22,10 @@ Next, update your local package information from this repository:
|
||||||
sudo apt update
|
sudo apt update
|
||||||
```
|
```
|
||||||
|
|
||||||
Now on Ubuntu or Debian you can install gcc-11 with apt like this:
|
Now on Ubuntu or Debian you can install gcc-12 with apt like this:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt install gcc-11 g++-11
|
sudo apt install gcc-12 g++-12
|
||||||
```
|
```
|
||||||
|
|
||||||
#### QEMU 6.2 or later
|
#### QEMU 6.2 or later
|
||||||
|
|
|
@ -14,20 +14,19 @@ As for recommended requirements, listed below are the specifications of the curr
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
These instructions assume the OS installed is Ubuntu 20.04 (Focal), so they might not be compatible with other Linux flavours.
|
These instructions assume the OS installed is Ubuntu 22.04 (Jammy), so they might not be compatible with other Linux flavours.
|
||||||
|
|
||||||
### Install base dependencies
|
### Install base dependencies
|
||||||
```shell
|
```shell
|
||||||
sudo add-apt-repository ppa:canonical-server/server-backports
|
sudo add-apt-repository ppa:canonical-server/server-backports
|
||||||
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/focal/ llvm-toolchain-focal-14 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-focal-14 main'
|
||||||
apt update
|
apt update
|
||||||
apt install git build-essential make cmake clang-format-14 gcc-11 g++-11 libstdc++-11-dev libgmp-dev ccache libmpfr-dev libmpc-dev ninja-build e2fsprogs qemu-utils qemu-system-i386 wabt
|
apt install git build-essential make cmake clang-format-14 gcc-12 g++-12 libstdc++-12-dev libgmp-dev ccache libmpfr-dev libmpc-dev ninja-build e2fsprogs qemu-utils qemu-system-i386 wabt
|
||||||
```
|
```
|
||||||
### Force usage of GCC 11
|
### Force usage of GCC 12
|
||||||
```shell
|
```shell
|
||||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12
|
||||||
```
|
```
|
||||||
### Create a new user account named 'runner'
|
### Create a new user account named 'runner'
|
||||||
```shell
|
```shell
|
||||||
|
|
|
@ -16,9 +16,9 @@ install it. You can also build it using the `Toolchain/BuildQemu.sh` script.
|
||||||
|
|
||||||
### GCC is missing or is outdated
|
### GCC is missing or is outdated
|
||||||
|
|
||||||
Ensure your gcc version is >= 11 with `gcc --version`. Otherwise, install it. If your gcc binary is not
|
Ensure your gcc version is >= 12 with `gcc --version`. Otherwise, install it. If your gcc binary is not
|
||||||
called `gcc` you have to specify the names of your C and C++ compiler when you run cmake, e.g.
|
called `gcc` you have to specify the names of your C and C++ compiler when you run cmake, e.g.
|
||||||
`cmake ../.. -GNinja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11`.
|
`cmake ../.. -GNinja -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12`.
|
||||||
|
|
||||||
## Running SerenityOS
|
## Running SerenityOS
|
||||||
|
|
||||||
|
|
|
@ -102,8 +102,8 @@ jobs:
|
||||||
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
|
-DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
|
||||||
-DENABLE_UNDEFINED_SANITIZER=ON \
|
-DENABLE_UNDEFINED_SANITIZER=ON \
|
||||||
-DENABLE_ADDRESS_SANITIZER=ON \
|
-DENABLE_ADDRESS_SANITIZER=ON \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11
|
-DCMAKE_CXX_COMPILER=g++-12
|
||||||
displayName: 'Create Build Environment'
|
displayName: 'Create Build Environment'
|
||||||
workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom
|
workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom
|
||||||
env:
|
env:
|
||||||
|
|
|
@ -50,8 +50,8 @@ jobs:
|
||||||
-DDUMP_REGIONS_ON_CRASH=ON \
|
-DDUMP_REGIONS_ON_CRASH=ON \
|
||||||
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
-DENABLE_PCI_IDS_DOWNLOAD=OFF \
|
||||||
-DENABLE_USB_IDS_DOWNLOAD=OFF \
|
-DENABLE_USB_IDS_DOWNLOAD=OFF \
|
||||||
-DCMAKE_C_COMPILER=gcc-11 \
|
-DCMAKE_C_COMPILER=gcc-12 \
|
||||||
-DCMAKE_CXX_COMPILER=g++-11
|
-DCMAKE_CXX_COMPILER=g++-12
|
||||||
displayName: 'Create Build Environment'
|
displayName: 'Create Build Environment'
|
||||||
workingDirectory: $(Build.SourcesDirectory)
|
workingDirectory: $(Build.SourcesDirectory)
|
||||||
env:
|
env:
|
||||||
|
|
|
@ -10,21 +10,21 @@ steps:
|
||||||
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/jammy/ llvm-toolchain-jammy-14 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install clang-format-14 ccache e2fsprogs gcc-11 g++-11 libstdc++-11-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld
|
sudo apt-get install clang-format-14 ccache e2fsprogs gcc-12 g++-12 libstdc++-12-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld
|
||||||
displayName: 'Install Dependencies'
|
displayName: 'Install Dependencies'
|
||||||
|
|
||||||
- ${{ if eq(parameters.os, 'Linux') }}:
|
- ${{ if eq(parameters.os, 'Linux') }}:
|
||||||
- script: |
|
- script: |
|
||||||
sudo apt-get purge -y clang-11 clang-12 gcc-10
|
sudo apt-get purge -y clang-12 gcc-10
|
||||||
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/jammy/ llvm-toolchain-jammy-13 main'
|
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-13 main'
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install ccache gcc-11 g++-11 clang-13 libstdc++-11-dev ninja-build unzip
|
sudo apt-get install ccache gcc-12 g++-12 clang-13 libstdc++-12-dev ninja-build unzip
|
||||||
|
|
||||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-13 100
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-13 100
|
||||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-13 100
|
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-13 100
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
|
||||||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
|
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
|
||||||
|
|
||||||
wget https://github.com/WebAssembly/wabt/releases/download/1.0.23/wabt-1.0.23-ubuntu.tar.gz
|
wget https://github.com/WebAssembly/wabt/releases/download/1.0.23/wabt-1.0.23-ubuntu.tar.gz
|
||||||
tar -xzf ./wabt-1.0.23-ubuntu.tar.gz
|
tar -xzf ./wabt-1.0.23-ubuntu.tar.gz
|
||||||
|
|
|
@ -192,7 +192,7 @@ pick_host_compiler() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find_newest_compiler egcc gcc gcc-11 gcc-12 /usr/local/bin/gcc-11 /opt/homebrew/bin/gcc-11
|
find_newest_compiler egcc gcc gcc-12 /usr/local/bin/gcc-12 /opt/homebrew/bin/gcc-12
|
||||||
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/gcc/g++}"
|
export CXX="${HOST_COMPILER/gcc/g++}"
|
||||||
|
@ -206,7 +206,7 @@ pick_host_compiler() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
die "Please make sure that GCC version 11, Clang version 13, or higher is installed."
|
die "Please make sure that GCC version 12, Clang version 13, or higher is installed."
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_with_target() {
|
cmd_with_target() {
|
||||||
|
|
|
@ -8,8 +8,8 @@ RUN apt-get update -y \
|
||||||
ccache \
|
ccache \
|
||||||
cmake \
|
cmake \
|
||||||
curl \
|
curl \
|
||||||
g++-11 \
|
g++-12 \
|
||||||
gcc-11 \
|
gcc-12 \
|
||||||
e2fsprogs \
|
e2fsprogs \
|
||||||
genext2fs \
|
genext2fs \
|
||||||
git \
|
git \
|
||||||
|
@ -29,4 +29,4 @@ RUN apt-get update -y \
|
||||||
tzdata \
|
tzdata \
|
||||||
unzip \
|
unzip \
|
||||||
&& rm -rf /var/lib/apt/lists/ \
|
&& rm -rf /var/lib/apt/lists/ \
|
||||||
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 900 --slave /usr/bin/g++ g++ /usr/bin/g++-11
|
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 900 --slave /usr/bin/g++ g++ /usr/bin/g++-12
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue