/[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.26 - (hide annotations) (download)
Wed Feb 11 16:13:38 2009 UTC (5 years, 7 months ago) by betelgeuse
Branch: MAIN
Changes since 1.25: +4 -4 lines
Only add sys-apps/portage to dependencies with EAPI 0 or 1.

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

  ViewVC Help
Powered by ViewVC 1.1.20