| author | Guillaume Alaux
<guillaume@archlinux.org> 2014-09-01 11:37:18 UTC |
| committer | Guillaume Alaux
<guillaume@archlinux.org> 2014-09-01 11:37:18 UTC |
| parent | 2a6c3d05d5c624a66c42b2156cb3b983a91fc3a8 |
| 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