| 1 | # Copyright 1999-2011 Gentoo Foundation |
1 | # Copyright 1999-2011 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
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.38 2011/11/15 09:02:15 caster Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/java-vm-2.eclass,v 1.39 2011/11/21 10:15:46 sera Exp $ |
| 4 | |
4 | |
| 5 | # ----------------------------------------------------------------------------- |
5 | # ----------------------------------------------------------------------------- |
| 6 | # @eclass-begin |
6 | # @eclass-begin |
| 7 | # @eclass-shortdesc Java Virtual Machine eclass |
7 | # @eclass-shortdesc Java Virtual Machine eclass |
| 8 | # @eclass-maintainer java@gentoo.org |
8 | # @eclass-maintainer java@gentoo.org |
| … | |
… | |
| 10 | # This eclass provides functionality which assists with installing |
10 | # This eclass provides functionality which assists with installing |
| 11 | # virtual machines, and ensures that they are recognized by java-config. |
11 | # virtual machines, and ensures that they are recognized by java-config. |
| 12 | # |
12 | # |
| 13 | # ----------------------------------------------------------------------------- |
13 | # ----------------------------------------------------------------------------- |
| 14 | |
14 | |
| 15 | inherit eutils fdo-mime multilib prefix |
15 | inherit eutils fdo-mime multilib pax-utils prefix |
| 16 | |
16 | |
| 17 | DEPEND="=dev-java/java-config-2*" |
17 | DEPEND="=dev-java/java-config-2*" |
| 18 | has "${EAPI}" 0 1 && DEPEND="${DEPEND} >=sys-apps/portage-2.1" |
18 | has "${EAPI}" 0 1 && DEPEND="${DEPEND} >=sys-apps/portage-2.1" |
| 19 | |
19 | |
| 20 | RDEPEND=" |
20 | RDEPEND=" |
| … | |
… | |
| 173 | dosym ${java_home#${EPREFIX}} ${JAVA_VM_DIR}/${VMHANDLE} \ |
173 | dosym ${java_home#${EPREFIX}} ${JAVA_VM_DIR}/${VMHANDLE} \ |
| 174 | || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}" |
174 | || die "Failed to make VM symlink at ${JAVA_VM_DIR}/${VMHANDLE}" |
| 175 | } |
175 | } |
| 176 | |
176 | |
| 177 | # ----------------------------------------------------------------------------- |
177 | # ----------------------------------------------------------------------------- |
|
|
178 | # @ebuild-function java-vm_set-pax-markings |
|
|
179 | # |
|
|
180 | # Set PaX markings on all JDK/JRE executables to allow code-generation on |
|
|
181 | # the heap by the JIT compiler. |
|
|
182 | # |
|
|
183 | # The markings need to be set prior to the first invocation of the the freshly |
|
|
184 | # built / installed VM. Be it before creating the Class Data Sharing archive or |
|
|
185 | # generating cacerts. Otherwise a PaX enabled kernel will kill the VM. |
|
|
186 | # Bug #215225 #389751 |
|
|
187 | # |
|
|
188 | # @example |
|
|
189 | # java-vm_set-pax-markings "${S}" |
|
|
190 | # java-vm_set-pax-markings "${ED}"/opt/${P} |
|
|
191 | # |
|
|
192 | # @param $1 - JDK/JRE base directory. |
|
|
193 | # ----------------------------------------------------------------------------- |
|
|
194 | java-vm_set-pax-markings() { |
|
|
195 | debug-print-function ${FUNCNAME} "$*" |
|
|
196 | [[ $# -ne 1 ]] && die "${FUNCNAME}: takes exactly one argument" |
|
|
197 | [[ ! -f "${1}"/bin/java ]] \ |
|
|
198 | && die "${FUNCNAME}: argument needs to be JDK/JRE base directory" |
|
|
199 | |
|
|
200 | local executables=( "${1}"/bin/* ) |
|
|
201 | [[ -d "${1}"/jre ]] && executables+=( "${1}"/jre/bin/* ) |
|
|
202 | |
|
|
203 | # Usally disabeling MPROTECT is sufficent |
|
|
204 | local pax_markings="m" |
|
|
205 | # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well. |
|
|
206 | use x86 && pax_markings="msp" |
|
|
207 | |
|
|
208 | pax-mark ${pax_markings} $(list-paxables "${executables[@]}") |
|
|
209 | } |
|
|
210 | |
|
|
211 | # ----------------------------------------------------------------------------- |
| 178 | # @ebuild-function java-vm_revdep-mask |
212 | # @ebuild-function java-vm_revdep-mask |
| 179 | # |
213 | # |
| 180 | # Installs a revdep-rebuild control file which SEARCH_DIR_MASK set to the path |
214 | # 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. |
215 | # where the VM is installed. Prevents pointless rebuilds - see bug #177925. |
| 182 | # Also gives a notice to the user. |
216 | # Also gives a notice to the user. |