Skip to content

Commit 9b77757

Browse files
committed
Merge branch 'develop'
2 parents 28381f4 + 88bdae9 commit 9b77757

File tree

4 files changed

+127
-86
lines changed

4 files changed

+127
-86
lines changed

.appveyor.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,24 @@ branches:
1313
only:
1414
- master
1515
- develop
16+
- /appveyor\/.*/
1617
- /bugfix\/.*/
1718
- /feature\/.*/
1819
- /fix\/.*/
1920
- /pr\/.*/
2021

22+
skip_commits:
23+
files:
24+
- .drone.star
25+
- .github/workflows/*
26+
- .travis.yml
27+
- azure-pipelines/*
28+
- drone/*
29+
- travis/*
30+
- LICENSE
31+
- meta/*
32+
- README.md
33+
2134
matrix:
2235
fast_finish: false
2336
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
@@ -64,10 +77,16 @@ environment:
6477
# The VS2017 image has some issues which we workaround, so collect coverage for that.
6578
COVERAGE: true
6679

67-
- FLAVOR: Visual Studio 2019
80+
- FLAVOR: Visual Studio 2019 C++ 14/17
6881
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
6982
B2_CXXFLAGS: -permissive-
70-
B2_CXXSTD: 14,17,2a
83+
B2_CXXSTD: 14,17
84+
B2_TOOLSET: msvc-14.2
85+
86+
- FLAVOR: Visual Studio 2019 C++ 2a
87+
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
88+
B2_CXXFLAGS: -permissive-
89+
B2_CXXSTD: 2a
7190
B2_TOOLSET: msvc-14.2
7291

7392
- FLAVOR: Visual Studio 2022 C++ 14/17

.github/workflows/ci.yml

Lines changed: 63 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ on:
1818
- bugfix/**
1919
- feature/**
2020
- fix/**
21+
- github/**
2122
- pr/**
23+
paths-ignore:
24+
- LICENSE
25+
- meta/**
26+
- README.md
2227

2328
concurrency:
2429
group: ${{format('{0}:{1}', github.repository, github.ref)}}
@@ -79,7 +84,6 @@ jobs:
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}}

src/shared/mo_hash.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
// Distributed under the Boost Software License, Version 1.0.
55
// https://www.boost.org/LICENSE_1_0.txt
66

7+
#ifndef BOOST_SRC_LOCALE_MO_HASH_HPP
8+
#define BOOST_SRC_LOCALE_MO_HASH_HPP
9+
710
#include <cstdint>
811

912
namespace boost { namespace locale { namespace gnu_gettext {
@@ -49,3 +52,5 @@ namespace boost { namespace locale { namespace gnu_gettext {
4952
return state;
5053
}
5154
}}} // namespace boost::locale::gnu_gettext
55+
56+
#endif

0 commit comments

Comments
 (0)