Skip to content

Commit 428b4cc

Browse files
jackluo9234ertus2claude
committed
fix(build): Support CMake v4+ and GCC 15 toolchains, and upgrade C++ dependencies (fixes #795).
CMake v4 removed compatibility with `cmake_minimum_required` below v3.5, breaking yaml-cpp, libarchive, and the googletest that ANTLR's test build fetches. CLP previously capped this by pinning CMake below v4, which has since become actively harmful: the install script fails outright wherever CMake v4+ is the system package, since it only installs the pinned version when no `cmake` is already present. All three blockers are fixed here and the pin is retired, closing #795, which was reported in April 2025 against macOS with Homebrew. Separately, libstdc++ 15 stopped transitively including <cstdint>, so yaml-cpp 0.7.0 fails to compile under GCC 15. The yaml-cpp upgrade addresses both that and its CMake v4 incompatibility. With the ceiling gone, the three places that uninstalled a working CMake so the pin could reinstall an older one are removed, and centos-stream-9 now uses dnf's CMake. Only ubuntu-jammy still needs the pipx install, since its apt CMake (3.22.1) is below the v3.23 floor that ystdlib requires. `install-cmake.sh` is renamed to `ensure-cmake.sh` to match its now-primary role of validating the available CMake rather than installing one. Also upgrades libarchive (3.5.1/3.8.0 -> 3.8.9), SQLite3 (3.36.0 -> 3.53.4), Catch2, Microsoft.GSL, nlohmann_json, simdjson, utfcpp, zlib, and date, which had drifted well behind upstream. None of these required changes to CLP's own source. Supersedes and credits #2453, which surfaced these failures on Ubuntu 26.04 — the first environment to hit both toolchain shifts at once. Co-authored-by: Artem Zuikov <chertus@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 155fbda commit 428b4cc

9 files changed

Lines changed: 78 additions & 49 deletions

File tree

components/core/src/glt/glt/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ if(CLP_BUILD_EXECUTABLES)
191191
nlohmann_json::nlohmann_json
192192
${STD_FS_LIBS}
193193
clp::string_utils
194-
yaml-cpp
194+
yaml-cpp::yaml-cpp
195195
ystdlib::error_handling
196196
zstd::libzstd_static
197197
)

components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -o nounset
55
set -o pipefail
66

77
dnf install -y \
8+
cmake \
89
diffutils \
910
gcc-c++ \
1011
git \

components/core/tools/scripts/lib_install/libarchive.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,12 @@ cd ${extracted_dir}
6767
mkdir -p cmake-build-release
6868
cd cmake-build-release
6969
# NOTE: Disable Expat and OpenSSL so the static libarchive doesn't look for them at link time.
70-
cmake -DENABLE_EXPAT=OFF -DENABLE_OPENSSL=OFF ../
70+
# NOTE: Force the libdir to "lib" rather than letting `GNUInstallDirs` choose it. From v3.8.2
71+
# onwards, libarchive resolves it to "lib64" on 64-bit RHEL-family distros, but our images only put
72+
# "/usr/local/lib/pkgconfig" on `PKG_CONFIG_PATH`. A missed .pc file isn't an error, so
73+
# `pkg_check_modules` would silently yield no static dependencies and libarchive's `-lz` would drop
74+
# off the link line, failing much later with an undefined reference to `inflateEnd`.
75+
cmake -DCMAKE_INSTALL_LIBDIR=lib -DENABLE_EXPAT=OFF -DENABLE_OPENSSL=OFF ../
7176
make -j${num_cpus}
7277

7378
# Check if checkinstall is installed

components/core/tools/scripts/lib_install/manylinux_2_28/install-packages-from-source.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ lib_install_scripts_dir="${script_dir}/.."
1515
"${lib_install_scripts_dir}/liblzma.sh" 5.8.1
1616
"${lib_install_scripts_dir}/lz4.sh" 1.10.0
1717
"${lib_install_scripts_dir}/zstandard.sh" 1.5.7
18-
"${lib_install_scripts_dir}/libarchive.sh" 3.8.0
18+
"${lib_install_scripts_dir}/libarchive.sh" 3.8.9

