[packages/jpackage-utils] add fallback logic when looking for jvm; rel 16

atler atler at pld-linux.org
Fri Sep 25 00:28:56 CEST 2026


commit 0dbfd2adcbb2503f536e87f9a84dda9c68a0f4fe
Author: Jan Palus <atler at pld-linux.org>
Date:   Fri Sep 25 00:25:22 2026 +0200

    add fallback logic when looking for jvm; rel 16
    
    when no default jre is installed ano no JAVA_HOME is configured look
    among installed jvms and pick one.

 fallback-jvm.patch  | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 jpackage-utils.spec |  4 +++-
 2 files changed, 50 insertions(+), 1 deletion(-)
---
diff --git a/jpackage-utils.spec b/jpackage-utils.spec
index 2550340..61efee4 100644
--- a/jpackage-utils.spec
+++ b/jpackage-utils.spec
@@ -3,7 +3,7 @@ Summary:	JPackage utilities
 Summary(pl.UTF-8):	Narzędzia JPackage
 Name:		jpackage-utils
 Version:	1.7.5
-Release:	15
+Release:	16
 License:	BSD-like
 Group:		Development/Languages/Java
 Source0:	%{name}-%{version}.tar.bz2
@@ -15,6 +15,7 @@ Patch3:		%{name}-readlink.patch
 Patch4:		%{name}-jvm_exports_via_link.patch
 Patch5:		java_version.patch
 Patch6:		no-which.patch
+Patch7:		fallback-jvm.patch
 URL:		http://www.jpackage.org/
 BuildRequires:	rpmbuild(macros) >= 1.555
 Requires:	/bin/egrep
@@ -87,6 +88,7 @@ pliki XSL dla programu maven2, plik nagłówkowy dla plików spec itp.
 %patch -P4 -p1
 %patch -P5 -p1
 %patch -P6 -p1
+%patch -P7 -p1
 
 # we cp -a complete dir from source
 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
diff --git a/fallback-jvm.patch b/fallback-jvm.patch
new file mode 100644
index 0000000..4dd6899
--- /dev/null
+++ b/fallback-jvm.patch
@@ -0,0 +1,47 @@
+--- jpackage-utils-1.7.5/java-utils/java-functions.old	2026-09-25 00:20:50.618607318 +0200
++++ jpackage-utils-1.7.5/java-utils/java-functions	2026-09-25 00:19:10.012745470 +0200
+@@ -27,6 +27,33 @@
+ [ -z "$JAVA_HOME" -a -d "$JVM_ROOT/java" ] && JAVA_HOME="$JVM_ROOT/java"
+ [ -z "$JAVA_HOME" -a -d "$JVM_ROOT/jre" ] && JAVA_HOME="$JVM_ROOT/jre"
+ 
++_find_fallback_jvm() {
++  local preferred_version=$1 jvm_selection_cmd java_home
++  
++  if [ -n "$1" ]; then
++    # if preferred version is passed take first version which is exactly the same or nearest higher version
++    jvm_selection_cmd="sort -n -k1,1 -k2,2r | awk '\$1>=$preferred_version { print \$0; exit }'"
++  else
++    # with no preference take the highest version installed
++    jvm_selection_cmd="sort -nr -k1,2 | head -n1"
++  fi
++
++  java_home=$(find "$JVM_ROOT" -name java -type f -executable  | # all java executables \
++    xargs -r -I{} sh -c 'printf "%s %s\n" "$({} -version 2>&1 | awk "\$2 == \"version\" { gsub(/\"/,\"\",\$3); print \$3 }")" "{}"' | # format as <version> <java path> \
++    awk 'BEGIN { FS="." } $1==1 { print $2 " " $0 } $1>1 { print $1 " " $0 }' | # prefix with feature version <feature> <version> <java path> \
++    eval $jvm_selection_cmd  | # select row according to criteria \
++    cut -f3- -d' ' | # extract java path \
++    sed 's;\(^'$JVM_ROOT'/[^/]*\).*;\1;') # use only $JVM_ROOT subdir
++
++  if [ -d "$java_home" ]; then
++    JAVA_HOME="$java_home"
++    export JAVA_HOME
++    return 0
++  fi
++
++  return 1
++}
++
+ # Set the java virtual machine
+ set_jvm() {
+   # use $JAVA_HOME if defined
+@@ -53,6 +80,10 @@
+     return
+   fi
+ 
++  if _find_fallback_jvm "$@"; then
++    return
++  fi
++
+   echo "Can't find java virtual machine, aborting." >&2
+   return 1
+ }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/jpackage-utils.git/commitdiff/0dbfd2adcbb2503f536e87f9a84dda9c68a0f4fe



More information about the pld-cvs-commit mailing list