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

philo-he pushed a commit to branch branch-1.7
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/branch-1.7 by this push:
     new 147ee1762d [1.7] Update release document and script (#12733)
147ee1762d is described below

commit 147ee1762d21fdfaa84d8c8ff3ae18a795f696a0
Author: Philo He <[email protected]>
AuthorDate: Tue Aug 11 02:25:11 2026 +0800

    [1.7] Update release document and script (#12733)
---
 LICENSE                         |  9 ----
 dev/release/package-release.sh  | 31 +++++++++++---
 docs/developers/HowToRelease.md | 93 ++++++++++++++++++++++++++++++++++-------
 3 files changed, 105 insertions(+), 28 deletions(-)

diff --git a/LICENSE b/LICENSE
index b4f98a86e3..d668b5a8b4 100644
--- a/LICENSE
+++ b/LICENSE
@@ -212,15 +212,6 @@
    
./backends-clickhouse/src/main/scala/org/apache/spark/sql/execution/SparkWriteFilesCommitProtocol.scala
    
./cpp-ch/local-engine/Parser/aggregate_function_parser/BloomFilterAggParser.cpp
    
./gluten-substrait/src/main/scala/org/apache/spark/sql/execution/GlutenExplainUtils.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/FileSourceScanExecShim.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatDataWriter.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/WriteFiles.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetFileFormat.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/datasources/v2/BatchScanExec.scala.deprecated
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/execution/stat/StatFunctions.scala
-   
./shims/spark32/src/main/scala/org/apache/spark/sql/hive/execution/HiveFileFormat.scala
    
./shims/spark33/src/main/scala/org/apache/spark/sql/execution/FileSourceScanExecShim.scala
    
./shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/WriteFiles.scala
    
./shims/spark33/src/main/scala/org/apache/spark/sql/execution/datasources/orc/OrcFileFormat.scala
diff --git a/dev/release/package-release.sh b/dev/release/package-release.sh
index 930a8f41da..e8b3da6c02 100755
--- a/dev/release/package-release.sh
+++ b/dev/release/package-release.sh
@@ -34,15 +34,28 @@ RELEASE_VERSION=${TAG_VERSION%-rc*}
 CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd)
 GLUTEN_HOME=${CURRENT_DIR}/../../
 if [ ! -d "$GLUTEN_HOME/release/" ]; then
-  echo "Release directory does not exist."
+  echo "Release directory $GLUTEN_HOME/release/ does not exist."
+  exit 1
 fi
 
+# The bundle JAR statically links third-party code, so per ASF policy the 
binary
+# distribution must ship the LICENSE/NOTICE that cover it.
+LICENSE_BINARY="${GLUTEN_HOME}/LICENSE-binary"
+NOTICE_BINARY="${GLUTEN_HOME}/NOTICE-binary"
+for f in "$LICENSE_BINARY" "$NOTICE_BINARY"; do
+  if [[ ! -f "$f" ]]; then
+    echo "Missing $f, required for the binary distribution."
+    exit 1
+  fi
+done
+
 pushd $GLUTEN_HOME/release/
 
-SPARK_VERSIONS="3.3 3.4 3.5 4.0"
+SPARK_VERSIONS="3.3 3.4 3.5 4.0 4.1"
 
 for v in $SPARK_VERSIONS; do
-  if [[ "$v" == "4.0" ]]; then
+  # Spark 4.x requires Scala 2.13; the spark-4.x Maven profiles enforce it.
+  if [[ "$v" == 4.* ]]; then
     SCALA="2.13"
   else
     SCALA="2.12"
@@ -56,8 +69,16 @@ for v in $SPARK_VERSIONS; do
   fi
 
   echo "Packaging for Spark $v (Scala $SCALA)..."
-  tar -czf apache-gluten-${RELEASE_VERSION}-bin-spark-${v}.tar.gz \
-      $JAR
+  # Stage a versioned top-level directory so extracting does not scatter files 
into the
+  # current directory, and so LICENSE/NOTICE travel with the JAR.
+  BIN_DIR="apache-gluten-${RELEASE_VERSION}-bin-spark-${v}"
+  rm -rf "${BIN_DIR}"
+  mkdir -p "${BIN_DIR}"
+  cp "$JAR" "${BIN_DIR}/"
+  cp "$LICENSE_BINARY" "${BIN_DIR}/LICENSE"
+  cp "$NOTICE_BINARY" "${BIN_DIR}/NOTICE"
+  tar -czf "${BIN_DIR}.tar.gz" "${BIN_DIR}"
+  rm -rf "${BIN_DIR}"
 done
 
 SRC_ZIP="${TAG}.zip"
diff --git a/docs/developers/HowToRelease.md b/docs/developers/HowToRelease.md
index 57dedb6a72..43dc4c6f9e 100644
--- a/docs/developers/HowToRelease.md
+++ b/docs/developers/HowToRelease.md
@@ -16,6 +16,52 @@ for a release of Apache Gluten project with the Velox 
backend.
 2. Linux
 3. Docker
 
+## Pre-release Checks
+
+Complete these before tagging an RC. Each one corresponds to an issue 
previously raised during a
+release vote, so skipping them tends to cost an extra release candidate.
+
+### Set the release version and remove leftover `-SNAPSHOT` strings
+
+```bash
+bash dev/release/bump-version.sh 1.7.0
+```
+
+`bump-version.sh` runs `versions:set` on the POMs under the repository root, 
`tools/gluten-it`,
+`tools/qualification-tool` and `gluten-flink`. It does **not** touch versions 
hardcoded elsewhere,
+for example `dev/info.sh` and the docs under `gluten-flink/docs/`. Check for 
anything it missed:
+
+```bash
+git grep -nIE '[0-9]+\.[0-9]+\.[0-9]+-SNAPSHOT'
+```
+
+Gluten's own version must not appear as `-SNAPSHOT` in the result. References 
to third-party
+snapshots, such as `velox4j` and `spark-sql-perf`, are expected to remain.
+
+A previous RC was voted `+0` because the source distribution still carried 
`-SNAPSHOT` versions,
+including stale ones left over from an earlier release. Clean up all of them, 
not just the current
+version.
+
+### Update `LICENSE-binary` and `NOTICE-binary`
+
+The bundle JAR statically links third-party code, and `package-release.sh` 
ships `LICENSE-binary`
+and `NOTICE-binary` inside each binary tarball as `LICENSE` and `NOTICE`. 
Whenever a bundled
+component is added or enabled, its copyright and license must be recorded 
there.
+
+A previous RC was voted `-1` because Hudi and Paimon had been enabled in the 
binaries without
+being added to `NOTICE-binary`.
+
+### Check license headers
+
+```bash
+# Requires the `regex` Python package: pip install regex
+python3 dev/check.py header main
+```
+
+Reviewers also run [Apache RAT](https://creadur.apache.org/rat/) against the 
source archive. Note
+that RAT flags `.ipynb` notebooks, which cannot carry a comment header; the 
convention is to place
+the license text in the notebook's first markdown cell.
+
 ## Steps to Create a Release
 
 A standard release distribution can be created following the below steps.
@@ -26,8 +72,8 @@ Pull and download the build environment docker image. The 
docker image is period
 built and uploaded to DockerHub by scheduled GitHub Actions jobs.
 
 ```bash
-docker pull apache/gluten:vcpkg-centos-7
-docker run -it apache/gluten:vcpkg-centos-7 bash
+docker pull apache/gluten:vcpkg-centos-7-gcc13
+docker run -it apache/gluten:vcpkg-centos-7-gcc13 bash
 ```
 
 ### Clone the repository
@@ -76,13 +122,24 @@ Confirm that all the needed sources and binaries are 
successfully created at the
 `$GLUTEN_HOME/release/`.
 
 ```bash
-[root@8de83f716f0f workspace]# ls -l release/
-total 481628
--rw-r--r--. 1 root root  74396439 Oct 14 14:19 
apache-gluten-1.6.0-example-src.tar.gz
--rw-r--r--. 1 root root 104790092 Oct 14 14:19 
apache-gluten-1.6.0-example-bin-spark-3.2.tar.gz
--rw-r--r--. 1 root root 104767582 Oct 14 14:19 
apache-gluten-1.6.0-example-bin-spark-3.3.tar.gz
--rw-r--r--. 1 root root 104625356 Oct 14 14:19 
apache-gluten-1.6.0-example-bin-spark-3.4.tar.gz
--rw-r--r--. 1 root root 104595103 Oct 14 14:19 
apache-gluten-1.6.0-example-bin-spark-3.5.tar.gz
+[root@8de83f716f0f workspace]# ls -1 release/*.tar.gz
+release/apache-gluten-1.6.0-example-src.tar.gz
+release/apache-gluten-1.6.0-example-bin-spark-3.3.tar.gz
+release/apache-gluten-1.6.0-example-bin-spark-3.4.tar.gz
+release/apache-gluten-1.6.0-example-bin-spark-3.5.tar.gz
+release/apache-gluten-1.6.0-example-bin-spark-4.0.tar.gz
+release/apache-gluten-1.6.0-example-bin-spark-4.1.tar.gz
+```
+
+Each binary tarball contains a versioned top-level directory holding the 
bundle JAR along with
+the `LICENSE` and `NOTICE` that cover the third-party code statically linked 
into it.
+
+```bash
+[root@8de83f716f0f workspace]# tar -tzf 
release/apache-gluten-1.6.0-example-bin-spark-3.5.tar.gz
+apache-gluten-1.6.0-example-bin-spark-3.5/
+apache-gluten-1.6.0-example-bin-spark-3.5/LICENSE
+apache-gluten-1.6.0-example-bin-spark-3.5/NOTICE
+apache-gluten-1.6.0-example-bin-spark-3.5/gluten-velox-bundle-spark3.5_2.12-linux_amd64-1.6.0-example.jar
 ```
 
 <!--- Moved from 
https://github.com/apache/gluten-site/blob/main/_docs/v1.3.0/developers/HowToRelease.md
 --->
@@ -144,6 +201,10 @@ $ svn ci -m "add gpg key"
 $ for i in *.tar.gz; do echo $i; gpg --local-user xxxx --armor --output $i.asc 
--detach-sig $i ; done
 ```
 
+Note the KEYS file is appended in the **release** SVN directory, not the `dev` 
one, so that it is
+served from <https://downloads.apache.org/gluten/KEYS>. Do this **before** 
starting the vote and
+reference that URL in the vote email: a previous vote had to be corrected 
mid-thread because it
+pointed reviewers at a `dist.apache.org/repos/dist/dev/` KEYS link instead.
 
 #### How to Generate checksums for the release artifacts.
 
@@ -160,7 +221,7 @@ $ for i in *.tar.gz; do echo $i; sha512sum  $i > $i.sha512 
; done
 
 2. Create a directory for the release artifacts in the SVN repository.
    `https://dist.apache.org/repos/dist/dev/gluten/{release-version}`
-   release-version format: apache-gluten-#.#.#-rc#
+   release-version format: #.#.#-rc# (e.g. `1.7.0-rc0`)
 
 3. Upload the release artifacts to the SVN repository.
 ```bash
@@ -171,11 +232,15 @@ $ svn commit -m "add Apache Gluten release artifacts for 
{release-version}"
 ```
 
 4. After the upload, please visit the link 
`https://dist.apache.org/repos/dist/dev/gluten/{release-version}` to verify if 
the file upload is successful or not.
-   The upload release artifacts should be include
+   The uploaded artifacts should include the source archive and one binary 
archive per supported
+   Spark version, each with its `.asc` signature and `.sha512` checksum:
 ```bash
-* apache-gluten-#.#.#-src.tar.gz
-* apache-gluten-#.#.#-src.tar.gz.asc
-* apache-gluten-#.#.#-src.tar.gz.sha512
+* apache-gluten-#.#.#-src.tar.gz{,.asc,.sha512}
+* apache-gluten-#.#.#-bin-spark-3.3.tar.gz{,.asc,.sha512}
+* apache-gluten-#.#.#-bin-spark-3.4.tar.gz{,.asc,.sha512}
+* apache-gluten-#.#.#-bin-spark-3.5.tar.gz{,.asc,.sha512}
+* apache-gluten-#.#.#-bin-spark-4.0.tar.gz{,.asc,.sha512}
+* apache-gluten-#.#.#-bin-spark-4.1.tar.gz{,.asc,.sha512}
 ```
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to