summaryrefslogtreecommitdiff
blob: 3b54b93cd9eddab28af60fc5aa9ba12d5d4302c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/icedtea-web/icedtea-web-1.1.2.ebuild,v 1.1 2011/09/06 09:57:09 caster Exp $
# Build written by Andrew John Hughes (ahughes@redhat.com)

EAPI="2"

inherit autotools eutils java-pkg-2 java-vm-2

LICENSE="GPL-2 GPL-2-with-linking-exception LGPL-2"
SLOT="6"
KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"

DESCRIPTION="FOSS Java browser plugin and Web Start implementation"
SRC_URI="http://icedtea.classpath.org/download/source/${P}.tar.gz"
HOMEPAGE="http://icedtea.classpath.org"

IUSE="build doc +nsplugin"

RDEPEND="dev-java/icedtea:${SLOT}"
DEPEND="${RDEPEND}
	nsplugin? (
		|| ( net-misc/npapi-sdk
			>=net-libs/xulrunner-1.9.1 ) )"

# a bit of hack so the VM switching is triggered without causing dependency troubles
JAVA_PKG_NV_DEPEND=">=virtual/jdk-1.6"
JAVA_PKG_WANT_SOURCE="1.6"
JAVA_PKG_WANT_TARGET="1.6"

pkg_setup() {
	# quite a hack since java-config does not provide a way for a package
	# to limit supported VM's for building and their preferred order
	if [[ -n "${JAVA_PKG_FORCE_VM}" ]]; then
		einfo "Honoring user-set JAVA_PKG_FORCE_VM"
	elif has_version dev-java/icedtea:${SLOT}; then
		JAVA_PKG_FORCE_VM="icedtea${SLOT}"
	else
		JAVA_PKG_FORCE_VM=""
		# don't die just yet if merging a binpkg - bug #258423
		DIE_IF_NOT_BINPKG=true
	fi

	# if the previous failed, don't even run java eclasses pkg_setup
	# as it might also die when no VM is present
	if [[ -n "${JAVA_PKG_FORCE_VM}" ]]; then
		einfo "Forced vm ${JAVA_PKG_FORCE_VM}"
		java-vm-2_pkg_setup
		java-pkg-2_pkg_setup
	fi
}

unset_vars() {
	unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
}

src_unpack() {
	if [[ -n ${DIE_IF_NOT_BINPKG} ]]; then
		die "Unable to find a supported VM for building"
	fi

	default
}

src_prepare() {
	epatch "${FILESDIR}"/0001-Support-using-NPAPI-SDK-headers-instead-of-whole-xul.patch
	eautoreconf
}

src_configure() {
	local vmhome=$(java-config -O)

	if use build; then
		icedteadir="${ICEDTEA_BIN_DIR}"
		installdir="/opt/icedtea${SLOT}-web-bin"
	else
		icedteadir="/usr/$(get_libdir)/icedtea${SLOT}"
		installdir="/usr/$(get_libdir)/icedtea${SLOT}-web"
	fi

	unset_vars

	if use build || [[ ${vmhome} == ${icedteadir} ]] ; then
		VMHANDLE="icedtea${SLOT}"
	else
		die "Unexpected install location of IcedTea${SLOT}"
	fi

	einfo "Installing IcedTea-Web in ${installdir}"
	einfo "Installing IcedTea-Web for Icedtea${SLOT} in ${icedteadir}"
	if [ ! -e ${vmhome} ] ; then
		eerror "Could not find JDK install directory ${vmhome}."
		die
	fi

	# we need to override all *dir variables that econf sets
	# man page (javaws) is installed directly to icedteadir because it's easier than symlinking, as we don't know
	# the suffix the man page will end up compressed with, anyway
	econf \
		--prefix=${installdir} --mandir=${icedteadir}/man --infodir=${installdir}/share/info --datadir=${installdir}/share \
		--with-jdk-home=${icedteadir} \
		$(use_enable doc docs) \
		$(use_enable nsplugin plugin) \
		|| die "configure failed"
}

src_compile() {
	# we need this to override the src_compile from java-pkg-2
	default
}

src_install() {
	# parallel make problem bug #372235
	emake -j1 DESTDIR="${D}" install || die "Install failed"
	dodoc AUTHORS README NEWS || die

	if use nsplugin; then
		local arch=${ARCH};
		use x86 && arch=i386;
		install_mozilla_plugin "${installdir}/$(get_libdir)/IcedTeaPlugin.so";
	fi

	for binary in javaws itweb-settings; do
		dosym ${installdir}/bin/${binary} ${icedteadir}/bin/${binary}
		dosym ${installdir}/bin/${binary} ${icedteadir}/jre/bin/${binary}
	done
}

pkg_postinst() {
	java-vm_check-nsplugin
	java_mozilla_clean_

	if use nsplugin; then
		elog "The icedtea browser plugin (NPPlugin) can be enabled using eselect java-nsplugin"
		elog "Note that the plugin works only in browsers based on xulrunner-1.9.1 or later"
		elog "such as Firefox 3.5+, Chromium and perhaps some others too."
	fi
}

pkg_prerm() {
	# override the java-vm-2 eclass check for removing a system VM, as it doesn't make sense here
	:;
}