git » java-common.git » commit 6a482b1

FS#41639 add link pointing at current jre

author Guillaume Alaux
2014-09-01 11:37:18 UTC
committer Guillaume Alaux
2014-09-01 11:37:18 UTC
parent 2a6c3d05d5c624a66c42b2156cb3b983a91fc3a8

FS#41639 add link pointing at current jre

PKGBUILD +5 -5
bin_archlinux-java +14 -2
bin_java-common-wrapper +1 -1
install_java-common.sh +37 -1
profile_jre.csh +1 -1
profile_jre.sh +1 -1
test_archlinux-java +9 -0

diff --git a/PKGBUILD b/PKGBUILD
index b59c74e..6bcf89a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -19,11 +19,11 @@ source=(profile_jre.csh
         bin_java-common-wrapper
         https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz)
 
-sha256sums=('073ebe73e05346c03c29d02c73cca38f6a4fccc9f3ab2026760f1cd29791fabb'
-            '458eced6d2846805fbc18ca2ba717bf5f0556cc93a442b485c81fe12a4f6e5b6'
-            'd8753baf34ac2454edd7ba4d4f3ecf52aba02615a8ebc0f35ddf59ea83c11cd2'
-            'edf0f8eeb17720276026777b5b2ecb8629593e9f0a3af6def66cc9a77e31810a'
-            '622927af9ec374140a878993936f7fdd4206fe069dddfcefc6d4e15fa6d67f39'
+sha256sums=('72fa8a6d2d38f37ab51d36f383fa94bf424d494f0d3712b3af73daaf30046b2b'
+            'ffef7d042be3f20e3225780def56bcbadd75a74a3ceecc57c0af23d78e39cb54'
+            '00af7fe1894e0edc7663bfbdd626c68171cad7bc7d499f343f2eee9637d4b4c7'
+            'c28ffd3acc702e8cb02b3ec18516c0c4287614dd1f5803f9357a7a4c7c798f35'
+            '16a4fde19bd34210ff2d06480085f681b4e41e85ec89853e3cafaa8377bcedfb'
             '65a313a76fd5cc1c58c9e19fbc80fc0e418a4cbfbd46d54b35ed5b6e0025d4ee')
 
 check() {
diff --git a/bin_archlinux-java b/bin_archlinux-java
index 61cb369..a22aa49 100755
--- a/bin_archlinux-java
+++ b/bin_archlinux-java
@@ -6,12 +6,15 @@
 # Author: Guillaume ALAUX <guillaume@archlinux.org>
 
 JVM_DIR=/usr/lib/jvm
-DEFAULT_NAME=java-default-runtime
+DEFAULT_NAME=default
 DEFAULT_PATH=${JVM_DIR}/${DEFAULT_NAME}
+DEFAULT_NAME_JRE=default-runtime
+DEFAULT_PATH_JRE=${JVM_DIR}/${DEFAULT_NAME_JRE}
 BIN_PATH=/usr/bin
 WRAPPER_PATH=/usr/lib/java-common-wrapper
 
 
+
 # Utility functions
 
 check_root() {
@@ -73,12 +76,21 @@ unset_bin_links() {
 
 # $1: Java environment name to set as default
 set_default_link_to() {
+  new_default=$1
   unlink ${DEFAULT_PATH} 2>/dev/null
-  ln -sf $1 ${DEFAULT_PATH}
+  ln -sf ${new_default} ${DEFAULT_PATH}
+
+  unlink ${DEFAULT_PATH_JRE} 2>/dev/null
+  if [[ ${new_default} == */jre ]]; then
+    ln -sf ${new_default} ${DEFAULT_PATH_JRE}
+  else
+    ln -sf ${new_default}/jre ${DEFAULT_PATH_JRE}
+  fi
 }
 
 unset_default_link() {
   unlink ${DEFAULT_PATH} 2>/dev/null
+  unlink ${DEFAULT_PATH_JRE} 2>/dev/null
 }
 
 # First level functions
diff --git a/bin_java-common-wrapper b/bin_java-common-wrapper
index 05bce5e..19d9eda 100755
--- a/bin_java-common-wrapper
+++ b/bin_java-common-wrapper
@@ -1,2 +1,2 @@
 #!/bin/bash
-exec "${JAVA_HOME:-/usr/lib/jvm/java-default-runtime}/bin/${0##*/}" "$@"
+exec "${JAVA_HOME:-/usr/lib/jvm/default}/bin/${0##*/}" "$@"
diff --git a/install_java-common.sh b/install_java-common.sh
index 4634bbe..f1ab2f9 100644
--- a/install_java-common.sh
+++ b/install_java-common.sh
@@ -1,8 +1,44 @@
+JVM_DIR=/usr/lib/jvm
+OLD_DEFAULT_NAME=java-default-runtime
+OLD_DEFAULT_PATH=${JVM_DIR}/${OLD_DEFAULT_NAME}
+DEFAULT_NAME=default
+DEFAULT_PATH=${JVM_DIR}/${DEFAULT_NAME}
+DEFAULT_NAME_JRE=default-runtime
+DEFAULT_PATH_JRE=${JVM_DIR}/${DEFAULT_NAME_JRE}
+
+# $1: Java environment name to set as default
+set_default_link_to() {
+  new_default=$1
+  unlink ${DEFAULT_PATH} 2>/dev/null
+  ln -sf ${new_default} ${DEFAULT_PATH}
+
+  unlink ${DEFAULT_PATH_JRE} 2>/dev/null
+  if [[ ${new_default} == */jre ]]; then
+    ln -sf ${new_default} ${DEFAULT_PATH_JRE}
+  else
+    ln -sf ${new_default}/jre ${DEFAULT_PATH_JRE}
+  fi
+}
+
+pre_install() {
+  _curr_def=$(readlink ${OLD_DEFAULT_PATH} && true)
+  if [ -n ${_curr_def} ]; then
+    unlink ${OLD_DEFAULT_PATH} > /dev/null 2>&1
+    ln -sf ${DEFAULT_NAME} ${OLD_DEFAULT_PATH}
+
+    set_default_link_to ${_curr_def}
+  fi
+}
+
+pre_upgrade() {
+  pre_install "$@"
+}
+
 post_install() {
   echo 'Installing multiple non-conflicting Java environments is now supported'
   echo 'Check the following wiki section for more info:'
   echo '  https://wiki.archlinux.org/index.php/Java'
-  echo 'Please make sure JAVA_HOME is set to /usr/lib/jvm/java-default-runtime'
+  echo 'Please make sure JAVA_HOME is set to /usr/lib/jvm/default'
   echo 'If not, you may have to logout and login again to set it according to /etc/profile.d/jre.sh'
 }
 
diff --git a/profile_jre.csh b/profile_jre.csh
index 6a2b222..0bd263f 100644
--- a/profile_jre.csh
+++ b/profile_jre.csh
@@ -1,6 +1,6 @@
 # Do not change this unless you want to completely by-pass Arch Linux' way
 # of handling Java versions and vendors. Instead, please use script `archlinux-java`
-setenv JAVA_HOME "/usr/lib/jvm/java-default-runtime"
+setenv JAVA_HOME "/usr/lib/jvm/default"
 
 # Enable this for non-reparenting window managers
 #setenv _JAVA_AWT_WM_NONREPARENTING 1
diff --git a/profile_jre.sh b/profile_jre.sh
index d9165b9..fd5db05 100644
--- a/profile_jre.sh
+++ b/profile_jre.sh
@@ -1,6 +1,6 @@
 # Do not change this unless you want to completely by-pass Arch Linux' way
 # of handling Java versions and vendors. Instead, please use script `archlinux-java`
-export JAVA_HOME=/usr/lib/jvm/java-default-runtime
+export JAVA_HOME=/usr/lib/jvm/default
 
 # Enable this for non-reparenting window managers
 #export _JAVA_AWT_WM_NONREPARENTING=1
diff --git a/test_archlinux-java b/test_archlinux-java
index fa03f53..4e55f30 100755
--- a/test_archlinux-java
+++ b/test_archlinux-java
@@ -11,6 +11,7 @@ declare test_dir
 
 INIT_JVM_DIR=${JVM_DIR}
 INIT_DEFAULT_PATH=${DEFAULT_PATH}
+INIT_DEFAULT_PATH_JRE=${DEFAULT_PATH_JRE}
 INIT_BIN_PATH=${BIN_PATH}
 INIT_WRAPPER_PATH=${WRAPPER_PATH}
 
@@ -28,6 +29,7 @@ setUp() {
   test_dir=$(mktemp -d)
   JVM_DIR=${test_dir}${INIT_JVM_DIR}
   DEFAULT_PATH=${test_dir}${INIT_DEFAULT_PATH}
+  DEFAULT_PATH_JRE=${test_dir}${INIT_DEFAULT_PATH_JRE}
   JAVA_NAME=$(get_rand_str)
   BIN_PATH=${test_dir}${INIT_BIN_PATH}
   mkdir -p ${BIN_PATH}
@@ -69,11 +71,15 @@ set_default_for_test() {
     for binary in javac javah jhat; do
       ln -s ${WRAPPER_PATH} ${BIN_PATH}/${binary}
     done
+    ln -s $1/jre ${DEFAULT_PATH_JRE}
+  else
+    ln -s $1 ${DEFAULT_PATH_JRE}
   fi
 }
 
 assertDefaultNotSet() {
   assertNull 'Default is set' "$(readlink ${DEFAULT_PATH})"
+  assertNull 'Default runtime is set' "$(readlink ${DEFAULT_PATH_JRE})"
   assertNull "PATH has a java binary" "$(readlink ${BIN_PATH}/java)"
   assertNull "PATH has a javac binary" "$(readlink ${BIN_PATH}/javac)"
 }
@@ -81,6 +87,9 @@ assertDefaultNotSet() {
 assertDefaultSetTo() {
   new_java=$1
   assertEquals "Default points at wrong Java env" "${new_java}" "$(readlink ${DEFAULT_PATH})"
+  if [ ${new_java} == */jre ]; then
+    assertEquals "Default runtime points at wrong Java env" "${new_java}/jre" "$(readlink ${DEFAULT_PATH_JRE})"
+  fi
   # For all links in /usr/bin that point at the wrapper
   for lpath in $(find -L ${BIN_PATH} -samefile ${WRAPPER_PATH}); do
     # There is a binary in the JVM bin dir