support java 21

This commit is contained in:
Jephté Clain 2025-02-04 15:13:05 +04:00
parent c9eaf7d83f
commit 6f9ab14ffe
1 changed files with 75 additions and 17 deletions

View File

@ -16,6 +16,7 @@ JAVA_VMS7=(); JAVA_HOMES7=()
JAVA_VMS8=(); JAVA_HOMES8=()
JAVA_VMS11=(); JAVA_HOMES11=()
JAVA_VMS17=(); JAVA_HOMES17=()
JAVA_VMS21=(); JAVA_HOMES21=()
# versions locales 32 bits
JAVA32_VMS1_3=(); JAVA32_HOMES1_3=()
JAVA32_VMS1_4=(); JAVA32_HOMES1_4=()
@ -25,6 +26,7 @@ JAVA32_VMS7=(); JAVA32_HOMES7=()
JAVA32_VMS8=(); JAVA32_HOMES8=()
JAVA32_VMS11=(); JAVA32_HOMES11=()
JAVA32_VMS17=(); JAVA32_HOMES17=()
JAVA32_VMS21=(); JAVA32_HOMES21=()
# versions locales 64 bits
JAVA64_VMS5=(); JAVA64_HOMES5=()
JAVA64_VMS6=(); JAVA64_HOMES6=()
@ -32,6 +34,7 @@ JAVA64_VMS7=(); JAVA64_HOMES7=()
JAVA64_VMS8=(); JAVA64_HOMES8=()
JAVA64_VMS11=(); JAVA64_HOMES11=()
JAVA64_VMS17=(); JAVA64_HOMES17=()
JAVA64_VMS21=(); JAVA64_HOMES21=()
# version sélectionnée
SELECTED_JAVA_VM=; SELECTED_JAVA_HOME=
SELECTED_JAVA=; SELECTED_JAVAC=
@ -112,6 +115,14 @@ function __java_compute_vms() {
__java_add HOMES8 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 11 ]; then
__java_add VMS11 "$vm" 64
__java_add HOMES11 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk17)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
@ -120,12 +131,12 @@ function __java_compute_vms() {
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)"
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk21)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 11 ]; then
__java_add VMS11 "$vm" 64
__java_add HOMES11 "$HOME/opt/jvm64/$vm" 64
if [ "$v" == 21 ]; then
__java_add VMS21 "$vm" 64
__java_add HOMES21 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk1.5.*" | LANG=C sort -r)"
@ -158,6 +169,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm" 64
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm" 64
__java_add HOMES21 "$HOME/opt/jvm64/$vm" 64
done
# Puis chercher dans les JVMs installées manuellement dans ~/opt
array_from_lines vms "$(list_dirs "$HOME/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do
@ -195,6 +211,14 @@ function __java_compute_vms() {
__java_add HOMES17 "$HOME/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt" jdk21)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "$HOME/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm"
@ -230,6 +254,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm"
__java_add HOMES17 "$HOME/opt/$vm"
done
array_from_lines vms "$(list_dirs "$HOME/opt" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm"
__java_add HOMES21 "$HOME/opt/$vm"
done
# Puis chercher dans les JVMs installées manuellement dans /opt
array_from_lines vms "$(list_dirs "/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do
@ -267,6 +296,14 @@ function __java_compute_vms() {
__java_add HOMES17 "/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "/opt" jdk21)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm"
@ -302,6 +339,11 @@ function __java_compute_vms() {
__java_add VMS17 "$vm"
__java_add HOMES17 "/opt/$vm"
done
array_from_lines vms "$(list_dirs "/opt" "jdk-21.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS21 "$vm"
__java_add HOMES21 "/opt/$vm"
done
# Puis chercher dans les JVMs installées par le système dans
# /usr/lib/jvm
if check_sysinfos -d gentoo; then
@ -357,6 +399,9 @@ function __java_compute_vms() {
elif [ "$v" == 17 ]; then
__java_add VMS17 "$vm"
__java_add HOMES17 "/usr/lib/jvm/$vm"
elif [ "$v" == 21 ]; then
__java_add VMS21 "$vm"
__java_add HOMES21 "/usr/lib/jvm/$vm"
fi
done
if [ -d /usr/lib/j2sdk1.4-sun ]; then
@ -398,7 +443,7 @@ function __java_compute_vms() {
function __java_dump_vms() {
local v b i vms homes
for v in 1_3 1_4 5 6 7 8 11 17; do
for v in 1_3 1_4 5 6 7 8 11 17 21; do
for b in "" 32 64; do
vms="JAVA${b}_VMS${v}[@]"; vms=("${!vms}")
homes="JAVA${b}_HOMES${v}[@]"; homes=("${!homes}")
@ -429,7 +474,7 @@ function __java_select_vms() {
}
function __java_select() {
# Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8, 11, 17)
# Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8, 11, 17, 21)
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits. Sinon, la version sélectionnée peut être 32bits
# ou 64bits selon ce qui est disponible.
@ -473,7 +518,7 @@ function __java_select() {
function __java_select_default() {
# Sélectionner la version de java par défaut. Si JAVA_HOME est défini,
# prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11, 17 puis 1_4
# prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11, 17, 21 puis 1_4
# la version 1_3 n'est jamais sélectionnée automatiquement
if [ -n "$JAVA_HOME" ]; then
export JAVA_HOME # s'assurer que cette variable est exportée
@ -485,7 +530,7 @@ function __java_select_default() {
return 0
fi
local vm
for vm in 5 6 7 8 11 17 1_4; do
for vm in 5 6 7 8 11 17 21 1_4; do
__java_select "$vm" && return 0
done
return 1
@ -493,7 +538,7 @@ function __java_select_default() {
function select_java() {
# sélectionner la version *minimum* de java correspondant à $1
# $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+|17|17+
# $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+|17|17+|21|21+
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits
local v vms homes
@ -530,12 +575,17 @@ function select_java() {
done
;;
11|11+)
for v in 11 17; do
for v in 11 17 21; do
__java_select "$v" "$2" && return 0
done
;;
17|17+)
for v in 17; do
for v in 17 21; do
__java_select "$v" "$2" && return 0
done
;;
21|21+)
for v in 21; do
__java_select "$v" "$2" && return 0
done
;;
@ -545,8 +595,8 @@ function select_java() {
function select_java_exact() {
# sélectionner la version *exacte* de java correspondant à $1
# $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11|17 pour une correspondance exacte
# $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+|17+ pour une version minimum
# $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11|17|21 pour une correspondance exacte
# $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+|17+|21+ pour une version minimum
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits
local v vms homes
@ -604,7 +654,7 @@ function select_java_exact() {
__java_select 11 "$2" && return 0
;;
11+)
for v in 11 17; do
for v in 11 17 21; do
__java_select "$v" "$2" && return 0
done
;;
@ -612,7 +662,15 @@ function select_java_exact() {
__java_select 17 "$2" && return 0
;;
17+)
for v in 17; do
for v in 17 21; do
__java_select "$v" "$2" && return 0
done
;;
21)
__java_select 21 "$2" && return 0
;;
21+)
for v in 21; do
__java_select "$v" "$2" && return 0
done
;;
@ -624,9 +682,9 @@ function select_java_any() {
# Sélectionner la version exacte de java correspondant aux arguments, dans
# l'ordre, jusqu'à ce qu'un argument corresponde. DEFAULT correspond à la
# valeur actuelle de JAVA_HOME, si elle est définie.
# Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 17 1.4"
# Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 17 21 1.4"
local v
[ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 17 1.4
[ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 17 21 1.4
for v in "$@"; do
if [ "$v" == DEFAULT ]; then
if [ -n "$JAVA_HOME" ]; then