/[gentoo-x86]/eclass/java-vm-2.eclass
Gentoo

Contents of /eclass/java-vm-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.34 - (show annotations) (download)
Tue Oct 11 10:55:06 2011 UTC (2 years, 11 months ago) by grobian
Branch: MAIN
Changes since 1.33: +6 -3 lines
set_java_env: fix symlink in JAVA_VM_DIR for Prefix

java_home contains EPREFIX, hence, when used with helpers (dosym in this
case), the result gets $EPREFIX$EPREFIX/....  Strip EPREFIX from
java_home before using it with dosym.

1 # Copyright 1999-2004 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/java-vm-2.eclass,v 1.33 2011/09/01 14:15:57 caster Exp $
4
5 # -----------------------------------------------------------------------------
6 # @eclass-begin
7 # @eclass-shortdesc Java Virtual Machine eclass
8 # @eclass-maintainer java@gentoo.org
9 #
10 # This eclass provides functionality which assists with installing
11 # virtual machines, and ensures that they are recognized by java-config.
12 #
13 # -----------------------------------------------------------------------------
14
15 inherit eutils fdo-mime multilib prefix
16
17 DEPEND="=dev-java/java-config-2*"
18 has "${EAPI}" 0 1 && DEPEND="${DEPEND} >=sys-apps/portage-2.1"
19
20 RDEPEND="
21 =dev-java/java-config-2*"
22
23 export WANT_JAVA_CONFIG=2
24
25 JAVA_VM_CONFIG_DIR="/usr/share/java-config-2/vm"
26 JAVA_VM_DIR="/usr/lib/jvm"
27 JAVA_VM_BUILD_ONLY="${JAVA_VM_BUILD_ONLY:-FALSE}"
28
29 EXPORT_FUNCTIONS pkg_setup pkg_postinst pkg_prerm pkg_postrm
30
31 java-vm-2_pkg_setup() {
32 if [[ "${SLOT}" != "0" ]]; then
33 VMHANDLE=${PN}-${SLOT}
34 else
35 VMHANDLE=${PN}
36 fi
37 }
38
39 java-vm-2_pkg_postinst() {
40 # Set the generation-2 system VM, if it isn't set
41 if [[ -z "$(java-config-2 -f)" ]]; then
42 java_set_default_vm_
43 fi
44
45 java-vm_check-nsplugin
46 java_mozilla_clean_
47 fdo-mime_desktop_database_update
48 }
49
50 java-vm_check-nsplugin() {
51 local libdir
52 if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
53 libdir=lib32
54 else
55 libdir=lib
56 fi
57
58 has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
59
60 # Install a default nsplugin if we don't already have one
61 if has nsplugin ${IUSE} && use nsplugin; then
62 if [[ ! -f "${EPREFIX}"/usr/${libdir}/nsbrowser/plugins/javaplugin.so ]]; then
63 einfo "No system nsplugin currently set."
64 java-vm_set-nsplugin
65 else
66 einfo "System nsplugin is already set, not changing it."
67 fi
68 einfo "You can change nsplugin with eselect java-nsplugin."
69 fi
70 }
71
72 java-vm_set-nsplugin() {
73 local extra_args
74 if use amd64; then
75 if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
76 extra_args="32bit"
77 else
78 extra_args="64bit"
79 fi
80 einfo "Setting ${extra_args} nsplugin to ${VMHANDLE}"
81 else
82 einfo "Setting nsplugin to ${VMHANDLE}..."
83 fi
84 eselect java-nsplugin set ${extra_args} ${VMHANDLE}
85 }
86
87 java-vm-2_pkg_prerm() {
88 if [[ "$(java-config -f 2>/dev/null)" == "${VMHANDLE}" ]]; then
89 ewarn "It appears you are removing your system-vm!"
90 ewarn "Please run java-config -L to list available VMs,"
91 ewarn "then use java-config -S to set a new system-vm!"
92 fi
93 }
94
95 java-vm-2_pkg_postrm() {
96 fdo-mime_desktop_database_update
97 }
98
99 java_set_default_vm_() {
100 java-config-2 --set-system-vm="${VMHANDLE}"
101
102 einfo " ${P} set as the default system-vm."
103 }
104
105 get_system_arch() {
106 local sarch
107 sarch=$(echo ${ARCH} | sed -e s/[i]*.86/i386/ -e s/x86_64/amd64/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/)
108 if [ -z "${sarch}" ]; then
109 sarch=$(uname -m | sed -e s/[i]*.86/i386/ -e s/x86_64/amd64/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/)
110 fi
111 echo ${sarch}
112 }
113
114 # TODO rename to something more evident, like install_env_file
115 set_java_env() {
116 debug-print-function ${FUNCNAME} $*
117
118 if has ${EAPI:-0} 0 1 2 && ! use prefix ; then
119 ED="${D}"
120 EPREFIX=""
121 fi
122
123 local platform="$(get_system_arch)"
124 local env_file="${ED}${JAVA_VM_CONFIG_DIR}/${VMHANDLE}"
125 local old_env_file="${ED}/etc/env.d/java/20${P}"
126 if [[ ${1} ]]; then
127 local source_env_file="${1}"
128 else
129 local source_env_file="${FILESDIR}/${VMHANDLE}.env"
130 fi
131
132 if [[ ! -f ${source_env_file} ]]; then
133 die "Unable to find the env file: ${source_env_file}"
134 fi
135
136 dodir ${JAVA_VM_CONFIG_DIR}
137 sed \
138 -e "s/@P@/${P}/g" \
139 -e "s/@PN@/${PN}/g" \
140 -e "s/@PV@/${PV}/g" \
141 -e "s/@PF@/${PF}/g" \
142 -e "s/@PLATFORM@/${platform}/g" \
143 -e "s/@LIBDIR@/$(get_libdir)/g" \
144 -e "/^LDPATH=.*lib\\/\\\"/s|\"\\(.*\\)\"|\"\\1${platform}/:\\1${platform}/server/\"|" \
145 < "${source_env_file}" \
146 > "${env_file}" || die "sed failed"
147
148 (
149 echo "VMHANDLE=\"${VMHANDLE}\""
150 echo "BUILD_ONLY=\"${JAVA_VM_BUILD_ONLY}\""
151 ) >> "${env_file}"
152
153 eprefixify ${env_file}
154
155 [[ -n ${JAVA_PROVIDE} ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\"" >> ${env_file}
156
157 local java_home=$(source "${env_file}"; echo ${JAVA_HOME})
158 [[ -z ${java_home} ]] && die "No JAVA_HOME defined in ${env_file}"
159
160 # Make the symlink
161 dodir "${JAVA_VM_DIR}"
162 dosym ${java_home#${EPREFIX}} ${JAVA_VM_DIR}/${VMHANDLE} \
163 || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}"
164 }
165
166 # -----------------------------------------------------------------------------
167 # @ebuild-function java-vm_revdep-mask
168 #
169 # Installs a revdep-rebuild control file which SEARCH_DIR_MASK set to the path
170 # where the VM is installed. Prevents pointless rebuilds - see bug #177925.
171 # Also gives a notice to the user.
172 #
173 # @example
174 # java-vm_revdep-mask
175 # java-vm_revdep-mask /path/to/jdk/
176 #
177 # @param $1 - Path of the VM (defaults to /opt/${P} if not set)
178 # ------------------------------------------------------------------------------
179 java-vm_revdep-mask() {
180 if has ${EAPI:-0} 0 1 2 && ! use prefix; then
181 ED="${D}"
182 EPREFIX=
183 fi
184
185 local VMROOT="${1-"${EPREFIX}"/opt/${P}}"
186
187 dodir /etc/revdep-rebuild/
188 echo "SEARCH_DIRS_MASK=\"${VMROOT}\""> "${ED}/etc/revdep-rebuild/61-${VMHANDLE}"
189
190 elog "A revdep-rebuild control file was installed to prevent reinstalls due to"
191 elog "missing dependencies (see bug #177925 for more info). Note that some parts"
192 elog "of the JVM may require dependencies that are pulled only through respective"
193 elog "USE flags (typically X, alsa, odbc) and some Java code may fail without them."
194 }
195
196 java_get_plugin_dir_() {
197 has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
198 echo "${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins
199 }
200
201 install_mozilla_plugin() {
202 local plugin="${1}"
203 local variant="${2}"
204
205 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
206 if [[ ! -f "${ED}/${plugin}" ]]; then
207 die "Cannot find mozilla plugin at ${ED}/${plugin}"
208 fi
209
210 if [[ -n "${variant}" ]]; then
211 variant="-${variant}"
212 fi
213
214 local plugin_dir="/usr/share/java-config-2/nsplugin"
215 dodir "${plugin_dir}"
216 dosym "${plugin}" "${plugin_dir}/${VMHANDLE}${variant}-javaplugin.so"
217 }
218
219 java_mozilla_clean_() {
220 # Because previously some ebuilds installed symlinks outside of pkg_install
221 # and are left behind, which forces you to manualy remove them to select the
222 # jdk/jre you want to use for java
223 local plugin_dir=$(java_get_plugin_dir_)
224 for file in ${plugin_dir}/javaplugin_*; do
225 rm -f ${file}
226 done
227 for file in ${plugin_dir}/libjavaplugin*; do
228 rm -f ${file}
229 done
230 }
231
232 # ------------------------------------------------------------------------------
233 # @eclass-end
234 # ------------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.20