Date: Monday, September 1, 2014 @ 13:37:18 Author: guillaume Revision: 220857
FS#41639 add link pointing at current jre Modified: java-common/trunk/PKGBUILD java-common/trunk/bin_archlinux-java java-common/trunk/bin_java-common-wrapper java-common/trunk/install_java-common.sh java-common/trunk/profile_jre.csh java-common/trunk/profile_jre.sh java-common/trunk/test_archlinux-java -------------------------+ PKGBUILD | 10 +++++----- bin_archlinux-java | 16 ++++++++++++++-- bin_java-common-wrapper | 2 +- install_java-common.sh | 38 +++++++++++++++++++++++++++++++++++++- profile_jre.csh | 2 +- profile_jre.sh | 2 +- test_archlinux-java | 9 +++++++++ 7 files changed, 68 insertions(+), 11 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-09-01 10:43:17 UTC (rev 220856) +++ PKGBUILD 2014-09-01 11:37:18 UTC (rev 220857) @@ -19,11 +19,11 @@ 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() { Modified: bin_archlinux-java =================================================================== --- bin_archlinux-java 2014-09-01 10:43:17 UTC (rev 220856) +++ bin_archlinux-java 2014-09-01 11:37:18 UTC (rev 220857) @@ -6,12 +6,15 @@ # Author: Guillaume ALAUX <guilla...@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 @@ # $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 Modified: bin_java-common-wrapper =================================================================== --- bin_java-common-wrapper 2014-09-01 10:43:17 UTC (rev 220856) +++ bin_java-common-wrapper 2014-09-01 11:37:18 UTC (rev 220857) @@ -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##*/}" "$@" Modified: install_java-common.sh =================================================================== --- install_java-common.sh 2014-09-01 10:43:17 UTC (rev 220856) +++ install_java-common.sh 2014-09-01 11:37:18 UTC (rev 220857) @@ -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' } Modified: profile_jre.csh =================================================================== --- profile_jre.csh 2014-09-01 10:43:17 UTC (rev 220856) +++ profile_jre.csh 2014-09-01 11:37:18 UTC (rev 220857) @@ -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 Modified: profile_jre.sh =================================================================== --- profile_jre.sh 2014-09-01 10:43:17 UTC (rev 220856) +++ profile_jre.sh 2014-09-01 11:37:18 UTC (rev 220857) @@ -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 Modified: test_archlinux-java =================================================================== --- test_archlinux-java 2014-09-01 10:43:17 UTC (rev 220856) +++ test_archlinux-java 2014-09-01 11:37:18 UTC (rev 220857) @@ -11,6 +11,7 @@ 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 @@ 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 @@ 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 @@ 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