components/core/tools/scripts/lib_install/musllinux_1_2/install-packages-from-source.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ lib_install_scripts_dir="${script_dir}/.."
1515
"${lib_install_scripts_dir}/liblzma.sh" 5.8.1
1616
"${lib_install_scripts_dir}/lz4.sh" 1.10.0
1717
"${lib_install_scripts_dir}/zstandard.sh" 1.5.7
18-
"${lib_install_scripts_dir}/libarchive.sh" 3.8.0
18+
"${lib_install_scripts_dir}/libarchive.sh" 3.8.9

components/core/tools/scripts/lib_install/pipx-packages/install-cmake.sh

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,33 @@ if ! command -v pipx >/dev/null 2>&1; then
99
exit 1
1010
fi
1111

12+
# NOTE: ystdlib requires CMake v3.23.
1213
readonly required_version_major_min=3
1314
readonly required_version_minor_min=23
1415
readonly required_version_min="${required_version_major_min}.${required_version_minor_min}"
15-
readonly required_version_major_max=3
16-
readonly required_version_major_max_plus_1=$((required_version_major_max + 1))
16+
17+
# NOTE: CLP builds with CMake v4+, but we don't install it by default. An environment that already
18+
# provides v4+ is accepted by the version check below; when we have to install CMake ourselves, we
19+
# stay on v3 so that adopting v4 remains a deliberate choice rather than a side effect of whatever
20+
# version happens to be newest.
21+
readonly installed_version_major_max_plus_1=4
1722

1823
package_preinstalled=0
1924
if ! command -v cmake >/dev/null 2>&1; then
2025
package_preinstalled=1
21-
# ystdlib requires CMake v3.23; ANTLR and yaml-cpp do not yet support CMake v4+
22-
# (see https://github.com/y-scope/clp/issues/795).
23-
pipx install --force "cmake>=${required_version_min},<${required_version_major_max_plus_1}"
26+
pipx install --force "cmake>=${required_version_min},<${installed_version_major_max_plus_1}"
2427
pipx ensurepath
2528
fi
2629

2730
installed_version=$(cmake -E capabilities | jq --raw-output ".version.string")
2831
installed_version_major=$(cmake -E capabilities | jq --raw-output ".version.major")
2932
installed_version_minor=$(cmake -E capabilities | jq --raw-output ".version.minor")
3033

31-
# ystdlib requires CMake v3.23; ANTLR and yaml-cpp do not yet support CMake v4+
32-
# (see https://github.com/y-scope/clp/issues/795).
3334
if (("${installed_version_major}" < "${required_version_major_min}")) \
3435
|| (("${installed_version_major}" == "${required_version_major_min}" && \
35-
"${installed_version_minor}" < "${required_version_minor_min}")) \
36-
|| (("${installed_version_major}" >= "${required_version_major_max_plus_1}")); then
37-
echo "Error: CMake version ${installed_version} is unsupported (require" \
38-
"${required_version_min} ≤ version < ${required_version_major_max_plus_1})."
36+
"${installed_version_minor}" < "${required_version_minor_min}")); then
37+
echo "Error: CMake version ${installed_version} is unsupported (require version" \
38+
"${required_version_min})."
3939

4040
if ((0 == "${package_preinstalled}")); then
4141
echo "Please uninstall CMake and then re-run the install script."

components/core/tools/scripts/lib_install/ubuntu-jammy/install-packages-from-source.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ set -o pipefail
77
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
88
lib_install_scripts_dir=$script_dir/..
99

10-
"$lib_install_scripts_dir"/libarchive.sh 3.5.1
10+
# NOTE: libarchive may statically link with LZMA, LZ4, and Zstandard, so we install them
11+
# beforehand.
1112
"$lib_install_scripts_dir"/liblzma.sh 5.8.1
1213
"$lib_install_scripts_dir"/lz4.sh 1.10.0
1314
"$lib_install_scripts_dir"/zstandard.sh 1.5.7
15+
"$lib_install_scripts_dir"/libarchive.sh 3.8.9

