Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
13802a0
Refactor client-cpp build to single CMake entry with portable third-p…
hongzhi-gao May 20, 2026
3e3629d
Fix macOS client-cpp CI bison version and add source-build workflow
hongzhi-gao May 20, 2026
7696396
Fix client-cpp-source-build: install clang-format-17 on all runners
hongzhi-gao May 25, 2026
1037137
Skip Spotless in client-cpp-source-build; drop clang-format install
hongzhi-gao May 25, 2026
2f175f3
Refactor C++ client SDK: isolate Thrift and ship Windows DLL.
hongzhi-gao May 25, 2026
27fc230
fix(client-cpp): include ctime for std::tm in Common.h
hongzhi-gao May 26, 2026
25e5a48
fix(client-cpp): CMake 4 Thrift policy and Session.cpp cstring
hongzhi-gao May 26, 2026
5ce0b02
fix(client-cpp): Linux Thrift link and default Boost 1.84
hongzhi-gao May 26, 2026
3864b94
fix(client-cpp): Linux Thrift link and macOS Boost 1.84
hongzhi-gao May 26, 2026
75832c9
ci(client-cpp): multi-toolchain package matrix for release zips
hongzhi-gao May 26, 2026
26da433
fix(ci): write windows_matrix to GITHUB_OUTPUT without invalid format
hongzhi-gao May 26, 2026
c58826b
fix(ci): scope C++ triggers, glibc231 arm64, CentOS7 and VS2015 boost
hongzhi-gao May 26, 2026
213356a
fix(ci): docker-based glibc builds, CMake 3.28 on arm64, drop VS2015
hongzhi-gao May 26, 2026
0238f24
fix(client-cpp): flatten package zip name and layout
hongzhi-gao May 26, 2026
776f65a
fix(ci): pin CentOS7 SCLo repos to vault 7.9.2009 for glibc217
hongzhi-gao May 26, 2026
6226915
fix(ci): build glibc217 in manylinux2014 job container
hongzhi-gao May 26, 2026
f633f3b
fix(ci): host checkout + docker manylinux2014 for glibc217
hongzhi-gao May 26, 2026
8cacdb1
fix(ci): avoid SIGPIPE 141 from head/tail under pipefail
hongzhi-gao May 26, 2026
5b50e61
fix(client-cpp): force x64 for Visual Studio Windows packages
hongzhi-gao May 26, 2026
1e3cb7b
fix(ci): build linux-aarch64 glibc217 with manylinux2014
hongzhi-gao May 26, 2026
0b97892
fix(client-cpp): PR review follow-ups for SDK branch
hongzhi-gao May 26, 2026
2877b2d
chore(ci): slim manylinux glibc217 package path
hongzhi-gao May 27, 2026
31438de
refactor(client-cpp): rename IoTDBDate and move tests
hongzhi-gao May 27, 2026
252894a
example: merge C Session demos into client-cpp-example
hongzhi-gao May 27, 2026
a52c9a3
style(client-cpp): apply spotless to C examples
hongzhi-gao May 27, 2026
f744a14
fix(ci): use curl for downloads in manylinux glibc217 script
hongzhi-gao May 27, 2026
30c55e7
fix(ci): use curl directly in manylinux glibc217 script
hongzhi-gao May 27, 2026
3501aac
fix(client-cpp): centralize SessionConfig defaults and align fetchSiz…
hongzhi-gao May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions .github/scripts/package-client-cpp-manylinux-glibc217.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with this
# work for additional information regarding copyright ownership. The ASF
# licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Build client-cpp in manylinux2014 and verify max required GLIBC symbol <= 2.17.
set -euxo pipefail

MACHINE=$(uname -m)
case "${MACHINE}" in
x86_64)
CMAKE_PKG_ARCH=linux-x86_64
JDK_API_ARCH=linux/x64
DEFAULT_CLASSIFIER=linux-x86_64-glibc217
;;
aarch64)
CMAKE_PKG_ARCH=linux-aarch64
JDK_API_ARCH=linux/aarch64
DEFAULT_CLASSIFIER=linux-aarch64-glibc217
;;
*)
echo "Unsupported architecture: ${MACHINE}" >&2
exit 1
;;
esac

PACKAGE_CLASSIFIER="${PACKAGE_CLASSIFIER:-${DEFAULT_CLASSIFIER}}"

CMAKE_VERSION=3.28.4
CMAKE_DIR="/opt/cmake-${CMAKE_VERSION}"
if [[ ! -x "${CMAKE_DIR}/bin/cmake" ]]; then
curl -fsSL -o /tmp/cmake.tar.gz "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-${CMAKE_PKG_ARCH}.tar.gz"
rm -rf "${CMAKE_DIR}"
mkdir -p /opt
tar xf /tmp/cmake.tar.gz -C /opt
mv "/opt/cmake-${CMAKE_VERSION}-${CMAKE_PKG_ARCH}" "${CMAKE_DIR}"
fi

JAVA_HOME=/opt/jdk-17
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
curl -fsSL -o /tmp/jdk17.tar.gz "https://api.adoptium.net/v3/binary/latest/17/ga/${JDK_API_ARCH}/jdk/hotspot/normal/eclipse?project=jdk"
rm -rf /opt/jdk-17*
mkdir -p /opt
tar xf /tmp/jdk17.tar.gz -C /opt
JAVA_HOME=$(find /opt -maxdepth 1 -type d -name 'jdk-17*' -print -quit)
ln -sfn "${JAVA_HOME}" /opt/jdk-17
JAVA_HOME=/opt/jdk-17
fi

export PATH="${CMAKE_DIR}/bin:${JAVA_HOME}/bin:${PATH}"
export JAVA_HOME

gcc --version
cmake --version
java -version

cd "${GITHUB_WORKSPACE:?GITHUB_WORKSPACE is not set}"
./mvnw clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests \
-Dspotless.skip=true \
-Dclient.cpp.package.classifier="${PACKAGE_CLASSIFIER}"

SO="iotdb-client/client-cpp/target/install/lib/libiotdb_session.so"
test -f "${SO}"

echo "=== Build host glibc ==="
ldd --version 2>&1 | sed -n '1p'

echo "=== Highest GLIBC_* symbols in libiotdb_session.so ==="
objdump -T "${SO}" | grep GLIBC_ | sed "s/.*GLIBC_/GLIBC_/" | sort -Vu | tail -10

max_glibc=$(objdump -T "${SO}" | grep -oE "GLIBC_[0-9.]+" | sed "s/GLIBC_//" | sort -t. -k1,1n -k2,2n -k3,3n | tail -1)
echo "max_glibc=${max_glibc}"

if awk -v max="${max_glibc}" "BEGIN { exit !(max > 2.17) }"; then
echo "ERROR: libiotdb_session.so requires glibc > 2.17 (max=${max_glibc})"
exit 1
fi

echo "glibc compatibility check passed (max=${max_glibc} <= 2.17)"
Loading
Loading