# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ EAPI="5" inherit java-vm-2 multilib-build prefix toolchain-funcs MULTILIB_COMPAT=( abi_x86_{32,64} ) KEYWORDS="-* amd64 x86" BASE_URI="https://dev.gentoo.org/~chewi/distfiles" SRC_URI="doc? ( ${BASE_URI}/${PN}-doc-${PV}.tar.xz ) source? ( ${BASE_URI}/${PN}-src-${PV}.tar.xz ) multilib? ( amd64? ( abi_x86_32? ( ${BASE_URI}/${PN}-core-${PV}-x86.tar.xz ) ) )" for abi in amd64 x86; do SRC_URI+=" ${abi}? ( ${BASE_URI}/${PN}-core-${PV}-${abi}.tar.xz examples? ( ${BASE_URI}/${PN}-examples-${PV}-${abi}.tar.xz ) )" done DESCRIPTION="A Gentoo-made binary build of the IcedTea JDK" HOMEPAGE="http://icedtea.classpath.org" LICENSE="GPL-2-with-classpath-exception" SLOT="7" IUSE="+alsa cjk +cups doc examples +gtk headless-awt multilib nsplugin nss pulseaudio selinux source +webstart" REQUIRED_USE="gtk? ( !headless-awt ) nsplugin? ( !headless-awt )" RESTRICT="preserve-libs strip" QA_PREBUILT="opt/.*" RDEPEND=">=dev-libs/glib-2.42:2% >=dev-libs/nss-3.16.1-r1% >=dev-libs/nspr-4.10% >=media-libs/fontconfig-2.11:1.0% >=media-libs/freetype-2.5.5:2% >=media-libs/lcms-2.6:2% >=sys-libs/zlib-1.2.8-r1% virtual/jpeg:62% alsa? ( >=media-libs/alsa-lib-1.0% ) cups? ( >=net-print/cups-2.0% ) gtk? ( >=dev-libs/atk-2.16.0% >=x11-libs/cairo-1.14.2% x11-libs/gdk-pixbuf:2% >=x11-libs/gtk+-2.24:2% >=x11-libs/pango-1.36% ) !headless-awt? ( >=media-libs/giflib-4.1.6-r1% media-libs/libpng:0/16% >=x11-libs/libX11-1.6% >=x11-libs/libXcomposite-0.4% >=x11-libs/libXext-1.3% >=x11-libs/libXi-1.7% >=x11-libs/libXrender-0.9.8% >=x11-libs/libXtst-1.2% )" # gsettings-desktop-schemas is needed for native proxy support. #431972 RDEPEND=">=gnome-base/gsettings-desktop-schemas-3.12.2 media-fonts/dejavu >=sys-devel/gcc-4.9.3[multilib?] >=sys-libs/glibc-2.22[multilib?] cjk? ( media-fonts/arphicfonts media-fonts/baekmuk-fonts media-fonts/lklug media-fonts/lohit-fonts media-fonts/sazanami ) selinux? ( sec-policy/selinux-java ) multilib? ( ${RDEPEND//%/[${MULTILIB_USEDEP}]} ) !multilib? ( ${RDEPEND//%/} )" DEPEND="!arm? ( dev-util/patchelf )" PDEPEND="webstart? ( >=dev-java/icedtea-web-1.6.1:0 ) nsplugin? ( >=dev-java/icedtea-web-1.6.1:0[nsplugin] ) pulseaudio? ( dev-java/icedtea-sound )" S="${WORKDIR}" pkg_pretend() { if [[ "$(tc-is-softfloat)" != "no" ]]; then die "These binaries require a hardfloat system." fi } src_prepare() { if ! use alsa; then rm -v */jre/lib/*/libjsoundalsa.* || die fi if use headless-awt; then rm -vr */jre/lib/*/{xawt,libsplashscreen.*} \ */{,jre/}bin/policytool */bin/appletviewer || die fi if ! use gtk; then rm -v */jre/lib/*/libjavagtk.* || die fi local lib=${P}-${ABI}/jre/lib # NSS is already required because of SunEC. The nss flag in the # icedtea package just comments or uncomments this line. sed -i "/=sun\.security\.pkcs11\.SunPKCS11/s/^#*$(usex nss '/' '/#')/" \ ${lib}/security/java.security || die if [[ -n "${EPREFIX}" ]]; then # The binaries are built on a non-prefixed system so the # fontconfig needs to have prefixes inserted. rm ${lib}/fontconfig.Gentoo.bfc || die hprefixify ${lib}/fontconfig.Gentoo.properties.src mv ${lib}/fontconfig.Gentoo.properties{.src,} || die fi # Fix the RPATHs, except on arm. # https://bugs.gentoo.org/show_bug.cgi?id=543658#c3 # https://github.com/NixOS/patchelf/issues/8 if use arm; then ewarn "The RPATHs on these binaries are normally modified to avoid" ewarn "conflicts with an icedtea installation built from source. This" ewarn "is currently not possible on ARM so please refrain from" ewarn "installing dev-java/icedtea on the same system." else local old="/usr/$(get_libdir)/icedtea${SLOT}" local new="${EPREFIX}/opt/${P}" local elf rpath for elf in $(find -type f -executable ! -name "*.cgi" || die); do rpath=$(patchelf --print-rpath "${elf}" || die "patchelf ${elf}") if [[ -n "${rpath}" ]]; then patchelf --set-rpath "${rpath//${old}/${new}}" "${elf}" || die "patchelf ${elf}" fi done fi } multilib_src_install() { local dest="/opt/${P}-${ABI}" dest="${dest/%-${DEFAULT_ABI}/}" local ddest="${ED}${dest#/}" dodir "${dest}" if multilib_is_native_abi; then dodoc ${P}-${ABI}/doc/{ASSEMBLY_EXCEPTION,AUTHORS,NEWS,README,THIRD_PARTY_README} use doc && dodoc -r ${P}/doc/html # doins doesn't preserve executable bits. cp -pRP ${P}-${ABI}/{bin,include,jre,lib,man} "${ddest}" || die if use examples; then cp -pRP ${P}-${ABI}/{demo,sample} "${ddest}" || die fi if use source; then cp ${P}/src.zip "${ddest}" || die fi # Use default VMHANDLE. java-vm_install-env "${FILESDIR}/icedtea-bin.env.sh" else local x native=$(get_system_arch ${DEFAULT_ABI}) for x in {,/jre}/{bin,lib/$(get_system_arch)} /jre/lib/rt.jar; do dodir "${dest}"${x%/*} cp -pRP ${P}-${ABI}${x} "${ddest}"${x} || die done for x in ${P}-${DEFAULT_ABI}{,/jre}/lib/*; do [[ ${x##*/} = ${native} ]] && continue [[ -e "${ddest}"/${x#*/} ]] && continue dosym "${EPREFIX}"/opt/${P}/${x#*/} "${dest}"/${x#*/} done # Use ABI-suffixed VMHANDLE. VMHANDLE+="-${ABI}" java-vm_install-env "${FILESDIR}/icedtea-bin.env.sh" fi # Both icedtea itself and the icedtea ebuild set PAX markings but we # disable them for the icedtea-bin build because the line below will # respect end-user settings when icedtea-bin is actually installed. java-vm_set-pax-markings "${ddest}" # Each invocation appends to the config. java-vm_revdep-mask "${EPREFIX}${dest}" } src_install() { if use multilib; then multilib_foreach_abi multilib_src_install else multilib_src_install fi java-vm_sandbox-predict /proc/self/coredump_filter }