/[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 - (hide 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 nichoj 1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 grobian 1.34 # $Header: /var/cvsroot/gentoo-x86/eclass/java-vm-2.eclass,v 1.33 2011/09/01 14:15:57 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 caster 1.33 inherit eutils fdo-mime multilib prefix
16 nichoj 1.1
17 betelgeuse 1.26 DEPEND="=dev-java/java-config-2*"
18 ssuominen 1.32 has "${EAPI}" 0 1 && DEPEND="${DEPEND} >=sys-apps/portage-2.1"
19 betelgeuse 1.26
20 nichoj 1.1 RDEPEND="
21 caster 1.25 =dev-java/java-config-2*"
22    
23 nichoj 1.1 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 ali_bush 1.28 JAVA_VM_BUILD_ONLY="${JAVA_VM_BUILD_ONLY:-FALSE}"
28 nichoj 1.1
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.15 java-vm_check-nsplugin
46     java_mozilla_clean_
47 betelgeuse 1.16 fdo-mime_desktop_database_update
48 nichoj 1.15 }
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 caster 1.33
58     has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
59    
60 nichoj 1.9 # Install a default nsplugin if we don't already have one
61 nichoj 1.3 if has nsplugin ${IUSE} && use nsplugin; then
62 caster 1.33 if [[ ! -f "${EPREFIX}"/usr/${libdir}/nsbrowser/plugins/javaplugin.so ]]; then
63 nichoj 1.15 einfo "No system nsplugin currently set."
64     java-vm_set-nsplugin
65 caster 1.12 else
66     einfo "System nsplugin is already set, not changing it."
67 nichoj 1.3 fi
68 caster 1.12 einfo "You can change nsplugin with eselect java-nsplugin."
69 nichoj 1.3 fi
70 nichoj 1.15 }
71 nichoj 1.3
72 nichoj 1.15 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 nichoj 1.1 }
86    
87     java-vm-2_pkg_prerm() {
88 betelgeuse 1.22 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 nichoj 1.1 }
94    
95 betelgeuse 1.16 java-vm-2_pkg_postrm() {
96     fdo-mime_desktop_database_update
97     }
98    
99 nichoj 1.1 java_set_default_vm_() {
100     java-config-2 --set-system-vm="${VMHANDLE}"
101    
102 nichoj 1.9 einfo " ${P} set as the default system-vm."
103 nichoj 1.1 }
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 betelgeuse 1.20 debug-print-function ${FUNCNAME} $*
117 caster 1.33
118 grobian 1.34 if has ${EAPI:-0} 0 1 2 && ! use prefix ; then
119     ED="${D}"
120     EPREFIX=""
121     fi
122 caster 1.33
123 nichoj 1.1 local platform="$(get_system_arch)"
124 caster 1.33 local env_file="${ED}${JAVA_VM_CONFIG_DIR}/${VMHANDLE}"
125     local old_env_file="${ED}/etc/env.d/java/20${P}"
126 betelgeuse 1.20 if [[ ${1} ]]; then
127     local source_env_file="${1}"
128     else
129     local source_env_file="${FILESDIR}/${VMHANDLE}.env"
130     fi
131 nichoj 1.1
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 caster 1.30 -e "s/@LIBDIR@/$(get_libdir)/g" \
144 nichoj 1.1 -e "/^LDPATH=.*lib\\/\\\"/s|\"\\(.*\\)\"|\"\\1${platform}/:\\1${platform}/server/\"|" \
145 betelgeuse 1.31 < "${source_env_file}" \
146     > "${env_file}" || die "sed failed"
147 nichoj 1.1
148 ali_bush 1.28 (
149     echo "VMHANDLE=\"${VMHANDLE}\""
150 maekke 1.29 echo "BUILD_ONLY=\"${JAVA_VM_BUILD_ONLY}\""
151 betelgeuse 1.31 ) >> "${env_file}"
152 swegener 1.13
153 caster 1.33 eprefixify ${env_file}
154    
155 nichoj 1.1 [[ -n ${JAVA_PROVIDE} ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\"" >> ${env_file}
156    
157 betelgeuse 1.31 local java_home=$(source "${env_file}"; echo ${JAVA_HOME})
158 nichoj 1.1 [[ -z ${java_home} ]] && die "No JAVA_HOME defined in ${env_file}"
159    
160     # Make the symlink
161 caster 1.33 dodir "${JAVA_VM_DIR}"
162 grobian 1.34 dosym ${java_home#${EPREFIX}} ${JAVA_VM_DIR}/${VMHANDLE} \
163 nichoj 1.10 || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}"
164 nichoj 1.1 }
165    
166 caster 1.19 # -----------------------------------------------------------------------------
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 caster 1.33 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 caster 1.19
187     dodir /etc/revdep-rebuild/
188 caster 1.33 echo "SEARCH_DIRS_MASK=\"${VMROOT}\""> "${ED}/etc/revdep-rebuild/61-${VMHANDLE}"
189 maekke 1.24
190 caster 1.19 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 nichoj 1.1
196     java_get_plugin_dir_() {
197 caster 1.33 has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
198     echo "${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins
199 nichoj 1.1 }
200    
201     install_mozilla_plugin() {
202 caster 1.23 local plugin="${1}"
203     local variant="${2}"
204 nichoj 1.1
205 caster 1.33 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 nichoj 1.1 fi
209    
210 caster 1.23 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 nichoj 1.1 }
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 nichoj 1.9 # ------------------------------------------------------------------------------
233     # @eclass-end
234     # ------------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.20