svn commit: r1934378 - in subversion/branches/1.15.x: . build/ac-macros subversion/bindings/javahl

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <177916335646.546947.13238861589924087989@svn03-he-fi>
Author: svn-role
Date: Tue May 19 04:02:36 2026
New Revision: 1934378

Log:
Merge r1933892 from trunk:

 * r1933892
   Make the JavaHL JAR an automatic module.
   Justification:
     Provides fine-grained control of access to restricted methods. The
     alternative requires granting access to all "unnamed" modules.
   Depends: 
   Notes:
     Although this change does not affect backwards compatibility of JavaHL,
     it is my opinion that it really should go into a minor release. So we
     should either backport to 1.15.0 or wait for 1.16.0.
     Tested with JDK 1.8, JDK 11 and JDK 25 on ARM64 macOS.
   Votes:
     +1: brane, dsahlberg, jcorvel

Modified:
   subversion/branches/1.15.x/   (props changed)
   subversion/branches/1.15.x/Makefile.in
   subversion/branches/1.15.x/STATUS
   subversion/branches/1.15.x/build.conf
   subversion/branches/1.15.x/build/ac-macros/java.m4
   subversion/branches/1.15.x/configure.ac
   subversion/branches/1.15.x/subversion/bindings/javahl/Manifest.in

Modified: subversion/branches/1.15.x/Makefile.in
==============================================================================
--- subversion/branches/1.15.x/Makefile.in	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/Makefile.in	Tue May 19 04:02:36 2026	(r1934378)
@@ -378,8 +378,6 @@ SWIG_RB_SRC_DIR = $(abs_srcdir)/subversi
 JAVAHL_MANIFEST_IN = $(abs_srcdir)/subversion/bindings/javahl/Manifest.in
 JAVAHL_MANIFEST = subversion/bindings/javahl/Manifest
 INSTALL_EXTRA_JAVAHL_JAVA=\
-	sed s/%bundleVersion/$(PACKAGE_VERSION)/ $(JAVAHL_MANIFEST_IN) > $(JAVAHL_MANIFEST); \
-	$(JAR) cfm $(JAVAHL_JAR) $(JAVAHL_MANIFEST) -C subversion/bindings/javahl/classes org; \
 	$(INSTALL_DATA) $(JAVAHL_JAR) $(DESTDIR)$(javahl_javadir);
 
 INSTALL_EXTRA_JAVAHL_LIB=@INSTALL_EXTRA_JAVAHL_LIB@
