/[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.35 - (hide annotations) (download)
Sat Oct 29 14:36:34 2011 UTC (2 years, 5 months ago) by caster
Branch: MAIN
Changes since 1.34: +15 -4 lines
Improve the postinst check for valid system VM to allow migrating icedtea6 to icedtea-6. Also use REPLACED_BY_VERSION to stop spamming about system VM removal on upgrades, for VM's migrated to EAPI=4.

1 nichoj 1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 caster 1.35 # $Header: /var/cvsroot/gentoo-x86/eclass/java-vm-2.eclass,v 1.34 2011/10/11 10:55:06 grobian 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 caster 1.35 JAVA_VM_SYSTEM="/etc/java-config-2/current-system-vm"
28 ali_bush 1.28 JAVA_VM_BUILD_ONLY="${JAVA_VM_BUILD_ONLY:-FALSE}"
29 nichoj 1.1
30 betelgeuse 1.22 EXPORT_FUNCTIONS pkg_setup pkg_postinst pkg_prerm pkg_postrm
31 betelgeuse 1.17
32     java-vm-2_pkg_setup() {
33     if [[ "${SLOT}" != "0" ]]; then
34     VMHANDLE=${PN}-${SLOT}
35     else
36     VMHANDLE=${PN}
37     fi
38     }
39 nichoj 1.1
40     java-vm-2_pkg_postinst() {
41 caster 1.35 # Set the generation-2 system VM, if it isn't set or the setting is invalid
42     # Note that we cannot rely on java-config here, as it will silently recognize
43     # e.g. icedtea6-bin as valid system VM if icedtea6 is set but invalid (e.g. due
44     # to the migration to icedtea-6)
45     if [[ ! -L "${JAVA_VM_SYSTEM}" ]]; then
46 nichoj 1.1 java_set_default_vm_
47 caster 1.35 else
48     local current_vm_path="$(readlink "${JAVA_VM_SYSTEM}")"
49     local current_vm="$(basename "${current_vm_path}")"
50     if [[ ! -L "${JAVA_VM_DIR}/${current_vm}" ]]; then
51     java_set_default_vm_
52     fi
53 nichoj 1.1 fi
54    
55 nichoj 1.15 java-vm_check-nsplugin
56     java_mozilla_clean_
57 betelgeuse 1.16 fdo-mime_desktop_database_update
58 nichoj 1.15 }
59    
60     java-vm_check-nsplugin() {
61     local libdir
62     if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
63     libdir=lib32
64     else
65     libdir=lib
66     fi
67 caster 1.33
68     has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
69    
70 nichoj 1.9 # Install a default nsplugin if we don't already have one
71 nichoj 1.3 if has nsplugin ${IUSE} && use nsplugin; then
72 caster 1.33 if [[ ! -f "${EPREFIX}"/usr/${libdir}/nsbrowser/plugins/javaplugin.so ]]; then
73 nichoj 1.15 einfo "No system nsplugin currently set."
74     java-vm_set-nsplugin
75 caster 1.12 else
76     einfo "System nsplugin is already set, not changing it."
77 nichoj 1.3 fi
78 caster 1.12 einfo "You can change nsplugin with eselect java-nsplugin."
79 nichoj 1.3 fi
80 nichoj 1.15 }
81 nichoj 1.3
82 nichoj 1.15 java-vm_set-nsplugin() {
83     local extra_args
84     if use amd64; then
85     if [[ ${VMHANDLE} =~ emul-linux-x86 ]]; then
86     extra_args="32bit"
87     else
88     extra_args="64bit"
89     fi
90     einfo "Setting ${extra_args} nsplugin to ${VMHANDLE}"
91     else
92     einfo "Setting nsplugin to ${VMHANDLE}..."
93     fi
94     eselect java-nsplugin set ${extra_args} ${VMHANDLE}
95 nichoj 1.1 }
96    
97     java-vm-2_pkg_prerm() {
98 caster 1.35 # Although REPLACED_BY_VERSION is EAPI=4, we shouldn't need to check EAPI for this use case
99     if [[ "$(java-config -f 2>/dev/null)" == "${VMHANDLE}" && -z "${REPLACED_BY_VERSION}" ]]; then
100 betelgeuse 1.22 ewarn "It appears you are removing your system-vm!"
101     ewarn "Please run java-config -L to list available VMs,"
102     ewarn "then use java-config -S to set a new system-vm!"
103     fi
104 nichoj 1.1 }
105    
106 betelgeuse 1.16 java-vm-2_pkg_postrm() {
107     fdo-mime_desktop_database_update
108     }
109    
110 nichoj 1.1 java_set_default_vm_() {
111     java-config-2 --set-system-vm="${VMHANDLE}"
112    
113 nichoj 1.9 einfo " ${P} set as the default system-vm."
114 nichoj 1.1 }
115    
116     get_system_arch() {
117     local sarch
118     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/)
119     if [ -z "${sarch}" ]; then
120     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/)
121     fi
122     echo ${sarch}
123     }
124    
125     # TODO rename to something more evident, like install_env_file
126     set_java_env() {
127 betelgeuse 1.20 debug-print-function ${FUNCNAME} $*
128 caster 1.33
129 grobian 1.34 if has ${EAPI:-0} 0 1 2 && ! use prefix ; then
130     ED="${D}"
131     EPREFIX=""
132     fi
133 caster 1.33
134 nichoj 1.1 local platform="$(get_system_arch)"
135 caster 1.33 local env_file="${ED}${JAVA_VM_CONFIG_DIR}/${VMHANDLE}"
136     local old_env_file="${ED}/etc/env.d/java/20${P}"
137 betelgeuse 1.20 if [[ ${1} ]]; then
138     local source_env_file="${1}"
139     else
140     local source_env_file="${FILESDIR}/${VMHANDLE}.env"
141     fi
142 nichoj 1.1
143     if [[ ! -f ${source_env_file} ]]; then
144     die "Unable to find the env file: ${source_env_file}"
145     fi
146    
147     dodir ${JAVA_VM_CONFIG_DIR}
148     sed \
149     -e "s/@P@/${P}/g" \
150     -e "s/@PN@/${PN}/g" \
151     -e "s/@PV@/${PV}/g" \
152     -e "s/@PF@/${PF}/g" \
153     -e "s/@PLATFORM@/${platform}/g" \
154 caster 1.30 -e "s/@LIBDIR@/$(get_libdir)/g" \
155 nichoj 1.1 -e "/^LDPATH=.*lib\\/\\\"/s|\"\\(.*\\)\"|\"\\1${platform}/:\\1${platform}/server/\"|" \
156 betelgeuse 1.31 < "${source_env_file}" \
157     > "${env_file}" || die "sed failed"
158 nichoj 1.1
159 ali_bush 1.28 (
160     echo "VMHANDLE=\"${VMHANDLE}\""
161 maekke 1.29 echo "BUILD_ONLY=\"${JAVA_VM_BUILD_ONLY}\""
162 betelgeuse 1.31 ) >> "${env_file}"
163 swegener 1.13
164 caster 1.33 eprefixify ${env_file}
165    
166 nichoj 1.1 [[ -n ${JAVA_PROVIDE} ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\"" >> ${env_file}
167    
168 betelgeuse 1.31 local java_home=$(source "${env_file}"; echo ${JAVA_HOME})
169 nichoj 1.1 [[ -z ${java_home} ]] && die "No JAVA_HOME defined in ${env_file}"
170    
171     # Make the symlink
172 caster 1.33 dodir "${JAVA_VM_DIR}"
173 grobian 1.34 dosym ${java_home#${EPREFIX}} ${JAVA_VM_DIR}/${VMHANDLE} \
174 nichoj 1.10 || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}"
175 nichoj 1.1 }
176    
177 caster 1.19 # -----------------------------------------------------------------------------
178     # @ebuild-function java-vm_revdep-mask
179     #
180     # Installs a revdep-rebuild control file which SEARCH_DIR_MASK set to the path
181     # where the VM is installed. Prevents pointless rebuilds - see bug #177925.
182     # Also gives a notice to the user.
183     #
184     # @example
185     # java-vm_revdep-mask
186     # java-vm_revdep-mask /path/to/jdk/
187     #
188     # @param $1 - Path of the VM (defaults to /opt/${P} if not set)
189     # ------------------------------------------------------------------------------
190     java-vm_revdep-mask() {
191 caster 1.33 if has ${EAPI:-0} 0 1 2 && ! use prefix; then
192     ED="${D}"
193     EPREFIX=
194     fi
195    
196     local VMROOT="${1-"${EPREFIX}"/opt/${P}}"
197 caster 1.19
198     dodir /etc/revdep-rebuild/
199 caster 1.33 echo "SEARCH_DIRS_MASK=\"${VMROOT}\""> "${ED}/etc/revdep-rebuild/61-${VMHANDLE}"
200 maekke 1.24
201 caster 1.19 elog "A revdep-rebuild control file was installed to prevent reinstalls due to"
202     elog "missing dependencies (see bug #177925 for more info). Note that some parts"
203     elog "of the JVM may require dependencies that are pulled only through respective"
204     elog "USE flags (typically X, alsa, odbc) and some Java code may fail without them."
205     }
206 nichoj 1.1
207     java_get_plugin_dir_() {
208 caster 1.33 has ${EAPI:-0} 0 1 2 && ! use prefix && EPREFIX=
209     echo "${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins
210 nichoj 1.1 }
211    
212     install_mozilla_plugin() {
213 caster 1.23 local plugin="${1}"
214     local variant="${2}"
215 nichoj 1.1
216 caster 1.33 has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
217     if [[ ! -f "${ED}/${plugin}" ]]; then
218     die "Cannot find mozilla plugin at ${ED}/${plugin}"
219 nichoj 1.1 fi
220    
221 caster 1.23 if [[ -n "${variant}" ]]; then
222     variant="-${variant}"
223     fi
224    
225     local plugin_dir="/usr/share/java-config-2/nsplugin"
226     dodir "${plugin_dir}"
227     dosym "${plugin}" "${plugin_dir}/${VMHANDLE}${variant}-javaplugin.so"
228 nichoj 1.1 }
229    
230     java_mozilla_clean_() {
231     # Because previously some ebuilds installed symlinks outside of pkg_install
232     # and are left behind, which forces you to manualy remove them to select the
233     # jdk/jre you want to use for java
234     local plugin_dir=$(java_get_plugin_dir_)
235     for file in ${plugin_dir}/javaplugin_*; do
236     rm -f ${file}
237     done
238     for file in ${plugin_dir}/libjavaplugin*; do
239     rm -f ${file}
240     done
241     }
242    
243 nichoj 1.9 # ------------------------------------------------------------------------------
244     # @eclass-end
245     # ------------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.20