1818 - bugfix/**
1919 - feature/**
2020 - fix/**
21+ - github/**
2122 - pr/**
23+ paths-ignore :
24+ - LICENSE
25+ - meta/**
26+ - README.md
2227
2328concurrency :
2429 group : ${{format('{0}:{1}', github.repository, github.ref)}}
7984 defaults :
8085 run :
8186 shell : bash
82-
8387 strategy :
8488 fail-fast : false
8589 matrix :
@@ -92,17 +96,17 @@ jobs:
9296 # GCC 7 & 8 on Ubuntu 20 show failures in basic_filebuf::_M_convert_to_external conversion
9397 - { compiler: gcc-7, cxxstd: '11,14,17', os: ubuntu-latest, container: 'ubuntu:18.04' }
9498 - { compiler: gcc-8, cxxstd: '11,14,17,2a', os: ubuntu-latest, container: 'ubuntu:18.04' }
95- - { compiler: gcc-9, cxxstd: '11,14,17,2a', os: ubuntu-20 .04 }
99+ - { compiler: gcc-9, cxxstd: '11,14,17,2a', os: ubuntu-22 .04 }
96100 - { compiler: gcc-10, cxxstd: '11,14,17,20', os: ubuntu-22.04 }
97101 - { compiler: gcc-11, cxxstd: '11,14,17,20', os: ubuntu-22.04 }
98102 - { compiler: gcc-12, cxxstd: '11,14,17,20', os: ubuntu-22.04 }
99103 - { compiler: gcc-13, cxxstd: '11,14,17,20,2b', os: ubuntu-24.04 }
100104 - { compiler: gcc-14, cxxstd: '11,14,17,20,2b', os: ubuntu-24.04 }
101-
105+
102106 - { name: GCC w/ sanitizers, sanitize: yes,
103107 compiler : gcc-13, cxxstd: '11,14,17,20', os: ubuntu-24.04 }
104108 - { name: Collect coverage, coverage: yes,
105- compiler : gcc-8, cxxstd: '11,2a', os: ubuntu-20.04, install: 'g++-8-multilib', address-model: '32,64' }
109+ compiler : gcc-8, cxxstd: '11,2a', os: ubuntu-latest, container: 'ubuntu: 20.04' , install: 'g++-8-multilib', address-model: '32,64' }
106110
107111 # Linux, clang
108112 - { compiler: clang-3.5, cxxstd: '11', os: ubuntu-latest, container: 'ubuntu:16.04' }
@@ -112,29 +116,28 @@ jobs:
112116 - { compiler: clang-3.9, cxxstd: '11,14', os: ubuntu-latest, container: 'ubuntu:18.04' }
113117 - { compiler: clang-4.0, cxxstd: '11,14', os: ubuntu-latest, container: 'ubuntu:18.04' }
114118 - { compiler: clang-5.0, cxxstd: '11,14,1z', os: ubuntu-latest, container: 'ubuntu:18.04' }
115- - { compiler: clang-6.0, cxxstd: '11,14,17', os: ubuntu-20.04 }
116- - { compiler: clang-7, cxxstd: '11,14,17', os: ubuntu-20.04 }
119+ - { compiler: clang-6.0, cxxstd: '11,14,17', os: ubuntu-latest, container: 'ubuntu: 20.04' }
120+ - { compiler: clang-7, cxxstd: '11,14,17', os: ubuntu-latest, container: 'ubuntu: 20.04' }
117121 # Note: clang-8 does not fully support C++20, so it is not compatible with some libstdc++ versions in this mode
118- - { compiler: clang-8, cxxstd: '11,14,17,2a', os: ubuntu-20.04 , gcc_toolchain: 7 }
119- - { compiler: clang-9, cxxstd: '11,14,17,2a', os: ubuntu-20.04 }
120- - { compiler: clang-10, cxxstd: '11,14,17,20', os: ubuntu-20.04 }
121- - { compiler: clang-11, cxxstd: '11,14,17,20', os: ubuntu-20.04 }
122- - { compiler: clang-12, cxxstd: '11,14,17,20', os: ubuntu-20.04 }
123- # Clang isn't compatible with libstdc++-13, so use the slightly older one
124- - { compiler: clang-13, cxxstd: '11,14,17,20', os: ubuntu-22.04, gcc_toolchain: 11 }
125- - { compiler: clang-14, cxxstd: '11,14,17,20', os: ubuntu-22.04, gcc_toolchain: 11 }
126- - { compiler: clang-15, cxxstd: '11,14,17,20', os: ubuntu-22.04, gcc_toolchain: 12 }
122+ - { compiler: clang-8, cxxstd: '11,14,17', os: ubuntu-latest, container: 'ubuntu:20.04' }
123+ - { compiler: clang-9, cxxstd: '11,14,17,2a', os: ubuntu-latest, container: 'ubuntu:20.04' }
124+ - { compiler: clang-10, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:20.04' }
125+ - { compiler: clang-11, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:20.04' }
126+ - { compiler: clang-12, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:20.04' }
127+ - { compiler: clang-13, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:22.04' }
128+ - { compiler: clang-14, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:22.04' }
129+ - { compiler: clang-15, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:22.04' }
127130 - { compiler: clang-16, cxxstd: '11,14,17,20,2b', os: ubuntu-24.04 }
128- # https://github.com/llvm/llvm-project/issues/59827: disabled 2b/23 for clang-17 with libstdc++13 in 24.04
129- - { compiler: clang-17, cxxstd: '11,14,17,20', os: ubuntu-24.04 }
131+ - { compiler: clang-17, cxxstd: '11,14,17,20,23', os: ubuntu-latest, container: 'ubuntu:24.04' }
130132 - { compiler: clang-18, cxxstd: '11,14,17,20,23,2c', os: ubuntu-24.04 }
131133 - { name: Run code fuzzer, fuzzing: yes,
132134 compiler : clang-18, cxxstd: '20', os: ubuntu-24.04, variant: debug, link: static }
133135
134136 # libc++
135- - { compiler: clang-6.0, cxxstd: '11,14', os: ubuntu-22.04, container: 'ubuntu:18.04', stdlib: libc++, install: 'clang-6.0 libc++-dev libc++abi-dev' }
137+ - { compiler: clang-6.0, cxxstd: '11,14', os: ubuntu-latest, container: 'ubuntu:18.04', stdlib: libc++, install: 'clang-6.0 libc++-dev libc++abi-dev' }
138+ - { compiler: clang-12, cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:20.04', stdlib: libc++ }
136139 - { name: Clang w/ sanitizers, sanitize: yes,
137- compiler : clang-12 , cxxstd: '11,14,17,20', os: ubuntu-20.04, stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev' }
140+ compiler : clang-17 , cxxstd: '11,14,17,20', os: ubuntu-latest, container: 'ubuntu:24.04', stdlib: libc++ }
138141
139142 # OSX, clang
140143 - { name: MacOS w/ clang and sanitizers,
@@ -160,17 +163,28 @@ jobs:
160163 fi
161164 if [ -n "${{matrix.container}}" ] && [ -f "/etc/debian_version" ]; then
162165 apt-get -o Acquire::Retries=$NET_RETRY_COUNT update
163- apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common curl
166+ apt-get -o Acquire::Retries=$NET_RETRY_COUNT -y -q --no- install-suggests --no-install-recommends install sudo software-properties-common curl
164167 # Need (newer) git, and the older Ubuntu container may require requesting the key manually using port 80
165- curl -sSL --retry ${NET_RETRY_COUNT:-5} 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xE1DD270288B4E6030699E45FA1715D88E1DF1F24' | sudo gpg --dearmor > /etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg
168+ curl -sSL --retry ${NET_RETRY_COUNT:-5} 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xE1DD270288B4E6030699E45FA1715D88E1DF1F24' | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg
166169 for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done
167170 apt-get -o Acquire::Retries=$NET_RETRY_COUNT update
168- apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y g++ python libpython-dev git locales
171+ osver=$(lsb_release -sr | cut -f1 -d.)
172+ pkgs="g++ git xz-utils"
173+ # Ubuntu 22+ has only Python 3 in the repos
174+ if [ -n "$osver" ] && [ "$osver" -ge "20" ]; then
175+ pkgs+=" python-is-python3 libpython3-dev"
176+ else
177+ pkgs+=" python libpython-dev"
178+ fi
179+ apt-get -o Acquire::Retries=$NET_RETRY_COUNT -y -q --no-install-suggests --no-install-recommends install $pkgs
169180 fi
170181 # For jobs not compatible with ccache, use "ccache: no" in the matrix
171182 if [[ "${{ matrix.ccache }}" == "no" ]]; then
172183 echo "B2_USE_CCACHE=0" >> $GITHUB_ENV
173184 fi
185+ if [[ "${{ matrix.sanitize }}" == "yes" ]]; then
186+ echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/test/suppressions.txt" >> $GITHUB_ENV
187+ fi
174188 git config --global pack.threads 0
175189 if [[ "${{matrix.container}}" == "ubuntu:1"* ]]; then
176190 # Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590
@@ -206,8 +220,8 @@ jobs:
206220 - name : Install packages
207221 if : startsWith(matrix.os, 'ubuntu')
208222 run : |
209- SOURCE_KEYS=(${{join(matrix.source_keys, ' ')}})
210- SOURCES=(${{join(matrix.sources, ' ')}})
223+ SOURCE_KEYS=(" ${{join(matrix.source_keys, '" " ')}}" )
224+ SOURCES=(" ${{join(matrix.sources, '" " ')}}" )
211225
212226 [[ "${{matrix.address-model}}" != *32* ]] || sudo dpkg --add-architecture i386
213227
@@ -218,22 +232,27 @@ jobs:
218232
219233 sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update
220234 if [[ -z "${{matrix.install}}" ]]; then
221- pkgs ="${{matrix.compiler}}"
222- pkgs="${pkgs /gcc-/g++-}"
235+ compiler ="${{matrix.compiler}}"
236+ pkgs="${compiler /gcc-/g++-}"
223237 [[ -z "${{matrix.gcc_toolchain}}" ]] || pkgs+=" g++-${{matrix.gcc_toolchain}}"
238+ if [[ "${{matrix.stdlib}}" == "libc++" && $compiler == "clang-"* ]]; then
239+ ver=${compiler#*-}
240+ pkgs+=" libc++-${ver}-dev libc++abi-${ver}-dev"
241+ fi
224242 else
225243 pkgs="${{matrix.install}}"
226244 fi
245+ pkgs+=" libicu-dev"
227246 [[ "${{matrix.address-model}}" != *32* ]] || pkgs+=" libicu-dev:i386"
228- sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs libicu-dev
247+ sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT -y -q --no- install-suggests --no-install-recommends install $pkgs
229248
230249 - name : Setup GCC Toolchain
231250 if : matrix.gcc_toolchain
232251 run : |
233252 GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain"
234253 echo "GCC_TOOLCHAIN_ROOT=$GCC_TOOLCHAIN_ROOT" >> $GITHUB_ENV
235254 if ! command -v dpkg-architecture; then
236- apt-get install -y dpkg-dev
255+ apt-get -o Acquire::Retries=$NET_RETRY_COUNT -y -q --no-install-suggests --no-install-recommends install dpkg-dev
237256 fi
238257 MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
239258 mkdir -p "$GCC_TOOLCHAIN_ROOT"
@@ -244,19 +263,16 @@ jobs:
244263
245264 - name : Setup multiarch
246265 if : matrix.multiarch
247- run : |
248- sudo apt-get install --no-install-recommends -y binfmt-support qemu-user-static
249- sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
250- git clone https://github.com/jeking3/bdde.git
251- echo "$(pwd)/bdde/bin/linux" >> ${GITHUB_PATH}
252- echo "BDDE_DISTRO=${{ matrix.distro }}" >> ${GITHUB_ENV}
253- echo "BDDE_EDITION=${{ matrix.edition }}" >> ${GITHUB_ENV}
254- echo "BDDE_ARCH=${{ matrix.arch }}" >> ${GITHUB_ENV}
255- echo "B2_WRAPPER=bdde" >> ${GITHUB_ENV}
266+ run : ci/github/setup_bdde.sh
267+ env :
268+ BDDE_DISTRO : ${{matrix.distro}}
269+ BDDE_EDITION : ${{matrix.edition}}
270+ BDDE_ARCH : ${{matrix.arch}}
256271
257272 - name : Install locales
258273 if : startsWith(matrix.os, 'ubuntu')
259274 run : |
275+ command -v locale-gen || sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install --no-install-recommends -y locales
260276 locales=$(locale -a)
261277 echo "Installed locales: $locales"
262278 function gen_locale() {
@@ -384,10 +400,10 @@ jobs:
384400 fail-fast : false
385401 matrix :
386402 include :
387- - { toolset: msvc-14.2, cxxstd: '14,17,20', addrmd: '32,64', os: windows-2019 }
388403 - { name: Collect coverage, coverage: yes,
389404 toolset : msvc-14.3, cxxstd: '14,17,20', addrmd: '32,64', os: windows-2022 }
390- - { toolset: gcc, cxxstd: '03,11,14,17,2a', addrmd: '64', os: windows-2019 }
405+ - { toolset: msvc-14.4, cxxstd: '14,17,20', addrmd: '32,64', os: windows-2025 }
406+ - { toolset: gcc, cxxstd: '03,11,14,17,2a', addrmd: '64', os: windows-2022 }
391407
392408 runs-on : ${{matrix.os}}
393409 env : {ICU_VERSION: '71.1'}
@@ -485,7 +501,7 @@ jobs:
485501 with :
486502 disable_search : true
487503 files : __out/cobertura.xml
488- name : Github Actions
504+ name : Github Actions (Windows)
489505 token : ${{secrets.CODECOV_TOKEN}}
490506 verbose : true
491507
@@ -555,13 +571,13 @@ jobs:
555571 fail-fast : false
556572 matrix :
557573 include :
558- - { os: ubuntu-20.04 , build_shared: ON, build_type: Debug, generator: 'Unix Makefiles' }
559- - { os: ubuntu-20.04 , build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles' }
560- - { os: ubuntu-20.04 , build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '71.1' }
561- - { os: ubuntu-22.04, build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '72.1' }
562- - { os: ubuntu-22.04, build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '73.1' }
563- - { os: windows-2019, build_shared: ON, build_type: Debug, generator: 'Visual Studio 16 2019 ', icu: '71.1' }
564- - { os: windows-2019, build_shared: OFF, build_type: Debug, generator: 'Visual Studio 16 2019 ', icu: '73.1' }
574+ - { os: ubuntu-latest , build_shared: ON, build_type: Debug, generator: 'Unix Makefiles' }
575+ - { os: ubuntu-latest , build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles' }
576+ - { os: ubuntu-latest , build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '71.1' }
577+ - { os: ubuntu-22.04, build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '72.1' }
578+ - { os: ubuntu-22.04, build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles', icu: '73.1' }
579+ - { os: windows-2022, build_shared: ON, build_type: Debug, generator: 'Visual Studio 17 2022 ', icu: '71.1' }
580+ - { os: windows-2022, build_shared: OFF, build_type: Debug, generator: 'Visual Studio 17 2022 ', icu: '73.1' }
565581
566582 timeout-minutes : 120
567583 runs-on : ${{matrix.os}}
0 commit comments