@@ -524,20 +522,26 @@ clean-javahl:
 	rm -f $(libsvnjavahl_PATH)/*.lo
 	rm -f $(libsvnjavahl_PATH)/*.o
 
-check-tigris-javahl: javahl-compat
+JAVAHL_CHECK_FLAGS = @JAVAHL_CHECK_FLAGS@ -Xcheck:jni "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" "-Djava.library.path=@JAVAHL_OBJDIR@:$(libdir)" "-Dtest.cleanup=$(JAVAHL_CLEANUP)" "-Dtest.tests=$(JAVAHL_TESTS)" -classpath "$(JAVAHL_JAR):$(javahl_tests_CLASSPATH)"
+
+$(JAVAHL_JAR): $(JAVAHL_MANIFEST_IN) $(javahl_callback_java_OBJECTS) $(javahl_compat_java_OBJECTS) $(javahl_compat_tests_OBJECTS) $(javahl_java_OBJECTS) $(javahl_remote_java_OBJECT) $(javahl_tests_OBJECTS) $(javahl_types_java_OBJECTS) $(javahl_util_java_OBJECTS)
+	sed s/%bundleVersion/$(PACKAGE_VERSION)/ $(JAVAHL_MANIFEST_IN) > $(JAVAHL_MANIFEST) && \
+	$(JAR) cfm $(JAVAHL_JAR) $(JAVAHL_MANIFEST) -C subversion/bindings/javahl/classes org
+
+check-tigris-javahl: javahl-compat $(JAVAHL_JAR)
 	@FIX_JAVAHL_LIB@
 	$(TEST_SHLIB_VAR_JAVAHL) \
-	$(JAVA) -Xcheck:jni "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" "-Djava.library.path=@JAVAHL_OBJDIR@:$(libdir)" -classpath "$(javahl_compat_tests_PATH):$(javahl_tests_CLASSPATH)" "-Dtest.cleanup=$(JAVAHL_CLEANUP)" "-Dtest.tests=$(JAVAHL_TESTS)" org.tigris.subversion.javahl.RunTests
+	$(JAVA) $(JAVAHL_CHECK_FLAGS) org.tigris.subversion.javahl.RunTests
 
-check-apache-javahl: javahl
+check-apache-javahl: javahl $(JAVAHL_JAR)
 	@FIX_JAVAHL_LIB@
 	$(TEST_SHLIB_VAR_JAVAHL) \
-	$(JAVA) -Xcheck:jni "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" "-Djava.library.path=@JAVAHL_OBJDIR@:$(libdir)" -classpath "$(javahl_tests_PATH):$(javahl_tests_CLASSPATH)" "-Dtest.cleanup=$(JAVAHL_CLEANUP)" "-Dtest.tests=$(JAVAHL_TESTS)" org.apache.subversion.javahl.RunTests
+	$(JAVA) $(JAVAHL_CHECK_FLAGS) org.apache.subversion.javahl.RunTests
 
-check-deprecated-authn-javahl: javahl
+check-deprecated-authn-javahl: javahl $(JAVAHL_JAR)
 	@FIX_JAVAHL_LIB@
 	$(TEST_SHLIB_VAR_JAVAHL) \
-	$(JAVA) -Xcheck:jni "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" "-Djava.library.path=@JAVAHL_OBJDIR@:$(libdir)" -classpath "$(javahl_tests_PATH):$(javahl_tests_CLASSPATH)" "-Dtest.cleanup=$(JAVAHL_CLEANUP)" "-Dtest.tests=$(JAVAHL_TESTS)" "-Dtest.authn.deprecated=true" org.apache.subversion.javahl.RunTests
+	$(JAVA) $(JAVAHL_CHECK_FLAGS) "-Dtest.authn.deprecated=true" org.apache.subversion.javahl.RunTests
 
 check-javahl: check-apache-javahl
 

Modified: subversion/branches/1.15.x/STATUS
==============================================================================
--- subversion/branches/1.15.x/STATUS	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/STATUS	Tue May 19 04:02:36 2026	(r1934378)
@@ -52,20 +52,6 @@ Veto-blocked changes:
 Approved changes:
 =================
 
- * r1933892
-   Make the JavaHL JAR an automatic module.
-   Justification:
-     Provides fine-grained control of access to restricted methods. The
-     alternative requires granting access to all "unnamed" modules.
-   Depends: 
-   Notes:
-     Although this change does not affect backwards compatibility of JavaHL,
-     it is my opinion that it really should go into a minor release. So we
-     should either backport to 1.15.0 or wait for 1.16.0.
-     Tested with JDK 1.8, JDK 11 and JDK 25 on ARM64 macOS.
-   Votes:
-     +1: brane, dsahlberg, jcorvel
-
  * r1934313
    Include 1.15-specific APIs in JavaHL.
    Justification:

Modified: subversion/branches/1.15.x/build.conf
==============================================================================
--- subversion/branches/1.15.x/build.conf	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/build.conf	Tue May 19 04:02:36 2026	(r1934378)
@@ -641,6 +641,7 @@ sources = *.java
 native = CommitItemStateFlags.java NativeResources.java SVNClient.java
          SVNRepos.java
 install = javahl-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 classes = subversion/bindings/javahl/classes
 headers = subversion/bindings/javahl/include
@@ -650,7 +651,8 @@ package = org.apache.subversion.javahl
 type = java
 path = subversion/bindings/javahl/src/org/tigris/subversion/javahl
 sources = *.java
-install = javahl-java
+install = javahl-compat-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC)
 classes = subversion/bindings/javahl/classes
 add-deps = $(javahl_callback_java_DEPS) $(javahl_remote_java_DEPS)
@@ -664,7 +666,8 @@ package = org.tigris.subversion.javahl
 type = java
 path = subversion/bindings/javahl/tests/org/apache/subversion/javahl
 sources = *.java
-install = javahl-java
+install = javahl-tests
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 classes = subversion/bindings/javahl/classes
 package = org.apache.subversion.javahl
@@ -678,7 +681,8 @@ add-deps = $(javahl_callback_java_DEPS)
 type = java
 path = subversion/bindings/javahl/tests/org/tigris/subversion/javahl
 sources = *.java
-install = javahl-java
+install = javahl-compat-tests
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_COMPAT_JAVAC)
 classes = subversion/bindings/javahl/classes
 package = org.tigris.subversion.javahl
@@ -694,7 +698,8 @@ headers = subversion/bindings/javahl/inc
 package = org.apache.subversion.javahl.callback
 sources = *.java
 native = UserPasswordCallback.java
-install = javahl-java
+install = javahl-callback-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 
 [javahl-remote-java]
@@ -706,7 +711,8 @@ package = org.apache.subversion.javahl.r
 sources = *.java
 native = CommitEditor.java RemoteFactory.java RemoteSession.java
          StateReporter.java
-install = javahl-java
+install = javahl-remote-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 
 [javahl-types-java]
@@ -719,7 +725,8 @@ sources = *.java
 native = NativeInputStream.java NativeOutputStream.java Revision.java
          RevisionRangeList.java RuntimeVersion.java VersionExtended.java
          Version.java
-install = javahl-java
+install = javahl-types-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 
 [javahl-util-java]
@@ -732,7 +739,8 @@ sources = *.java
 native = ConfigImpl.java ConfigLib.java DiffLib.java PropLib.java
          RequestChannel.java ResponseChannel.java SubstLib.java
          TunnelChannel.java
-install = javahl-java
+install = javahl-util-java
+add-install-deps = $(JAVAHL_JAR)
 link-cmd = $(COMPILE_JAVAHL_JAVAC)
 
 [libsvnjavahl]

Modified: subversion/branches/1.15.x/build/ac-macros/java.m4
==============================================================================
--- subversion/branches/1.15.x/build/ac-macros/java.m4	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/build/ac-macros/java.m4	Tue May 19 04:02:36 2026	(r1934378)
@@ -162,18 +162,37 @@ AC_DEFUN(SVN_FIND_JDK,
       fi
     ])
 
+    dnl Get the Java release version
+    java_version=[`"$JDK/bin/java" -version 2>&1 | $HEAD -1 | $SED -e 's/^[^0-9]*//' -e 's/\.[^.]*$//'`]
+    java_major=[`echo $java_version | $SED -e 's/\.[^.]*$//'`]
+    java_minor=[`echo $java_version | $SED -e 's/^[^.]*\.//'`]
+    dnl versions older than 11 report '1.V.x' instead of 'V.x.y'
+    if test "$java_major" -eq 1; then
+      java_release="$java_minor"
+    else
+      java_release="$java_major"
+      java_version="$java_release"
+    fi
+    AC_MSG_NOTICE([Compiling with Java $java_version for target Java $JAVA_OLDEST_WORKING_VER])
+
+    dnl Java 24 and above restrict native access.
+    dnl See: https://inside.java/2024/12/09/quality-heads-up/
+    if test "$java_release" -ge 24; then
+      JAVAHL_CHECK_FLAGS='--module-path "$(abs_builddir)/$(JAVAHL_JAR)"'
+      JAVAHL_CHECK_FLAGS="$JAVAHL_CHECK_FLAGS --add-modules org.apache.subversion.javahl"
+      JAVAHL_CHECK_FLAGS="$JAVAHL_CHECK_FLAGS --enable-native-access=org.apache.subversion.javahl"
+      JAVAHL_CHECK_FLAGS="$JAVAHL_CHECK_FLAGS --illegal-native-access=deny"
+    fi
+
     dnl Add javac flags.
