This is an automated email from the ASF dual-hosted git repository.

JingsongLi pushed a commit to branch release-2.0
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/release-2.0 by this push:
     new a08a808b5d [release] Make PyPaimon licensing check reproducible
a08a808b5d is described below

commit a08a808b5deed314946a0404ab1973230fe40590
Author: JingsongLi <[email protected]>
AuthorDate: Sat Aug 1 21:30:53 2026 +0800

    [release] Make PyPaimon licensing check reproducible
---
 paimon-python/dev/.rat-excludes      |  6 ++++
 paimon-python/dev/check-licensing.sh | 54 ++++++++++++++++++++++++++----------
 2 files changed, 45 insertions(+), 15 deletions(-)

diff --git a/paimon-python/dev/.rat-excludes b/paimon-python/dev/.rat-excludes
index 421839c0f1..7f1a66aa81 100644
--- a/paimon-python/dev/.rat-excludes
+++ b/paimon-python/dev/.rat-excludes
@@ -19,3 +19,9 @@
 .gitignore
 rat-results.txt
 .*\.jsonl$
+.*PKG-INFO$
+.*SOURCES[.]txt$
+.*dependency_links[.]txt$
+.*entry_points[.]txt$
+.*requires[.]txt$
+.*top_level[.]txt$
diff --git a/paimon-python/dev/check-licensing.sh 
b/paimon-python/dev/check-licensing.sh
index 883c43d5a8..ec1fe9df0e 100755
--- a/paimon-python/dev/check-licensing.sh
+++ b/paimon-python/dev/check-licensing.sh
@@ -26,10 +26,21 @@ download_rat_jar () {
     wget --quiet ${URL} -O "$JAR"
 }
 
-SOURCE_PACKAGE=${SOURCE_PACKAGE}
+SOURCE_PACKAGE=${SOURCE_PACKAGE:-}
 
 export RAT_VERSION=0.15
 export rat_jar=rat/apache-rat-${RAT_VERSION}.jar
+PACKAGE_DIR=""
+TEMP_DIR=""
+
+cleanup () {
+    rm -rf rat
+    if [ -n "${TEMP_DIR}" ] && [ -d "${TEMP_DIR}" ]; then
+        rm -rf "${TEMP_DIR}"
+    fi
+}
+
+trap cleanup EXIT
 
 if [ -z "${SOURCE_PACKAGE}" ]; then
     BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
@@ -42,33 +53,46 @@ if [ -z "${SOURCE_PACKAGE}" ]; then
         exit 1
     fi
 
-         RUN_RAT="java -jar ${rat_jar} -E ${PROJECT_ROOT}/dev/.rat-excludes -d 
${PROJECT_ROOT}"
+    RUN_RAT=(
+        java -jar "${rat_jar}"
+        -E "${PROJECT_ROOT}/dev/.rat-excludes"
+        -d "${PROJECT_ROOT}"
+    )
 else
     EXTENSION='.tar.gz'
     # get unzipped directory
-    PACKAGE_DIR="${SOURCE_PACKAGE:0:$((${#SOURCE_PACKAGE} - ${#EXTENSION}))}"
-    tar -xf ${SOURCE_PACKAGE}
+    PACKAGE_NAME="$(basename "${SOURCE_PACKAGE}" "${EXTENSION}")"
+    TEMP_DIR="$(mktemp -d /tmp/pypaimon-rat.XXXXXX)"
+    PACKAGE_DIR="${TEMP_DIR}/${PACKAGE_NAME}"
+    tar -xf "${SOURCE_PACKAGE}" -C "${TEMP_DIR}"
+    if [ ! -d "${PACKAGE_DIR}" ]; then
+        echo "Source package did not contain ${PACKAGE_NAME}" >&2
+        exit 1
+    fi
 
-    RUN_RAT="java -jar ${rat_jar} -e PKG-INFO -e setup.cfg -e 
pypaimon.egg-info/* -d ${PACKAGE_DIR}"
+    RUN_RAT=(
+        java -jar "${rat_jar}"
+        -e '.*PKG-INFO$'
+        -e '.*setup[.]cfg$'
+        -e '.*SOURCES[.]txt$'
+        -e '.*dependency_links[.]txt$'
+        -e '.*entry_points[.]txt$'
+        -e '.*requires[.]txt$'
+        -e '.*top_level[.]txt$'
+        -e '.*[.]jsonl$'
+        -d "${PACKAGE_DIR}"
+    )
 fi
 
 mkdir -p rat
 download_rat_jar
 
-$RUN_RAT > rat/rat-results.txt
-
-if [ $? -ne 0 ]; then
+if ! "${RUN_RAT[@]}" > rat/rat-results.txt; then
     echo "RAT exited abnormally"
     exit 1
 fi
 
-ERRORS="$(cat rat/rat-results.txt | grep -e "??")"
-
-# clean
-rm -rf rat
-if [ -d "$PACKAGE_DIR" ]; then
-    rm -rf $PACKAGE_DIR
-fi
+ERRORS="$(grep -e "??" rat/rat-results.txt)"
 
 if [[ -n "${ERRORS}" ]]; then
     echo "Could not find Apache license headers in the following files:"

Reply via email to