You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@toree.apache.org by lr...@apache.org on 2026/09/13 04:38:13 UTC

(incubator-toree) 02/02: Align release tooling with ASF distribution policy

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

lresende pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-toree.git

commit 29420b0f2ea0f96244f6c8df2ab67ba2694e1cea
Author: Luciano Resende <lr...@apple.com>
AuthorDate: Thu Sep 10 11:12:06 2026 +0200

    Align release tooling with ASF distribution policy
    
    The ASF deprecated MD5 for release distribution, so sign-file no longer
    generates .md5, verify-release no longer requires it, and the sign
    targets drop it from their outputs and prerequisites. The find in
    verify-release still excludes *.md5 so that a stale file left by an
    earlier build cannot be mistaken for a release artifact.
    
    release-build.sh now stages the binary and source artifacts under
    apache-toree rather than toree, matching their new names. The toree-pip
    directory keeps its name because it stages the package that is
    published to PyPI as toree.
    
    Commenting out test_statements_stdout left test_scala_stdout iterating
    an attribute that no longer existed, so the test raised AttributeError
    instead of being skipped. Restore the data and skip the method, with
    the reason recorded alongside it.
---
 Makefile                   | 14 +++++++-------
 RELEASE_NOTES.md           |  5 +++++
 etc/tools/release-build.sh |  8 ++++----
 etc/tools/sign-file        |  1 -
 etc/tools/verify-release   | 19 -------------------
 test_toree.py              | 11 +++++++----
 6 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/Makefile b/Makefile
index 71feac2c..de6c604d 100644
--- a/Makefile
+++ b/Makefile
@@ -260,13 +260,13 @@ dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz: dist/toree
 
 pip-release: dist/toree-pip/toree-$(BASE_VERSION).tar.gz dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz
 
-dist/toree-pip/toree-$(BASE_VERSION).tar.gz.md5 dist/toree-pip/toree-$(BASE_VERSION).tar.gz.asc dist/toree-pip/toree-$(BASE_VERSION).tar.gz.sha512: dist/toree-pip/toree-$(BASE_VERSION).tar.gz
+dist/toree-pip/toree-$(BASE_VERSION).tar.gz.asc dist/toree-pip/toree-$(BASE_VERSION).tar.gz.sha512: dist/toree-pip/toree-$(BASE_VERSION).tar.gz
 	@GPG_PASSWORD='$(GPG_PASSWORD)' GPG=$(GPG) etc/tools/./sign-file dist/toree-pip/toree-$(BASE_VERSION).tar.gz
 
-dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.md5 dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.asc dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.sha512: dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz
+dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.asc dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.sha512: dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz
 	@GPG_PASSWORD='$(GPG_PASSWORD)' GPG=$(GPG) etc/tools/./sign-file dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz
 
-sign-pip: dist/toree-pip/toree-$(BASE_VERSION).tar.gz.md5 dist/toree-pip/toree-$(BASE_VERSION).tar.gz.asc dist/toree-pip/toree-$(BASE_VERSION).tar.gz.sha512 dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.md5 dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.asc dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.sha512
+sign-pip: dist/toree-pip/toree-$(BASE_VERSION).tar.gz.asc dist/toree-pip/toree-$(BASE_VERSION).tar.gz.sha512 dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.asc dist/apache-toree-pip/apache-toree-$(BASE_VERSION).tar.gz.sha512
 
 publish-pip: PYPI_REPO?=https://pypi.python.org/pypi
 publish-pip: PYPI_USER?=
@@ -299,10 +299,10 @@ dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz: dist/toree
 
 bin-release: dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz
 
-dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.md5 dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.asc dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.sha512: dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz
+dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.asc dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.sha512: dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz
 	@GPG_PASSWORD='$(GPG_PASSWORD)' GPG=$(GPG) etc/tools/./sign-file dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz
 
-sign-bin: dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.md5 dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.asc dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.sha512
+sign-bin: dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.asc dist/apache-toree-bin/apache-toree-$(VERSION)-bin.tar.gz.sha512
 
 publish-bin:
 
@@ -315,10 +315,10 @@ dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz:
 
 src-release: dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz
 
-dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.md5 dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.asc dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.sha512: dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz
+dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.asc dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.sha512: dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz
 	@GPG_PASSWORD='$(GPG_PASSWORD)' GPG=$(GPG) etc/tools/./sign-file dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz
 
-sign-src: dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.md5 dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.asc dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.sha512
+sign-src: dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.asc dist/apache-toree-src/apache-toree-$(VERSION)-src.tar.gz.sha512
 
 publish-src:
 
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 5791ee71..f45e5cb6 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -46,6 +46,11 @@
   - Distribution directories: `dist/toree-bin` and `dist/toree-src` →
     `dist/apache-toree-bin` and `dist/apache-toree-src`
   - pip packages remain as `toree` and `apache-toree` (no change)
+  - Staging layout on dist.apache.org: the `toree` directory holding the binary
+    and source artifacts is now `apache-toree`
+* Release artifacts no longer ship `.md5` checksums, which the ASF has
+  deprecated for release distribution. `.asc` signatures and `.sha512`
+  checksums are unchanged.
 
 ## 0.5.0-incubating (2022.04)
 