-    # The release for "-source" could actually be greater than that
-    # of "-target", if we want to cross-compile for lesser JVMs.
     if test -z "$JAVAC_FLAGS"; then
-      java_version=[`"$JDK/bin/javac" -version 2>&1 | $SED -e 's/^[^0-9]*//' -e 's/\.[^.]*$//'`]
-      java_major=[`echo $java_version | $SED -e 's/\.[^.]*$//'`]
-      java_minor=[`echo $java_version | $SED -e 's/^[^.]*\.//'`]
-      if test "$java_major" -eq 1 && test "$java_minor" -lt 9; then
+      dnl The release for "-source" could actually be greater than that
+      dnl of "-target", if we want to cross-compile for lesser JVMs.
+      if test "$java_release" -lt 9; then
         JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.8"
       else
-        java_release=[`echo $JAVA_OLDEST_WORKING_VER | $SED -e 's/^[^.]*\.//'`]
-        JAVAC_FLAGS="--release $java_release"
+        java_oldest_release=[`echo $JAVA_OLDEST_WORKING_VER | $SED -e 's/^1\.//'`]
+        JAVAC_FLAGS="--release $java_oldest_release"
       fi
 
       if test "$enable_debugging" = "yes"; then
@@ -205,4 +224,5 @@ AC_DEFUN(SVN_FIND_JDK,
   AC_SUBST(JAVAH)
   AC_SUBST(JAR)
   AC_SUBST(JNI_INCLUDES)
+  AC_SUBST(JAVAHL_CHECK_FLAGS)
 ])

Modified: subversion/branches/1.15.x/configure.ac
==============================================================================
--- subversion/branches/1.15.x/configure.ac	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/configure.ac	Tue May 19 04:02:36 2026	(r1934378)
@@ -192,6 +192,9 @@ if test -z "$MKDIR"; then
 fi
 AC_SUBST([MKDIR])
 
+# Look for 'head'
+AC_CHECK_TOOL([HEAD], [head], [SED="${HEAD:-head}"])
+
 # ==== Libraries, for which we may have source to build ======================
 
 dnl verify apr version and set apr flags

Modified: subversion/branches/1.15.x/subversion/bindings/javahl/Manifest.in
==============================================================================
--- subversion/branches/1.15.x/subversion/bindings/javahl/Manifest.in	Tue May 19 04:02:26 2026	(r1934377)
+++ subversion/branches/1.15.x/subversion/bindings/javahl/Manifest.in	Tue May 19 04:02:36 2026	(r1934378)
@@ -2,8 +2,9 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Apache Subversion JavaHL API
 Bundle-Vendor: Apache Subversion
-Bundle-SymbolicName: org.apache.subversion.javahl
 Bundle-Version: %bundleVersion
+Bundle-SymbolicName: org.apache.subversion.javahl
+Automatic-Module-Name: org.apache.subversion.javahl
 Export-Package: org.apache.subversion.javahl,
  org.apache.subversion.javahl.callback,
  org.apache.subversion.javahl.types,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.