summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO24
-rw-r--r--PKGBUILD54
-rw-r--r--archlinux-java32177
-rw-r--r--java32-runtime-common.install8
-rw-r--r--jre32.csh2
-rw-r--r--jre32.sh2
6 files changed, 267 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..0e7938a7c5bd
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,24 @@
+pkgbase = java32-common
+ pkgver = 2
+ pkgrel = 2
+ arch = any
+ license = GPL
+ source = archlinux-java32
+ source = jre32.csh
+ source = jre32.sh
+ sha256sums = cc36abf878c488f5426a6ad5584874c0d7af53d4b6b0ff4d1fc9e28d34285278
+ sha256sums = aca3bf98c4ceb765ea873c36f64a123a2c4a50e7d8c30ee00c34b86b75f029a0
+ sha256sums = 11fc4c32d52c5672fee764b25de133e243db0cace8a470ad816de7e6b33d962d
+
+pkgname = java32-runtime-common
+ pkgdesc = Common files for 32-bit Java Runtime Environments
+ url = https://www.archlinux.org/packages/extra/any/java32-runtime-common/
+ install = java32-runtime-common.install
+ backup = etc/profile.d/jre32.sh
+ backup = etc/profile.d/jre32.csh
+
+pkgname = java32-environment-common
+ pkgdesc = Common files for 32-bit Java Development Kits
+ url = https://www.archlinux.org/packages/extra/any/java32-environment-common/
+ depends = java32-runtime-common
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..f3ba67813706
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,54 @@
+# Maintainer: -
+# Based on the official 'java-common' package from [extra]:
+# - https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/java-common
+
+pkgname=('java32-runtime-common' 'java32-environment-common')
+pkgbase=java32-common
+pkgver=2
+pkgrel=2
+arch=('any')
+license=('GPL')
+source=('archlinux-java32'
+ 'jre32.csh'
+ 'jre32.sh')
+sha256sums=('cc36abf878c488f5426a6ad5584874c0d7af53d4b6b0ff4d1fc9e28d34285278'
+ 'aca3bf98c4ceb765ea873c36f64a123a2c4a50e7d8c30ee00c34b86b75f029a0'
+ '11fc4c32d52c5672fee764b25de133e243db0cace8a470ad816de7e6b33d962d')
+
+package_java32-runtime-common() {
+ pkgdesc='Common files for 32-bit Java Runtime Environments'
+ url="https://www.archlinux.org/packages/extra/any/${pkgname}/"
+ backup=('etc/profile.d/jre32.sh'
+ 'etc/profile.d/jre32.csh')
+ install=${pkgname}.install
+
+ install -d "${pkgdir}"/usr/lib32/jvm/
+ ln -s /dev/null "${pkgdir}"/usr/lib32/jvm/default
+ ln -s /dev/null "${pkgdir}"/usr/lib32/jvm/default-runtime
+
+ install -Dm644 jre32.sh "${pkgdir}"/etc/profile.d/jre32.sh
+ install -Dm644 jre32.csh "${pkgdir}"/etc/profile.d/jre32.csh
+ install -Dm755 archlinux-java32 "${pkgdir}"/usr/bin/archlinux-java32
+
+ install -d "${pkgdir}"/usr/bin/
+ # Official list of binaries that Java headless runtime packages MUST provide
+ # This list is based on Arch Linux' default Java implementation: "OpenJDK 7 Icedtea"
+ for b in java keytool orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200; do
+ ln -s /usr/lib32/jvm/default-runtime/bin/${b} "${pkgdir}"/usr/bin/${b}32
+ done
+}
+
+package_java32-environment-common() {
+ pkgdesc='Common files for 32-bit Java Development Kits'
+ url="https://www.archlinux.org/packages/extra/any/${pkgname}/"
+ depends=('java32-runtime-common')
+
+ install -d "${pkgdir}/usr/bin/"
+ # Official list of supplementary binaries that Java environment packages MUST provide
+ # This list is based on Arch Linux' default Java implementation: "OpenJDK 7 Icedtea"
+ for b in appletviewer extcheck idlj jar jarsigner javac javadoc javah javap jcmd \
+ jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat \
+ jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc; do
+ ln -s /usr/lib32/jvm/default/bin/${b} "${pkgdir}"/usr/bin/${b}32
+ done
+}
diff --git a/archlinux-java32 b/archlinux-java32
new file mode 100644
index 000000000000..d37f06cb5a9a
--- /dev/null
+++ b/archlinux-java32
@@ -0,0 +1,177 @@
+#! /bin/bash
+
+# Arch Linux helper script to set/unset/check/fix the enabled Java environment
+# This program may be freely redistributed under the terms of the GNU General Public License
+#
+# Author: Guillaume ALAUX <guillaume@archlinux.org>
+
+JVM_DIR=/usr/lib32/jvm
+DEFAULT_NAME=default
+DEFAULT_PATH=${JVM_DIR}/${DEFAULT_NAME}
+DEFAULT_NAME_JRE=default-runtime
+DEFAULT_PATH_JRE=${JVM_DIR}/${DEFAULT_NAME_JRE}
+
+
+# Utility functions
+
+check_root() {
+ if [ $(id -u) -ne 0 ]; then
+ echo 'This script must be run as root'
+ exit 1
+ fi
+}
+
+# $1: parameter count given to this script for this option
+# $2: expected parameter count for this option
+check_param_count() {
+ if [ $1 -ne $2 ]; then
+ echo 'Wrong parameter count'
+ exit 2
+ fi
+}
+
+# Second level functions
+
+get_default_java() {
+ path=$(readlink -e ${DEFAULT_PATH})
+ if [ "x${path}" != "x/dev/null" ]; then
+ echo ${path/${JVM_DIR}\/}
+ else
+ echo ""
+ fi
+}
+
+get_installed_javas() {
+ if [ -d ${JVM_DIR} ]; then
+ for dir in $(find ${JVM_DIR} -mindepth 1 -maxdepth 1 -type d | sort); do
+ if [ -x ${dir}/bin/javac ]; then
+ javas+=(${dir/${JVM_DIR}\/})
+ else
+ if [ -x ${dir}/jre/bin/java ]; then
+ javas+=(${dir/${JVM_DIR}\/}/jre)
+ fi
+ fi
+ done
+ fi
+ echo ${javas[@]}
+}
+
+# $1: Java environment name to test
+is_java_valid() {
+ test "x$1" != "x${DEFAULT_NAME}" && test -x ${JVM_DIR}/$1/bin/java
+}
+
+# $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
+}
+
+unset_default_link() {
+ unlink ${DEFAULT_PATH} 2>/dev/null
+ unlink ${DEFAULT_PATH_JRE} 2>/dev/null
+}
+
+# First level functions
+
+do_status() {
+ installed_java=($(get_installed_javas))
+ if [ ${#installed_java[@]} -eq 0 ]; then
+ echo 'No compatible Java environment installed'
+ else
+ default_java=$(get_default_java)
+ echo 'Available 32-bit Java environments:'
+ for java in ${installed_java[@]}; do
+ if [ "${java}/jre" = "${default_java}" ]; then
+ echo -e " ${java} (${java}/jre default)"
+ elif [ ${java} = "${default_java}" ]; then
+ echo -e " ${java} (default)"
+ else
+ echo " ${java}"
+ fi
+ done
+ if [ -z ${default_java} ]; then
+ echo "No Java environment set as default"
+ fi
+ fi
+}
+
+do_get() {
+ get_default_java
+}
+
+# $1: Java environment name to set as default
+do_set() {
+ if ! is_java_valid $1; then
+ echo "'${JVM_DIR}/$1' is not a valid Java environment path"
+ exit 1
+ fi
+ default=$(get_default_java)
+ if [ "x$1" != "x${default}" ] || ! is_java_valid ${default}; then
+ unset_default_link
+ set_default_link_to $1
+ fi
+
+ #parent_dir=$(dirname $1)
+ #if is_java_valid ${parent_dir}; then
+ # echo "Warning: '${parent_dir}' looks like a valid JDK whereas '$1' is set as default"
+ # echo "Fix this with 'archlinux-java set ${parent_dir}'"
+ #fi
+}
+
+# $1: Java environment name to unset
+do_unset() {
+ unset_default_link
+}
+
+do_fix() {
+ default=$(get_default_java)
+ if is_java_valid ${default}; then
+ if is_java_valid $(dirname ${default}); then
+ unset_default_link
+ set_default_link_to $(dirname ${default})
+ fi
+ else
+ prev=$(readlink ${DEFAULT_PATH})
+ unset_default_link
+ prev_fix=("${prev/\/jre}" "${prev}/jre")
+ to_check=(${prev_fix[@]} $(get_installed_javas))
+ for java in ${to_check[@]}; do
+ if ! is_java_valid $(get_default_java) && is_java_valid ${java}; then
+ set_default_link_to ${java}
+ fi
+ done
+ fi
+ if ! is_java_valid $(get_default_java); then
+ echo 'No valid Java environment found'
+ fi
+}
+
+usage() {
+ echo "$(basename $0) <COMMAND>"
+ echo -e "\nCOMMAND:"
+ echo -e '\tstatus\t\tList installed 32-bit Java environments and the enabled one'
+ echo -e '\tget\t\tReturn the short name of the 32-bit Java environment set as default'
+ echo -e '\tset <JAVA_ENV>\tForce <JAVA_ENV> as default'
+ echo -e '\tunset\t\tUnset current default 32-bit Java environment'
+ echo -e '\tfix\t\tFix an invalid/broken default 32-bit Java environment configuration'
+}
+
+## Main
+case $1 in
+ 'status') do_status;;
+ 'get') do_get;;
+ 'set') check_root; check_param_count $# 2; do_set $2;;
+ 'unset') check_root; do_unset;;
+ 'fix') check_root; do_fix;;
+ 'help' | '--help' | '-h' | '') usage;;
+ *) echo "$(basename $0): unknown option '$@'"; exit 1;;
+esac
diff --git a/java32-runtime-common.install b/java32-runtime-common.install
new file mode 100644
index 000000000000..9cf594a73b45
--- /dev/null
+++ b/java32-runtime-common.install
@@ -0,0 +1,8 @@
+post_install() {
+ echo 'For the complete set of 32-bit Java binaries to be available in your PATH,'
+ echo 'you need to re-login or source /etc/profile.d/jre32.sh'
+}
+
+post_upgrade() {
+ archlinux-java32 fix
+}
diff --git a/jre32.csh b/jre32.csh
new file mode 100644
index 000000000000..1cb251bc874e
--- /dev/null
+++ b/jre32.csh
@@ -0,0 +1,2 @@
+# Do not touch
+setenv PATH "${PATH}:/usr/lib32/jvm/default/bin"
diff --git a/jre32.sh b/jre32.sh
new file mode 100644
index 000000000000..81152073c82c
--- /dev/null
+++ b/jre32.sh
@@ -0,0 +1,2 @@
+# Do not touch
+export PATH=${PATH}:/usr/lib32/jvm/default/bin