blob: 44aa2741bf885474490019019bdaf632c0f26ab1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#
# Helper class for all Java packages
#
# Copyright (c) 2004, Thomas Matthijs <axxo@keanu.be>
# Copyright (c) 2004, Karl Trygve Kalleberg <karltk@gentoo.org>
# Copyright (c) 2004, Gentoo Foundation
#
# Licensed under the GNU General Public License, v2
inherit eutils
ECLASS=java-utils
INHERITED="$INHERITED $ECLASS"
DESCRIPTION="Based on the $ECLASS eclass"
DEPEND=">=java-config-1.2.7"
EXPORT_FUNCTIONS pkg_setup
java-utils_pkg_setup() {
java-utils_ensure-jdk
java-utils_vm-version-sufficient
}
java-utils_setup-vm() {
local vendor=`java-utils_get-vm-vendor`
if [ ${vendor} = "sun-jdk" ] && java-utils_is-vm-version-ge 1 5; then
addpredict "/dev/random"
elif [[ ${vendor} = "ibm-jdk-bin" ]]; then
addwrite "/proc/self/maps"
addwrite "/proc/cpuinfo"
elif [[ ${vendor} = "jrockit-jdk-bin" ]]; then
addwrite "/proc/cpuinfo"
fi
}
java-utils_ensure-jdk() {
if ! java-utils_is-vm-jdk; then
eerror "A full JDK is needed by this package. You currently have no Java VM active or only a JRE"
eerror "Please use java-config -S to set your system vm to a JDK"
die "Active VM is not a JDK"
fi
}
java-utils_is-vm-jdk() {
if [ "$JDK_HOME" ] && [ "$JDK_HOME" == "$JAVA_HOME" ]; then
return 0
else
return 1
fi
}
java-utils_get-vm-vendor() {
local vm=$(java-config -f)
echo ${vm%-*}
}
java-utils_get-vm-version() {
local version=$(java-config -f | sed -e "s/.*-\([0-9.]\+\).*/\1/")
echo ${version}
}
java-utils_vm-version-sufficient() {
local version=$(echo ${DEPEND} | sed -e 's:.*virtual/jdk-\?\([^$ ]*\).*:\1:' -e 's:\.: :g')
if [ "${version}" != "" ]; then
java-utils_ensure-vm-version-ge ${version}
fi
}
java-utils_ensure-vm-version-ge() {
if ! java-utils_is-vm-version-ge $@ ; then
eerror "This package requires a Java VM version >= $@"
einfo "Please use java-config -S to set the correct one"
die "Active Java VM too old"
fi
}
java-utils_is-vm-version-ge() {
local user_major=${1:-0}
local user_minor=${2:-0}
local user_patch=${3:-0}
local user_version=${user_major}.${user_minor}.${user_patch}
local vm_version=$(java-utils_get-vm-version)
local vm_major=$(echo ${vm_version} | cut -d. -f1)
local vm_minor=$(echo ${vm_version} | cut -d. -f2)
local vm_patch=$(echo ${vm_version} | cut -d. -f3)
local vm_extra=$(echo ${vm_version} | cut -d. -f4)
if [ ${vm_major} -ge ${user_major} ] && [ ${vm_minor} -gt ${user_minor} ] ; then
echo "Detected a JDK >= ${user_version}"
return 0
elif [ ${vm_major} -ge ${user_major} ] && [ ${vm_minor} -ge ${user_minor} ] && [ ${vm_patch} -ge ${user_patch} ] ; then
echo "Detected a JDK >= ${user_version}"
return 0
else
echo "Detected a JDK < ${user_version}"
return 1
fi
}
|