This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/paimon-rust.git
The following commit(s) were added to refs/heads/main by this push:
new 0244f1a ci: cherry-pick CI fixes from release-0.1 to main (#311)
0244f1a is described below
commit 0244f1a614599ed64d6712420c79534fcc0d834d
Author: yuxia Luo <[email protected]>
AuthorDate: Mon May 11 12:18:28 2026 +0800
ci: cherry-pick CI fixes from release-0.1 to main (#311)
---
.github/workflows/release-go-binding.yml | 36 ++++++++++++------
.github/workflows/release-rust.yml | 17 ++++++++-
.github/workflows/release_python_binding.yml | 55 ++++++++++++++++++++++++++++
Cargo.toml | 1 +
crates/integrations/datafusion/Cargo.toml | 2 +-
5 files changed, 98 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/release-go-binding.yml
b/.github/workflows/release-go-binding.yml
index 5e3375c..da8894c 100644
--- a/.github/workflows/release-go-binding.yml
+++ b/.github/workflows/release-go-binding.yml
@@ -116,10 +116,20 @@ jobs:
ref: ${{ needs.validate.outputs.source_sha }}
- name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
+ run: |
+ rustup update stable
+ rustup default stable
- name: Cache Rust build outputs
- uses: Swatinem/rust-cache@v2
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ target/
+ key: ${{ runner.os }}-${{ runner.arch }}-cargo-${{
hashFiles('**/Cargo.lock') }}
- name: Install zstd on Linux
if: runner.os == 'Linux'
@@ -197,12 +207,16 @@ jobs:
git push origin "refs/tags/$TAG"
- name: Create GitHub release
- uses: softprops/action-gh-release@v3
- with:
- tag_name: ${{ needs.validate.outputs.tag }}
- generate_release_notes: true
- files: |
- bindings/go/libpaimon_c.linux.amd64.so.zst
- bindings/go/libpaimon_c.linux.arm64.so.zst
- bindings/go/libpaimon_c.darwin.amd64.dylib.zst
- bindings/go/libpaimon_c.darwin.arm64.dylib.zst
+ env:
+ TAG: ${{ needs.validate.outputs.tag }}
+ VERSION: ${{ needs.validate.outputs.version }}
+ GH_TOKEN: ${{ github.token }}
+ working-directory: bindings/go
+ run: |
+ gh release create "$TAG" \
+ --title "Release Go binding $VERSION" \
+ --generate-notes \
+ libpaimon_c.linux.amd64.so.zst \
+ libpaimon_c.linux.arm64.so.zst \
+ libpaimon_c.darwin.amd64.dylib.zst \
+ libpaimon_c.darwin.arm64.dylib.zst
diff --git a/.github/workflows/release-rust.yml
b/.github/workflows/release-rust.yml
index 13e3dab..05a0240 100644
--- a/.github/workflows/release-rust.yml
+++ b/.github/workflows/release-rust.yml
@@ -48,9 +48,13 @@ jobs:
- uses: actions/checkout@v6
- name: Setup Rust toolchain
- uses: dtolnay/rust-toolchain@stable
+ run: |
+ rustup update stable
+ rustup default stable
- name: Dry run
+ # Only dry-run paimon since paimon-datafusion depends on it
+ if: matrix.package == 'paimon'
run: cargo publish -p ${{ matrix.package }} --all-features --dry-run
- name: Publish ${{ matrix.package }} to crates.io
@@ -58,3 +62,14 @@ jobs:
run: cargo publish -p ${{ matrix.package }} --all-features
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
+
+ - name: Wait for crates.io to update
+ if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-')
&& matrix.package == 'paimon'
+ run: |
+ VERSION=${GITHUB_REF_NAME#v}
+ for i in {1..10}; do
+ CURRENT=$(curl -s https://crates.io/api/v1/crates/paimon | jq -r
'.crate.max_version')
+ [ "$CURRENT" = "$VERSION" ] && echo "✅ paimon $VERSION available"
&& exit 0
+ echo "Waiting for $VERSION (currently $CURRENT)... $i/10"
+ sleep 30
+ done
diff --git a/.github/workflows/release_python_binding.yml
b/.github/workflows/release_python_binding.yml
index 81cb466..c3dc05a 100644
--- a/.github/workflows/release_python_binding.yml
+++ b/.github/workflows/release_python_binding.yml
@@ -48,6 +48,8 @@ jobs:
working-directory: bindings/python
command: sdist
args: -o dist
+ before-script-linux: |
+ sudo apt-get update && sudo apt-get install -y libssl-dev
- name: Upload sdist
uses: actions/upload-artifact@v7
@@ -75,6 +77,59 @@ jobs:
command: build
args: --release -o dist
manylinux: ${{ matrix.manylinux || 'auto' }}
+ before-script-linux: |
+ # Install OpenSSL for x86_64 (manylinux2014 with OpenSSL 1.1)
+ if [ "${{ matrix.target }}" = "x86_64" ]; then
+ yum install -y openssl11-devel
+ # Create symlinks so pkg-config finds openssl11 as openssl
+ ln -sf /usr/lib64/pkgconfig/openssl11.pc
/usr/lib64/pkgconfig/openssl.pc
+ ln -sf /usr/lib64/pkgconfig/libssl11.pc
/usr/lib64/pkgconfig/libssl.pc
+ ln -sf /usr/lib64/pkgconfig/libcrypto11.pc
/usr/lib64/pkgconfig/libcrypto.pc
+ fi
+
+ # Install precompiled OpenSSL from Debian packages for aarch64
+ if [ "${{ matrix.target }}" = "aarch64" ]; then
+ set -e
+ echo "Installing OpenSSL for aarch64 from Debian packages..."
+
+ (cd /tmp
+ # Debian Bullseye arm64 packages (OpenSSL 1.1.1)
+ DEBIAN_MIRROR="http://ftp.debian.org/debian/pool/main/o/openssl"
+ curl -sLO "${DEBIAN_MIRROR}/libssl1.1_1.1.1w-0+deb11u1_arm64.deb"
+ curl -sLO
"${DEBIAN_MIRROR}/libssl-dev_1.1.1w-0+deb11u1_arm64.deb"
+
+ # Extract .deb packages (ar format)
+ for deb in *.deb; do
+ ar x "$deb"
+ tar xf data.tar.*
+ rm -f debian-binary control.tar.* data.tar.*
+ done
+
+ # Install to maturin's expected location
+ TARGET_DIR="/usr/aarch64-unknown-linux-gnu"
+ mkdir -p "${TARGET_DIR}/include/openssl" "${TARGET_DIR}/lib"
+
+ # Copy main OpenSSL headers (architecture-independent)
+ cp -r usr/include/openssl/* "${TARGET_DIR}/include/openssl/"
+
+ # Overwrite with architecture-specific headers
+ cp -f usr/include/aarch64-linux-gnu/openssl/configuration.h
"${TARGET_DIR}/include/openssl/" || true
+ cp -f usr/include/aarch64-linux-gnu/openssl/opensslconf.h
"${TARGET_DIR}/include/openssl/" || true
+
+ # Copy libraries
+ cp -a usr/lib/aarch64-linux-gnu/libssl* "${TARGET_DIR}/lib/"
+ cp -a usr/lib/aarch64-linux-gnu/libcrypto* "${TARGET_DIR}/lib/"
+
+ # Verify
+ echo "✓ OpenSSL installed"
+ ls "${TARGET_DIR}/lib/libssl.a" && echo "✓ libssl.a found"
+ ls "${TARGET_DIR}/include/openssl/opensslv.h" && echo "✓
opensslv.h found"
+ ls "${TARGET_DIR}/include/openssl/opensslconf.h" && echo "✓
opensslconf.h found"
+ ) # End subshell
+
+ # Fix ring crate build: define ARM architecture version for
aarch64
+ export CFLAGS_aarch64_unknown_linux_gnu="-D__ARM_ARCH=8"
+ fi
- name: Upload wheels
uses: actions/upload-artifact@v7
diff --git a/Cargo.toml b/Cargo.toml
index d82d8da..94c703e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -38,6 +38,7 @@ arrow-row = "58.0"
arrow-select = "58.0"
datafusion = "53.0.0"
datafusion-ffi = "53.0.0"
+paimon = { version = "0.2.0", path = "crates/paimon" }
parquet = "58.0"
constant_time_eq = ">=0.4.0, <0.4.3"
tokio = "1.39.2"
diff --git a/crates/integrations/datafusion/Cargo.toml
b/crates/integrations/datafusion/Cargo.toml
index b9c2b26..a9de48a 100644
--- a/crates/integrations/datafusion/Cargo.toml
+++ b/crates/integrations/datafusion/Cargo.toml
@@ -36,7 +36,7 @@ chrono = "0.4"
constant_time_eq = { workspace = true }
datafusion = { workspace = true }
log = "0.4"
-paimon = { path = "../../paimon" }
+paimon = { workspace = true }
futures = "0.3"
serde = { version = "1", features = ["derive"] }
serde_json = "1"