1616 # The CMake configure and build commands are platform-agnostic and should work equally well on Windows or Mac.
1717 # You can convert this to a matrix build if you need cross-platform coverage.
1818 # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
19- runs-on : ubuntu-latest
19+ runs-on : ubuntu-22.04
2020
2121 steps :
2222 - name : Free Disk Space (Ubuntu Host)
@@ -36,17 +36,25 @@ jobs:
3636 - name : ccache
3737 uses :
hendrikmuhs/[email protected] 3838 with :
39- key : ubuntu-latest
39+ key : ubuntu-22.04
4040
4141 - name : Install Deps
4242 run : |
4343 sudo apt-get update
44- sudo apt-get install -y autoconf libprotobuf-dev protobuf-compiler clang-tidy
44+ # Use GCC 10 to avoid GCC 13+ / glibc version mismatch issues with brpc/braft
45+ # GCC 10 has better C++17 support than GCC 9 while avoiding the glibc incompatibility
46+ sudo apt-get install -y autoconf libprotobuf-dev protobuf-compiler clang-tidy libssl-dev gcc-10 g++-10
4547
4648 - name : Configure CMake
4749 # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
4850 # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
49- run : cmake -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
51+ run : |
52+ export CC=gcc-10
53+ export CXX=g++-10
54+ # Ensure GCC 10 is used as the default compiler to avoid glibc/libstdc++ version mismatch
55+ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
56+ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100
57+ cmake -B build -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
5058
5159 - name : Build
5260 # Build your program with the given configuration
9098 sh integrate_test.sh
9199
92100 build_on_rocky :
93- runs-on : ubuntu-latest
101+ # Use ubuntu-22.04 instead of ubuntu-latest to avoid GCC 13+ incompatibility issues
102+ runs-on : ubuntu-22.04
94103 container :
95104 image : rockylinux:9
96105
@@ -166,8 +175,9 @@ jobs:
166175 - name : Install deps
167176 run : |
168177 dnf update -y
169- dnf install -y bash cmake wget git autoconf gcc perl-Digest-SHA tcl which tar g++ tar epel-release gcc-c++ libstdc++-devel gcc-toolset-13 binutils
170178 dnf clean all
179+ # Use gcc-toolset-10 to avoid GCC 13+ / glibc version mismatch issues with brpc/braft
180+ dnf install -y bash cmake wget git autoconf gcc perl-Digest-SHA tcl which tar g++ tar epel-release gcc-c++ libstdc++-devel gcc-toolset-10 openssl-devel zlib-devel
171181 rm -rf /var/cache/dnf
172182
173183 - name : Set up Go
@@ -182,8 +192,11 @@ jobs:
182192
183193 - name : Configure CMake
184194 run : |
185- source /opt/rh/gcc-toolset-13/enable
186- cmake -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address .
195+ source /opt/rh/gcc-toolset-10/enable
196+ # Explicitly set compiler to GCC 10 from toolset to avoid glibc/libstdc++ version mismatch
197+ export CC=/opt/rh/gcc-toolset-10/root/usr/bin/gcc
198+ export CXX=/opt/rh/gcc-toolset-10/root/usr/bin/g++
199+ cmake -B build -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DUSE_PIKA_TOOLS=ON -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address .
187200
188201 - uses : actions/cache@v3
189202 with :
@@ -197,7 +210,7 @@ jobs:
197210
198211 - name : Build
199212 run : |
200- source /opt/rh/gcc-toolset-13 /enable
213+ source /opt/rh/gcc-toolset-10 /enable
201214 cmake --build build --config ${{ env.BUILD_TYPE }}
202215
203216 - name : Cleanup
@@ -292,13 +305,15 @@ jobs:
292305 - name : Install Deps
293306 run : |
294307 brew list --versions cmake && brew uninstall --ignore-dependencies --force cmake || true
295- brew install gcc@13 automake cmake make binutils
308+ # Use GCC 10 for consistency with Ubuntu and Rocky builds
309+ brew install gcc@10 automake cmake make binutils
296310
297311 - name : Configure CMake
298312 run : |
299- GCC_PREFIX=$(brew --prefix gcc@13)
300- export CC=$GCC_PREFIX/bin/gcc-13
301- cmake -B build -DCMAKE_C_COMPILER=$GCC_PREFIX/bin/gcc-13 -DUSE_PIKA_TOOLS=ON -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
313+ GCC_PREFIX=$(brew --prefix gcc@10)
314+ export CC=$GCC_PREFIX/bin/gcc-10
315+ export CXX=$GCC_PREFIX/bin/g++-10
316+ cmake -B build -DCMAKE_C_COMPILER=$GCC_PREFIX/bin/gcc-10 -DCMAKE_CXX_COMPILER=$GCC_PREFIX/bin/g++-10 -DUSE_PIKA_TOOLS=ON -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
302317
303318 - name : Build
304319 run : |
0 commit comments