docs/src/dev-docs/components-core/index.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,26 @@ The task will download, build, and install (within the build directory) the foll
4040
| [abseil-cpp](https://github.com/abseil/abseil-cpp) | 20250512.0 |
4141
| [ANTLR](https://www.antlr.org) | v4.13.2 |
4242
| [Boost](https://github.com/boostorg/boost) | v1.87.0 |
43-
| [Catch2](https://github.com/catchorg/Catch2) | v3.8.0 |
44-
| [date](https://github.com/HowardHinnant/date) | v3.0.1 |
43+
| [Catch2](https://github.com/catchorg/Catch2) | v3.15.3 |
44+
| [date](https://github.com/HowardHinnant/date) | v3.0.5 |
4545
| [fmt](https://github.com/fmtlib/fmt) | v11.2.0 |
4646
| [liblzma](https://github.com/tukaani-project/xz) | v5.8.1 |
4747
| [log-surgeon](https://github.com/y-scope/log-surgeon) | 840f262 |
4848
| [lz4](https://github.com/lz4/lz4) | v1.10.0 |
49-
| [microsoft.gsl](https://github.com/microsoft/GSL) | v4.0.0 |
50-
| [mongo-cxx-driver](https://github.com/mongodb/mongo-cxx-driver) | r4.1.1 |
49+
| [microsoft.gsl](https://github.com/microsoft/GSL) | v4.2.2 |
50+
| [mongo-cxx-driver](https://github.com/mongodb/mongo-cxx-driver) | r4.4.1 |
5151
| [msgpack-cxx](https://github.com/msgpack/msgpack-c/tree/cpp_master) | v7.0.0 |
52-
| [nlohmann_json](https://github.com/nlohmann/json) | v3.11.3 |
52+
| [nlohmann_json](https://github.com/nlohmann/json) | v3.12.0 |
5353
| [opentelemetry-cpp](https://github.com/open-telemetry/opentelemetry-cpp) | v1.27.0 |
5454
| [Protobuf](https://github.com/protocolbuffers/protobuf) | v31.1 |
55-
| [simdjson](https://github.com/simdjson/simdjson) | v4.6.4 |
55+
| [simdjson](https://github.com/simdjson/simdjson) | v4.6.6 |
5656
| [spdlog](https://github.com/gabime/spdlog) | v1.15.3 |
57-
| [SQLite3](https://www.sqlite.org/download.html) | v3.36.0 |
58-
| [utfcpp](https://github.com/nemtrif/utfcpp) | v4.0.6 |
57+
| [SQLite3](https://www.sqlite.org/download.html) | v3.53.4 |
58+
| [utfcpp](https://github.com/nemtrif/utfcpp) | v4.1.1 |
5959
| [xxHash](https://github.com/Cyan4973/xxHash) | v0.8.3 |
60-
| [yaml-cpp](https://github.com/jbeder/yaml-cpp) | v0.7.0 |
60+
| [yaml-cpp](https://github.com/jbeder/yaml-cpp) | v0.9.0 |
6161
| [ystdlib-cpp](https://github.com/y-scope/ystdlib-cpp) | 9ed78cd |
62-
| [zlib](https://github.com/madler/zlib) | v1.3.1 |
62+
| [zlib](https://github.com/madler/zlib) | v1.3.2 |
6363
| [zstd](https://github.com/facebook/zstd) | v1.5.7 |
6464

6565
### Environment

taskfiles/deps/main.yaml

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,11 @@ tasks:
190190
BUILD_DIR: "{{.BUILD_DIR}}"
191191
EXTRA_ARGS:
192192
- "-DANTLR4_INSTALL=ON"
193+
194+
# ANTLR's test build `FetchContent`s a googletest whose CMakeLists declares
195+
# `cmake_minimum_required(VERSION 2.8.12)`, which CMake v4+ rejects outright. We don't
196+
# run ANTLR's tests, so disable them.
197+
- "-DANTLR_BUILD_CPP_TESTS=OFF"
193198
- "-DCMAKE_BUILD_TYPE=Release"
194199
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
195200

@@ -249,8 +254,8 @@ tasks:
249254
- "-DCMAKE_CXX_STANDARD_REQUIRED=ON"
250255
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
251256
LIB_NAME: "Catch2"
252-
TARBALL_SHA256: "1ab2de20460d4641553addfdfe6acd4109d871d5531f8f519a52ea4926303087"
253-
TARBALL_URL: "https://github.com/catchorg/Catch2/archive/refs/tags/v3.8.0.tar.gz"
257+
TARBALL_SHA256: "b0299ae552918220a7a6e21e7de5b714777f4e8c883fb70c4bb23fe01df8c6e3"
258+
TARBALL_URL: "https://github.com/catchorg/Catch2/archive/refs/tags/v3.15.3.tar.gz"
254259

255260
date:
256261
internal: true
@@ -262,8 +267,8 @@ tasks:
262267
- "-DCMAKE_BUILD_TYPE=Release"
263268
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
264269
LIB_NAME: "date"
265-
TARBALL_SHA256: "7a390f200f0ccd207e8cff6757e04817c1a0aec3e327b006b7eb451c57ee3538"
266-
TARBALL_URL: "https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.1.tar.gz"
270+
TARBALL_SHA256: "ef786edc203daec76475825640b3af247bd08e31fc52217e5ce8f76107b4bb05"
271+
TARBALL_URL: "https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.5.tar.gz"
267272

268273
fmt:
269274
internal: true
@@ -401,28 +406,42 @@ tasks:
401406
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
402407
- "-DGSL_TEST=OFF"
403408
LIB_NAME: "{{.G_GSL_LIB_NAME}}"
404-
TARBALL_SHA256: "f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9"
405-
TARBALL_URL: "https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz"
409+
TARBALL_SHA256: "59e2a0a0ea22e8bcf9db2dc4d4bd21212ac6595748295fc27a7e02cf75eac4b5"
410+
TARBALL_URL: "https://github.com/microsoft/GSL/archive/refs/tags/v4.2.2.tar.gz"
406411

407412
mongocxx:
408413
internal: true
409414
vars:
410-
VERSION: "r4.1.1"
415+
VERSION: "r4.4.1"
416+
417+
# The version without the leading "r", for `BUILD_VERSION` below.
418+
VERSION_NUMBER: "4.4.1"
411419
run: "once"
412420
cmds:
413421
- task: "utils:install-remote-cmake-lib"
414422
vars:
415423
CMAKE_GEN_ARGS:
416424
- "-DBUILD_SHARED_AND_STATIC_LIBS=ON"
417425
- "-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON"
426+
427+
# The GitHub-generated source tarball (see the `TARBALL_URL` note) omits the
428+
# `VERSION_CURRENT` file that the release tarball carries, so the version can't be
429+
# derived and has to be passed explicitly.
430+
- "-DBUILD_VERSION={{.VERSION_NUMBER}}"
418431
- "-DCMAKE_BUILD_TYPE=Release"
419432
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
420433
- "-DENABLE_SNAPPY=OFF"
421434
- "-DENABLE_UNINSTALL=OFF"
422435
LIB_NAME: "mongocxx"
423-
TARBALL_SHA256: "19dff3cf834a3e09229260f22a0325820a7e30c78b294db91794dd934776b33a"
424-
TARBALL_URL: "https://github.com/mongodb/mongo-cxx-driver/releases/download/{{.VERSION}}\
425-
/mongo-cxx-driver-{{.VERSION}}.tar.gz"
436+
TARBALL_SHA256: "f43d6d8d0783357d200f14b009f25f4563e6dffefd12c248cf31282a3c86157d"
437+
438+
# NOTE: We use the GitHub-generated source tarball rather than the release tarball, since
439+
# the r4.4.1 release tarball was packaged on macOS and contains AppleDouble ("._*") files.
440+
# Those match the examples' `GLOB_RECURSE "*.cpp"`, and `NAME_WE` resolves to an empty
441+
# string for them, so every one collapses onto the same target name and configuration
442+
# fails with a duplicate-target error.
443+
TARBALL_URL: "https://github.com/mongodb/mongo-cxx-driver/archive/refs/tags/\
444+
{{.VERSION}}.tar.gz"
426445

427446
msgpack-cxx:
428447
internal: true
@@ -457,12 +476,12 @@ tasks:
457476
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
458477
- "-DJSON_BuildTests=OFF"
459478
LIB_NAME: "nlohmann_json"
460-
TARBALL_SHA256: "0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406"
479+
TARBALL_SHA256: "4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187"
461480

462481
# NOTE: We use the GitHub-generated source tarball for this version rather than the
463482
# release tarball, since the latter is served from githubusercontent.com which is blocked
464483
# by some developers' firewalls. The contents of the former are a superset of the latter.
465-
TARBALL_URL: "https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz"
484+
TARBALL_URL: "https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.tar.gz"
466485

467486
opentelemetry-cpp:
468487
internal: true
@@ -531,8 +550,8 @@ tasks:
531550
- "-DCMAKE_BUILD_TYPE=Release"
532551
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
533552
LIB_NAME: "simdjson"
534-
TARBALL_SHA256: "b091107844fe928158c5c2265c20360fff312889ddf7ebc4528a0f0f8f2ff9cd"
535-
TARBALL_URL: "https://github.com/simdjson/simdjson/archive/refs/tags/v4.6.4.tar.gz"
553+
TARBALL_SHA256: "1cd4c4c18263d2ae1f0cd5d4ba8b14e679b5a419ca15988a0da4cf43c514f28d"
554+
TARBALL_URL: "https://github.com/simdjson/simdjson/archive/refs/tags/v4.6.6.tar.gz"
536555

537556
spdlog:
538557
internal: true
@@ -566,7 +585,7 @@ tasks:
566585
EXTRACTION_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-src"
567586
INSTALL_INCLUDE_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install/include"
568587
INSTALL_SYMLINK: "{{.INSTALL_INCLUDE_DIR}}/{{.LIB_NAME}}"
569-
ZIP_FILENAME_STEM: "sqlite-amalgamation-3360000"
588+
ZIP_FILENAME_STEM: "sqlite-amalgamation-3530400"
570589
SRC_DIR: "{{.EXTRACTION_DIR}}/{{.ZIP_FILENAME_STEM}}"
571590
run: "once"
572591
deps:
@@ -575,9 +594,11 @@ tasks:
575594
- task: "yscope-dev-utils:remote:download-and-extract-zip"
576595
vars:
577596
CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5"
578-
FILE_SHA256: "999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729"
597+
# NOTE: sqlite.org publishes SHA3-256 hashes, not SHA-256, so this value must be computed
598+
# from the downloaded archive rather than copied from the download page.
599+
FILE_SHA256: "1e71ddf93849c6a6ecf58b827c0692073d2dd7ee40196158068f7b29f422e87d"
579600
OUTPUT_DIR: "{{.EXTRACTION_DIR}}"
580-
URL: "https://www.sqlite.org/2021/{{.ZIP_FILENAME_STEM}}.zip"
601+
URL: "https://www.sqlite.org/2026/{{.ZIP_FILENAME_STEM}}.zip"
581602
- "mkdir -p '{{.INSTALL_INCLUDE_DIR}}'"
582603
- "rm -f '{{.INSTALL_SYMLINK}}'"
583604
- "ln -s '{{.SRC_DIR}}' '{{.INSTALL_SYMLINK}}'"
@@ -599,9 +620,9 @@ tasks:
599620
- task: "yscope-dev-utils:remote:download-and-extract-tar"
600621
vars:
601622
CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5"
602-
FILE_SHA256: "6920a6a5d6a04b9a89b2a89af7132f8acefd46e0c2a7b190350539e9213816c0"
623+
FILE_SHA256: "1ca68016f0abc24172998e39ce0d8f8e2b7a26f7579a0ff85d4e1b9a7aea56f8"
603624
OUTPUT_DIR: "{{.UTFCPP_OUTPUT_DIR}}"
604-
URL: "https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.0.6.tar.gz"
625+
URL: "https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.1.1.tar.gz"
605626
- >-
606627
echo "set(
607628
CLP_UTFCPP_INCLUDE_DIRECTORY \"{{.UTFCPP_OUTPUT_DIR}}\"
@@ -635,8 +656,8 @@ tasks:
635656
- "-DCMAKE_BUILD_TYPE=Release"
636657
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
637658
LIB_NAME: "yaml-cpp"
638-
TARBALL_SHA256: "43e6a9fcb146ad871515f0d0873947e5d497a1c9c60c58cb102a97b47208b7c3"
639-
TARBALL_URL: "https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.7.0.tar.gz"
659+
TARBALL_SHA256: "25cb043240f828a8c51beb830569634bc7ac603978e0f69d6b63558dadefd49a"
660+
TARBALL_URL: "https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.9.0.tar.gz"
640661

641662
ystdlib:
642663
internal: true
@@ -669,8 +690,8 @@ tasks:
669690
- "-DCMAKE_INSTALL_PREFIX={{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install"
670691
- "-DZLIB_BUILD_EXAMPLES=OFF"
671692
LIB_NAME: "{{.LIB_NAME}}"
672-
TARBALL_SHA256: "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23"
673-
TARBALL_URL: "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz"
693+
TARBALL_SHA256: "bb329a0a2cd0274d05519d61c667c062e06990d72e125ee2dfa8de64f0119d16"
694+
TARBALL_URL: "https://github.com/madler/zlib/releases/download/v1.3.2/zlib-1.3.2.tar.gz"
674695

675696
zstd:
676697
internal: true

0 commit comments

Comments
 (0)