hongzhi-gao opened a new pull request, #17801:
URL: https://github.com/apache/iotdb/pull/17801
## Summary
Refactor the C++ Session client packaging/build path to be release-friendly
and integrator-friendly: single CMake entry, CI package matrix, flatter SDK zip
layout, and checksum artifacts.
---
### 1. User-friendly release layout (flattened)
Release zip packages are intentionally minimal and now use a **flat root
layout**:
- `include/` — public IoTDB Session API headers (e.g. `Session.h`,
`SessionBuilder.h`, `SessionC.h`, `Common.h`, ...)
- `lib/` — one runtime library:
- Linux: `libiotdb_session.so`
- macOS: `libiotdb_session.dylib`
- Windows: `iotdb_session.dll` + import `iotdb_session.lib`
Not shipped in the package (and not required by SDK consumers):
- Apache Thrift headers/libs/generated artifacts
- Boost headers/libs
Package artifact format:
- `client-cpp-<version>-<classifier>.zip`
- unzip result is directly `include/` + `lib/` at root (no extra nested
directory layer)
Also added checksum generation:
- `client-cpp-<version>-<classifier>.zip.sha512`
---
### 2. Ops-friendly CI: package matrix + validation
#### Release packaging workflow (`client-cpp-package.yml`)
The workflow builds and uploads one package per target/toolchain (triggered
by manual dispatch, `release:published`, `v*` tags, and `rc/**` with C++ path
changes):
| Target | Classifier | Notes |
|---|---|---|
| Windows x64 + VS 2017 | `windows-x86_64-vs2017` |
| Windows x64 + VS 2019 | `windows-x86_64-vs2019` |
| Windows x64 + VS 2022 | `windows-x86_64-vs2022` |
| Windows x64 + VS 2026 | `windows-x86_64-vs2026` |
| Linux x86_64, glibc baseline 2.17 | `linux-x86_64-glibc217` |
| Linux aarch64, glibc baseline 2.17 | `linux-aarch64-glibc217` |
| Linux x86_64, glibc baseline 2.24 + CXX11 ABI | `linux-x86_64-glibc224` |
| Linux aarch64, glibc baseline 2.24 + CXX11 ABI | `linux-aarch64-glibc224`
|
| macOS x86_64 | `mac-x86_64` |
| macOS arm64 | `mac-aarch64` |
Workflow-level hardening:
- uploads both `.zip` and `.zip.sha512` artifacts together
---
### 3. Developer-friendly build model
C++ client is driven by a single entry point:
- `iotdb-client/client-cpp/CMakeLists.txt`
CMake modules under `cmake/` handle dependency/toolchain bootstrap and
Thrift source generation. Build output is installed to `target/install`, then
Maven wraps:
- cmake configure/build/install
- optional tests
- assembly package
- checksum generation
Standalone build remains supported:
```bash
cmake -S iotdb-client/client-cpp -B build && cmake --build build --target
install
```
---
### 4. Additional cleanups included
- merged C session examples into `example/client-cpp-example`
- updated docs/examples to match new package layout and classifiers
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]