This is an automated email from the ASF dual-hosted git repository.
XiaoHongbo-Hope pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/paimon-mosaic.git
The following commit(s) were added to refs/heads/main by this push:
new 3b45db9 release: fix source tarball and Java verification paths (#48)
3b45db9 is described below
commit 3b45db9db719cf183626ab8bb49d5e8da8db148d
Author: QuakeWang <[email protected]>
AuthorDate: Fri May 29 15:16:58 2026 +0800
release: fix source tarball and Java verification paths (#48)
* release: avoid macOS metadata in source tarball
* release: fix Java verification native paths
* docs: clarify release verification steps
---
docs/creating-a-release.html | 2 +-
docs/verifying-a-release-candidate.html | 22 ++++++++++++++++++---
tools/create_source_release.sh | 34 ++++++++++++++-------------------
3 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/docs/creating-a-release.html b/docs/creating-a-release.html
index 8b69a4d..cad0d35 100644
--- a/docs/creating-a-release.html
+++ b/docs/creating-a-release.html
@@ -178,7 +178,7 @@ python3 tools/dependencies.py generate
git add DEPENDENCIES.rust.tsv core/DEPENDENCIES.rust.tsv
ffi/DEPENDENCIES.rust.tsv jni/DEPENDENCIES.rust.tsv
git commit -m "chore: update dependency list for release ${RELEASE_VERSION}"
git push origin main</code></pre>
- <p>Fix any license violations before proceeding. The generated
files must be committed before tagging because
<code>create_source_release.sh</code> builds the archive from a git clone.</p>
+ <p>Fix any license violations before proceeding. The generated
files must be committed before tagging because
<code>create_source_release.sh</code> builds the archive from the committed Git
tree.</p>
<h3>Create a Release Branch</h3>
<p>Create one stable release branch for the release line. Do not
include the RC number in the branch name; RC attempts are represented by tags
such as <code>v0.1.0-rc1</code> and <code>v0.1.0-rc2</code>.</p>
diff --git a/docs/verifying-a-release-candidate.html
b/docs/verifying-a-release-candidate.html
index 6f620de..0b52e9e 100644
--- a/docs/verifying-a-release-candidate.html
+++ b/docs/verifying-a-release-candidate.html
@@ -101,9 +101,25 @@ cargo test --workspace</code></pre>
<h3>Java</h3>
<p>Build the Java binding (requires JDK 8+ and Maven):</p>
-<pre><code>cargo build --release -p paimon-mosaic-jni
-cp target/release/libpaimon_mosaic_jni.* java/src/main/resources/native/
-cd java
+<pre><code>cargo build --release -p paimon-mosaic-jni</code></pre>
+ <p>Copy the built native library into the resource directory for
the platform being verified. Run only the snippet for your current platform.</p>
+ <p><strong>Linux x86_64:</strong></p>
+<pre><code>mkdir -p java/src/main/resources/native/linux/x86_64
+cp target/release/libpaimon_mosaic_jni.so \
+ java/src/main/resources/native/linux/x86_64/</code></pre>
+ <p><strong>Linux aarch64:</strong></p>
+<pre><code>mkdir -p java/src/main/resources/native/linux/aarch64
+cp target/release/libpaimon_mosaic_jni.so \
+ java/src/main/resources/native/linux/aarch64/</code></pre>
+ <p><strong>macOS aarch64:</strong></p>
+<pre><code>mkdir -p java/src/main/resources/native/macos/aarch64
+cp target/release/libpaimon_mosaic_jni.dylib \
+ java/src/main/resources/native/macos/aarch64/</code></pre>
+ <p><strong>Windows x86_64:</strong></p>
+<pre><code>mkdir -p java/src/main/resources/native/windows/x86_64
+cp target/release/paimon_mosaic_jni.dll \
+ java/src/main/resources/native/windows/x86_64/</code></pre>
+<pre><code>cd java
mvn clean package</code></pre>
<h3>Python</h3>
diff --git a/tools/create_source_release.sh b/tools/create_source_release.sh
index 6962e6d..ba94fa2 100755
--- a/tools/create_source_release.sh
+++ b/tools/create_source_release.sh
@@ -32,6 +32,7 @@ MVN=${MVN:-mvn}
# fail immediately
set -o errexit
set -o nounset
+set -o pipefail
# print command before executing
set -o xtrace
@@ -62,32 +63,25 @@ cd ..
echo "Creating source package"
-# create a temporary git clone to ensure that we have a pristine source release
-git clone . tools/release/paimon-mosaic-tmp-clone
-cd tools/release/paimon-mosaic-tmp-clone
+ARCHIVE="apache-paimon-mosaic-${RELEASE_VERSION}-src.tgz"
+# Archive from Git objects so filesystem metadata such as macOS xattrs is not
included.
+git archive --format=tar --prefix="paimon-mosaic-${RELEASE_VERSION}/"
'HEAD^{tree}' . \
+ ':(exclude).gitignore' ':(exclude).gitattributes' \
+ ':(exclude).asf.yaml' ':(exclude).github' \
+ ':(exclude)deploysettings.xml' ':(exclude)target' \
+ ':(exclude).idea' ':(exclude)*.iml' ':(exclude).DS_Store' \
+ | gzip -n > "tools/release/${ARCHIVE}"
-trap 'cd ${CURR_DIR}/release;rm -rf paimon-mosaic-tmp-clone' ERR
+cd tools/release
-rsync -a \
- --exclude ".git" --exclude ".gitignore" --exclude ".gitattributes" \
- --exclude ".asf.yaml" --exclude ".github" \
- --exclude "deploysettings.xml" --exclude "target" \
- --exclude ".idea" --exclude "*.iml" --exclude ".DS_Store" \
- . paimon-mosaic-$RELEASE_VERSION
-
-tar czf apache-paimon-mosaic-${RELEASE_VERSION}-src.tgz
paimon-mosaic-$RELEASE_VERSION
-gpg --armor --detach-sig apache-paimon-mosaic-$RELEASE_VERSION-src.tgz
-$SHASUM apache-paimon-mosaic-$RELEASE_VERSION-src.tgz >
apache-paimon-mosaic-$RELEASE_VERSION-src.tgz.sha512
+gpg --armor --detach-sig "${ARCHIVE}"
+$SHASUM "${ARCHIVE}" > "${ARCHIVE}.sha512"
echo "Verifying GPG signature"
-gpg --verify apache-paimon-mosaic-$RELEASE_VERSION-src.tgz.asc
apache-paimon-mosaic-$RELEASE_VERSION-src.tgz
+gpg --verify "${ARCHIVE}.asc" "${ARCHIVE}"
echo "Verifying tarball integrity"
-tar tzf apache-paimon-mosaic-${RELEASE_VERSION}-src.tgz > /dev/null
-
-mv apache-paimon-mosaic-$RELEASE_VERSION-src.* ../
-cd ..
-rm -rf paimon-mosaic-tmp-clone
+tar tzf "${ARCHIVE}" > /dev/null
echo ""
echo "Source release created successfully. Artifacts in tools/release/:"