/[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.23 - (hide annotations) (download)
Fri Aug 29 19:10:19 2008 UTC (6 years ago) by caster
Branch: MAIN
Changes since 1.22: +11 -6 lines
Add a 'variant' parameter to install_mozilla_plugin() to allow installing multiple nsplugin variants of one JRE, bug #235869.

1 nichoj 1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 caster 1.23 # $Header: /var/cvsroot/gentoo-x86/eclass/java-vm-2.eclass,v 1.22 2008/07/07 16:54:56 betelgeuse Exp $
4 nichoj 1.9
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 nichoj 1.1 #
13 nichoj 1.9 # -----------------------------------------------------------------------------
14 nichoj 1.1
15 betelgeuse 1.16 inherit eutils fdo-mime
16 nichoj 1.1
17     DEPEND="
18 ali_bush 1.18 =dev-java/java-config-2*
19 nichoj 1.4 >=sys-apps/portage-2.1"
20 nichoj 1.1 RDEPEND="
21 ali_bush 1.18 =dev-java/java-config-2*
22 nichoj 1.14 =dev-java/java-config-1.3*"
23 nichoj 1.1
24     export WANT_JAVA_CONFIG=2
25    
26     JAVA_VM_CONFIG_DIR="/usr/share/java-config-2/vm"
27     JAVA_VM_DIR="/usr/lib/jvm"
28    
29 betelgeuse 1.22 EXPORT_FUNCTIONS pkg_setup pkg_postinst pkg_prerm pkg_postrm
30 betelgeuse 1.17
31     java-vm-2_pkg_setup() {
32     if [[ "${SLOT}" != "0" ]]; then
33     VMHANDLE=${PN}-${SLOT}
34     else
35     VMHANDLE=${PN}
36     fi
37     }
38 nichoj 1.1
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 nichoj 1.9 # support both variables for now
46     if [[ ${JAVA_SUPPORTS_GENERATION_1} == 'true' && ${JAVA_VM_NO_GENERATION1} != 'true' ]]; then
47 nichoj 1.8 local systemvm1="$(java-config-1 -f 2>/dev/null)"
48 nichoj 1.9 # no generation-1 system-vm was previously set
49 nichoj 1.1 if [[ -z "${systemvm1}" ]]; then
50 nichoj 1.8 # if 20java exists, must be using old VM
51     if [[ -f /etc/env.d/20java ]]; then
52     ewarn "The current generation-1 system-vm is using an out-of-date VM,"
53     ewarn "as in, it hasn't been updated for use with the new Java sytem."
54     # othewise, it must not have been set before
55     else
56     ewarn "No generation-1 system-vm previously set."
57     fi
58     ewarn "Setting generation-1 system-vm to ${VMHANDLE}"
59     java-config-1 --set-system-vm=${P} 2>/dev/null
60 nichoj 1.1 # dirty check to see if we are upgrading current generation-1 system vm
61 nichoj 1.8 elif [[ "${systemvm1}" = ${VMHANDLE}* ]]; then
62 swegener 1.13 einfo "Emerging the current generation-1 system-vm..."
63 nichoj 1.8 einfo "Updating its config files."
64 swegener 1.13 java-config-1 --set-system-vm=${P} 2>/dev/null
65 nichoj 1.8 # dirty check to see if current system vm is a jre - replace it with
66     elif [[ "${systemvm1}" = *jre* ]]; then
67 swegener 1.13 ewarn "Current generation-1 system-vm is a JRE"
68 nichoj 1.8 ewarn "For the new and old Java systems to coexist,"
69     ewarn "the generation-1 system-vm must be a JDK."
70     ewarn "Setting generation-1 system-vm to ${VMHANDLE}"
71 swegener 1.13 java-config-1 --set-system-vm=${P} 2>/dev/null
72 nichoj 1.1 fi
73     # else... some other VM is being updated, so we don't have to worry
74 nichoj 1.9 else
75     einfo "JREs and 1.5+ JDKs are not supported for use with generation-1."
76     einfo "This is because generation-1 is only for use for building packages."
77     einfo "Only generation-2 should be used by end-users,"
78     einfo "where all JREs and JDKs will be available"
79 nichoj 1.1 fi
80    
81 nichoj 1.15 echo
82    
83     java-vm_check-nsplugin
84     java_mozilla_clean_
85 betelgeuse 1.16 fdo-mime_desktop_database_update
86 nichoj 1.15 }
87    
88     java-vm_check-nsplugin() {
89     local libdir
90     if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
91     libdir=lib32
92     else
93     libdir=lib
94     fi
95 nichoj 1.9 # Install a default nsplugin if we don't already have one
96 nichoj 1.3 if has nsplugin ${IUSE} && use nsplugin; then
97 nichoj 1.15 if [[ ! -f /usr/${libdir}/nsbrowser/plugins/javaplugin.so ]]; then
98     einfo "No system nsplugin currently set."
99     java-vm_set-nsplugin
100 caster 1.12 else
101     einfo "System nsplugin is already set, not changing it."
102 nichoj 1.3 fi
103 caster 1.12 einfo "You can change nsplugin with eselect java-nsplugin."
104 nichoj 1.3 fi
105 nichoj 1.15 }
106 nichoj 1.3
107 nichoj 1.15 java-vm_set-nsplugin() {
108     local extra_args
109     if use amd64; then
110     if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
111     extra_args="32bit"
112     else
113     extra_args="64bit"
114     fi
115     einfo "Setting ${extra_args} nsplugin to ${VMHANDLE}"
116     else
117     einfo "Setting nsplugin to ${VMHANDLE}..."
118     fi
119     eselect java-nsplugin set ${extra_args} ${VMHANDLE}
120 nichoj 1.1 }
121    
122     java-vm-2_pkg_prerm() {
123 betelgeuse 1.22 if [[ "$(java-config -f 2>/dev/null)" == "${VMHANDLE}" ]]; then
124     ewarn "It appears you are removing your system-vm!"
125     ewarn "Please run java-config -L to list available VMs,"
126     ewarn "then use java-config -S to set a new system-vm!"
127     fi
128 nichoj 1.1 }
129    
130 betelgeuse 1.16 java-vm-2_pkg_postrm() {
131     fdo-mime_desktop_database_update
132     }
133    
134 nichoj 1.1 java_set_default_vm_() {
135     java-config-2 --set-system-vm="${VMHANDLE}"
136    
137 nichoj 1.9 einfo " ${P} set as the default system-vm."
138 nichoj 1.1 }
139    
140     get_system_arch() {
141     local sarch
142     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/)
143     if [ -z "${sarch}" ]; then
144     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/)
145     fi
146     echo ${sarch}
147     }
148    
149     # TODO rename to something more evident, like install_env_file
150     set_java_env() {
151 betelgeuse 1.20 debug-print-function ${FUNCNAME} $*
152 nichoj 1.1 local platform="$(get_system_arch)"
153     local env_file="${D}${JAVA_VM_CONFIG_DIR}/${VMHANDLE}"
154     local old_env_file="${D}/etc/env.d/java/20${P}"
155 betelgeuse 1.20 if [[ ${1} ]]; then
156     local source_env_file="${1}"
157     else
158     local source_env_file="${FILESDIR}/${VMHANDLE}.env"
159     fi
160 nichoj 1.1
161     if [[ ! -f ${source_env_file} ]]; then
162     die "Unable to find the env file: ${source_env_file}"
163     fi
164    
165     dodir ${JAVA_VM_CONFIG_DIR}
166     sed \
167     -e "s/@P@/${P}/g" \
168     -e "s/@PN@/${PN}/g" \
169     -e "s/@PV@/${PV}/g" \
170     -e "s/@PF@/${PF}/g" \
171     -e "s/@PLATFORM@/${platform}/g" \
172     -e "/^LDPATH=.*lib\\/\\\"/s|\"\\(.*\\)\"|\"\\1${platform}/:\\1${platform}/server/\"|" \
173     < ${source_env_file} \
174     > ${env_file} || die "sed failed"
175    
176     echo "VMHANDLE=\"${VMHANDLE}\"" >> ${env_file}
177 swegener 1.13
178 nichoj 1.1 # generation-1 compatibility
179 nichoj 1.9 # respect both variables for now...
180     if [[ ${JAVA_SUPPORTS_GENERATION_1} == 'true' && ${JAVA_VM_NO_GENERATION1} != 'true' ]]; then
181     einfo "Enabling generation-1 compatibility..."
182     dodir /etc/env.d/java # generation-1 compatibility
183 nichoj 1.1 # We need to strip some things out of the new style env,
184     # because these end up going in the env
185     sed -e 's/.*CLASSPATH.*//' \
186     -e 's/.*PROVIDES.*//' \
187     ${env_file} \
188 nichoj 1.9 > ${old_env_file} || die "failed to create generation-1 env file"
189     else
190     ewarn "Disabling generation-1 compatibility..."
191 nichoj 1.1 fi
192    
193     [[ -n ${JAVA_PROVIDE} ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\"" >> ${env_file}
194    
195     local java_home=$(source ${env_file}; echo ${JAVA_HOME})
196     [[ -z ${java_home} ]] && die "No JAVA_HOME defined in ${env_file}"
197    
198     # Make the symlink
199     dosym ${java_home} ${JAVA_VM_DIR}/${VMHANDLE} \
200 nichoj 1.10 || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}"
201 nichoj 1.1 }
202    
203 caster 1.19 # -----------------------------------------------------------------------------
204     # @ebuild-function java-vm_revdep-mask
205     #
206     # Installs a revdep-rebuild control file which SEARCH_DIR_MASK set to the path
207     # where the VM is installed. Prevents pointless rebuilds - see bug #177925.
208     # Also gives a notice to the user.
209     #
210     # @example
211     # java-vm_revdep-mask
212     # java-vm_revdep-mask /path/to/jdk/
213     #
214     # @param $1 - Path of the VM (defaults to /opt/${P} if not set)
215     # ------------------------------------------------------------------------------
216     java-vm_revdep-mask() {
217     local VMROOT="${1-/opt/${P}}"
218    
219     dodir /etc/revdep-rebuild/
220     echo "SEARCH_DIRS_MASK=\"${VMROOT}\""> "${D}/etc/revdep-rebuild/61-${VMHANDLE}"
221    
222     elog "A revdep-rebuild control file was installed to prevent reinstalls due to"
223     elog "missing dependencies (see bug #177925 for more info). Note that some parts"
224     elog "of the JVM may require dependencies that are pulled only through respective"
225     elog "USE flags (typically X, alsa, odbc) and some Java code may fail without them."
226     }
227 nichoj 1.1
228     java_get_plugin_dir_() {
229     echo /usr/$(get_libdir)/nsbrowser/plugins
230     }
231    
232     install_mozilla_plugin() {
233 caster 1.23 local plugin="${1}"
234     local variant="${2}"
235 nichoj 1.1
236 caster 1.23 if [[ ! -f "${D}/${plugin}" ]]; then
237 nichoj 1.1 die "Cannot find mozilla plugin at ${D}/${plugin}"
238     fi
239    
240 caster 1.23 if [[ -n "${variant}" ]]; then
241     variant="-${variant}"
242     fi
243    
244     local plugin_dir="/usr/share/java-config-2/nsplugin"
245     dodir "${plugin_dir}"
246     dosym "${plugin}" "${plugin_dir}/${VMHANDLE}${variant}-javaplugin.so"
247 nichoj 1.1 }
248    
249     java_mozilla_clean_() {
250     # Because previously some ebuilds installed symlinks outside of pkg_install
251     # and are left behind, which forces you to manualy remove them to select the
252     # jdk/jre you want to use for java
253     local plugin_dir=$(java_get_plugin_dir_)
254     for file in ${plugin_dir}/javaplugin_*; do
255     rm -f ${file}
256     done
257     for file in ${plugin_dir}/libjavaplugin*; do
258     rm -f ${file}
259     done
260     }
261    
262 nichoj 1.9 # ------------------------------------------------------------------------------
263     # @eclass-end
264     # ------------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.20