diff --git a/etc/tools/release-build.sh b/etc/tools/release-build.sh
index 468ae233..4be5459e 100755
--- a/etc/tools/release-build.sh
+++ b/etc/tools/release-build.sh
@@ -272,18 +272,18 @@ if [[ "$RELEASE_PREPARE" == "true" ]]; then
 
         cd "$BASE_DIR/target"
         svn co $RELEASE_STAGING_LOCATION svn-toree
-        mkdir -p svn-toree/$RELEASE_STAGING_FOLDER/toree
+        mkdir -p svn-toree/$RELEASE_STAGING_FOLDER/apache-toree
         mkdir -p svn-toree/$RELEASE_STAGING_FOLDER/toree-pip
         mkdir -p svn-toree/$RELEASE_STAGING_FOLDER/apache-toree-pip
 
-        cp toree/dist/apache-toree-bin/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/toree
-        cp toree/dist/apache-toree-src/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/toree
+        cp toree/dist/apache-toree-bin/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/apache-toree
+        cp toree/dist/apache-toree-src/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/apache-toree
         cp toree/dist/toree-pip/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/toree-pip
         cp -r toree/dist/toree-pip/toree.egg-info svn-toree/$RELEASE_STAGING_FOLDER/toree-pip/
         cp toree/dist/apache-toree-pip/*.tar.gz svn-toree/$RELEASE_STAGING_FOLDER/apache-toree-pip
         cp -r toree/dist/apache-toree-pip/*toree.egg-info svn-toree/$RELEASE_STAGING_FOLDER/apache-toree-pip/
 
-        cd "$BASE_DIR/target/svn-toree/$RELEASE_STAGING_FOLDER/toree"
+        cd "$BASE_DIR/target/svn-toree/$RELEASE_STAGING_FOLDER/apache-toree"
         rm -f *.asc
         for i in *.tar.gz; do gpg --output $i.asc --detach-sig --armor $i; done
         rm -f *.sha*
diff --git a/etc/tools/sign-file b/etc/tools/sign-file
index a64f1e89..fb854a56 100755
--- a/etc/tools/sign-file
+++ b/etc/tools/sign-file
@@ -34,7 +34,6 @@ file_to_sign="${FWDIR}/$1"
 if [[ -f "${file_to_sign}"  ]]; then
 		echo "Generating signature and sums for ${file_to_sign}"
 		echo ${GPG_PASSWORD} | ${GPG} --passphrase-fd 0 --armor --output "${file_to_sign}.asc" --detach-sig "${file_to_sign}"
-		echo ${GPG_PASSWORD} | ${GPG} --passphrase-fd 0 --print-md MD5 "${file_to_sign}" >  "${file_to_sign}.md5"
 		echo ${GPG_PASSWORD} | ${GPG} --passphrase-fd 0 --print-md SHA512 "${file_to_sign}" >  "${file_to_sign}.sha512"
 		exit 0
 else
diff --git a/etc/tools/verify-release b/etc/tools/verify-release
index 12c4b25f..bf06e3f1 100755
--- a/etc/tools/verify-release
+++ b/etc/tools/verify-release
@@ -88,25 +88,6 @@ do
 			failure=true
 		fi
 	
-		# Verify the MD5 checksum is present
-		if [[ -f "${file_to_verify}.md5"  ]]; then
-			hash_result=`gpg --print-md MD5 "${file_to_verify}"`
-			hash_to_verify=`cat "${file_to_verify}.md5"`
-			
-			# Verify the MD5 checksum is correct
-			if [[ "${hash_result}" != "${hash_to_verify}" ]]; then
-				echo "ERROR: MD5 checksum of ${file_to_verify} does not match!"
-				results="${results}\n\tx `basename ${file_to_verify}.md5`"
-				failure=true
-			else
-				results="${results}\n\t✓ `basename ${file_to_verify}.md5`"
-			fi
-		else
-			echo "ERROR: MD5 checksum for ${file_to_verify} does not exist!"
-			results="${results}\n\tx `basename ${file_to_verify}.md5`"
-			failure=true
-		fi
-		
 	done
 done
 
diff --git a/test_toree.py b/test_toree.py
index 5d024762..4a54488a 100644
--- a/test_toree.py
+++ b/test_toree.py
@@ -71,10 +71,10 @@ class ToreeScalaKernelTests(jupyter_kernel_test.KernelTests):
          "* 6",
     ]
 
-#     test_statements_stdout = [
-#         {'code': '%AddJar http://home.apache.org/~lresende/toree/TestJar.jar'},
-#         {'code': 'import com.ibm.testjar.TestClass\nprintln(new TestClass().sayHello("Person"))', 'result': 'Hello, Person\n'}
-#     ]
+    test_statements_stdout = [
+        {'code': '%AddJar http://home.apache.org/~lresende/toree/TestJar.jar'},
+        {'code': 'import com.ibm.testjar.TestClass\nprintln(new TestClass().sayHello("Person"))', 'result': 'Hello, Person\n'}
+    ]
 
     completion_samples = [
         # completion for some scala code
@@ -89,6 +89,9 @@ class ToreeScalaKernelTests(jupyter_kernel_test.KernelTests):
         },
     ]
 
+    @unittest.skip("AddJar fixture http://home.apache.org/~lresende/toree/TestJar.jar "
+                   "returns 404; re-enable once the jar is served from a location the "
+                   "project controls")
     def test_scala_stdout(self):
         '''Asserts test_statements execute correctly meaning the last message is the expected result'''
         for sample in self.test_statements_stdout: