Copilot commented on code in PR #282: URL: https://github.com/apache/fluss-rust/pull/282#discussion_r2778905849
########## bindings/cpp/README.md: ########## @@ -0,0 +1,57 @@ +<!-- + 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. +--> + +# Apache Fluss™ C++ Bindings (Incubating) + +C++ bindings for Fluss, built on top of the [fluss-rust](../../crates/fluss) client. The API is exposed via a C++ header ([include/fluss.hpp](include/fluss.hpp)) and implemented with Rust FFI. + +## Requirements + +- Rust (see [rust-toolchain.toml](../../rust-toolchain.toml) at repo root) +- C++17-capable compiler +- CMake 3.18+ and/or Bazel +- Apache Arrow (for Arrow-based APIs) + +## Build + +From the repository root or from `bindings/cpp`: + +**With CMake:** + +```bash +cd bindings/cpp +mkdir build && cd build +cmake .. +cmake --build . +``` + +**With Bazel:** + +```bash +cd bindings/cpp +bazel build //... +``` +See [ci.sh](ci.sh) for the CI build sequence. + + +## TODO + +- [] How to introduce fluss-cpp in your own project, https://github.com/apache/opendal/blob/main/bindings/cpp/README.md is a good reference Review Comment: Markdown task list item is malformed (`- [] ...`) so it won’t render as an unchecked checkbox. Use the standard task list syntax (`- [ ] ...`). ```suggestion - [ ] How to introduce fluss-cpp in your own project, https://github.com/apache/opendal/blob/main/bindings/cpp/README.md is a good reference ``` ########## docs/verifying-a-release-candidate.md: ########## @@ -0,0 +1,142 @@ +<!-- + 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. +--> + +# How to Verify a Release Candidate + +This document describes how to verify a release candidate (RC) of the **Fluss clients** (fluss-rust, fluss-python, fluss-cpp) from the [fluss-rust](https://github.com/apache/fluss-rust) repository. It is intended for anyone participating in the release vote (binding or non-binding) and is based on [Verifying a Fluss Release](https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/) of the Apache Fluss project, adapted for the fluss-rust source distribution and tooling (Rust, Python, C++). + +## Validating distributions + +The release vote email includes links to: + +- **Distribution archive:** source tarball (`fluss-rust-${RELEASE_VERSION}-incubating.tar.gz`) on [dist.apache.org dev](https://dist.apache.org/repos/dist/dev/incubator/fluss/) +- **Signature file:** `fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.asc` +- **Checksum file:** `fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.sha512` +- **KEYS file:** [https://downloads.apache.org/incubator/fluss/KEYS](https://downloads.apache.org/incubator/fluss/KEYS) + +Download the archive, `.asc`, and `.sha512` from the RC directory (e.g. `fluss-rust-0.1.0-rc1/`) and the KEYS file. Then follow the steps below to verify signatures and checksums. + +## Verifying signatures + +First, import the keys into your local keyring: + +```bash +curl https://downloads.apache.org/incubator/fluss/KEYS -o KEYS +gpg --import KEYS +``` + +Next, verify all `.asc` files: + +```bash +for i in *.tgz; do echo $i; gpg --verify $i.asc $i; done Review Comment: The signature verification loop uses `*.tgz`, but the release artifacts described in this doc (and produced by scripts/release.sh) are `*.tar.gz`. As written, the loop won’t match the downloaded tarball(s), so the signature check step will fail. Update the glob (and corresponding `.asc` name) to use `.tar.gz` (or iterate over `*.tar.gz.asc`). ```suggestion for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i; done ``` ########## docs/verifying-a-release-candidate.md: ########## @@ -0,0 +1,142 @@ +<!-- + 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. +--> + +# How to Verify a Release Candidate + +This document describes how to verify a release candidate (RC) of the **Fluss clients** (fluss-rust, fluss-python, fluss-cpp) from the [fluss-rust](https://github.com/apache/fluss-rust) repository. It is intended for anyone participating in the release vote (binding or non-binding) and is based on [Verifying a Fluss Release](https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/) of the Apache Fluss project, adapted for the fluss-rust source distribution and tooling (Rust, Python, C++). + +## Validating distributions + +The release vote email includes links to: + +- **Distribution archive:** source tarball (`fluss-rust-${RELEASE_VERSION}-incubating.tar.gz`) on [dist.apache.org dev](https://dist.apache.org/repos/dist/dev/incubator/fluss/) +- **Signature file:** `fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.asc` +- **Checksum file:** `fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.sha512` +- **KEYS file:** [https://downloads.apache.org/incubator/fluss/KEYS](https://downloads.apache.org/incubator/fluss/KEYS) + +Download the archive, `.asc`, and `.sha512` from the RC directory (e.g. `fluss-rust-0.1.0-rc1/`) and the KEYS file. Then follow the steps below to verify signatures and checksums. + +## Verifying signatures + +First, import the keys into your local keyring: + +```bash +curl https://downloads.apache.org/incubator/fluss/KEYS -o KEYS +gpg --import KEYS +``` + +Next, verify all `.asc` files: + +```bash +for i in *.tgz; do echo $i; gpg --verify $i.asc $i; done +``` + +If verification succeeds, you will see a message like: + +```text +gpg: Signature made ... +gpg: using RSA key ... +gpg: Good signature from "Release Manager Name (CODE SIGNING KEY) <[email protected]>" +``` + +## Verifying checksums + +Next, verify the tarball(s) using the provided `.sha512` file(s). Each `.sha512` file lists the expected SHA-512 hash for the corresponding archive; `-c` reads that file and checks the archive. + +**On macOS (shasum):** + +```bash +shasum -a 512 -c fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.sha512 +``` + +**On Linux (sha512sum):** + +```bash +sha512sum -c fluss-rust-${RELEASE_VERSION}-incubating.tar.gz.sha512 +``` + +If you have multiple archives, run `-c` on each `.sha512` file (or use `shasum -a 512 -c *.sha512` / `sha512sum -c *.sha512`). + +If the verification is successful, you will see a message like this: + +```text +fluss-rust-0.1.0-incubating.tar.gz: OK +``` + +## Verifying build + +Extract the source release archive and verify that it builds (and optionally that tests pass). You need **Rust** (see [rust-toolchain.toml](https://github.com/apache/fluss-rust/blob/main/rust-toolchain.toml) for the expected version) and, for full builds, **protobuf** and **Python 3.9+** for bindings. + +```bash +tar -xzf fluss-rust-${RELEASE_VERSION}-incubating.tar.gz +cd fluss-rust-${RELEASE_VERSION}-incubating +``` + +Build the workspace: + +```bash +cargo build --workspace --release +``` + +For Python bindings, see the project [README](https://github.com/apache/fluss-rust#readme) and [Development Guide](https://github.com/apache/fluss-rust/blob/main/DEVELOPMENT.md). For C++ bindings, see `bindings/cpp/`. + +## Verifying LICENSE and NOTICE + +Unzip the source release archive and verify that: Review Comment: This section says “Unzip the source release archive”, but the RC artifact is a `.tar.gz` (tarball). Consider changing wording to “Extract” to avoid confusion (and keep terminology consistent with the earlier `tar -xzf ...` step). ```suggestion Extract the source release archive and verify that: ``` -- 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]
