Commits

Providence SALUMU committed 52cce71

first commit of eclipse-sdk

  • Participants
  • Parent commits 8aa2373

Comments (0)

Files changed (12)

dev-util/eclipse-sdk/ChangeLog

+# ChangeLog for dev-util/eclipse-sdk
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+*eclipse-sdk-3.7.1.ebuild (03 Nov 2011)
+
+  03 Nov 2011; Sven Eden <sven.eden@gmx.de> +eclipse-sdk-3.7.1.ebuild :
+  Initial commit of the ebuild. Taken from Bug #325271, written by Matt Whitlock
+  (gentoo@mattwhitlock.name), added RESTRICT="mirror" by me, added Tomcat-7
+  patch by Small Penguin (dark.shadow@gmx.at) and QA fixes by ScytheMan
+  (scytheman666@gmail.com).
+
+*eclipse-sdk-3.7.0-r3.ebuild (03 Nov 2011)
+
+  03 Nov 2011; Sven Eden <sven.eden@gmx.de> +eclipse-sdk-3.7.0-r3.ebuild :
+  QA-fixed version by ScytheMan (scytheman666@gmail.com), taken from Bug
+  #325271 with added Tomcat-7 patch by Small Penguin (dark.shadow@gmx.at).
+
+*eclipse-sdk-3.7.0-r2.ebuild (15 Aug 2011)
+
+  19 Aug 2011; Sven Eden <sven.eden@gmx.de> +eclipse-sdk-3.7.0-r2.ebuild :
+  Added dependency for dev-java/ant-nodeps if doc use flag is set.
+
+*eclipse-sdk-3.7.0-r1.ebuild (15 Aug 2011)
+
+  15 Aug 2011; Sven Eden <sven.eden@gmx.de> +eclipse-sdk-3.7.0-r1.ebuild :
+  Changed to use java-virtuals/jetty-server:6 instead of jetty directly as
+  a dependency.
+
+*eclipse-sdk-3.7.0.ebuild (15 Aug 2011)
+
+  15 Aug 2011; Sven Eden <sven.eden@gmx.de> +eclipse-sdk-3.7.0.ebuild :
+  Initial commit of the ebuild. Taken from Bug #325271, written by Matt Whitlock
+  (gentoo@mattwhitlock.name), fixed by Slayer (slayer.rus@gmail.com).
+

dev-util/eclipse-sdk/Manifest

+AUX 3.7/eclipse-3.7 1387 RMD160 32c47706d839fce9a2e08c91e108b8924a9975f2 SHA1 02d4ab620eb01ea152c0f6df6600ce77a46f16e8 SHA256 b2974e94d54db5094052fe1c56810993d4275bdf6afa0a653f81cc49486cfed6
+AUX 3.7/eclipserc-3.7 858 RMD160 f911438aa661be9ca8fc352dd372c9485d163ddb SHA1 abb1c369326be455d16bc42cf0a1b035aa145dc0 SHA256 0aea733c968ca064ad5ca95d5895778ecf7387826198b512e98d0cbb7dd353f1
+AUX 3.7/gtk_makefile.patch 1541 RMD160 39738d224c8d6aa9683b6898c773cd0f72f9bd70 SHA1 32b0cbaea2cba87191d3eb8cfa260f3419eea50a SHA256 5b33a3bb23856cdd46381a4de50100392858e9e37cbf814d2426589fa0bbdf58
+AUX 3.7/hamcrest-junit-lib.patch 1236 RMD160 f61fb1b274293c311366c463b9e8bd4fdca14c4f SHA1 8986d82583845dbf45469015ffde890f61eb16e2 SHA256 fbf4cf2b341e87b0e14be8e9794bee89b31e12af1fdf6e078d465d4d29bf09eb
+AUX 3.7/iterators.patch 2058 RMD160 a91238c61510f16bc48bc9559e9c6e341def6dd0 SHA1 f0fcc75ec4827a1f2dbc65af65940beb7274864b SHA256 cc2a1da26b8f63d9c4b75ededf10d7aa67a0d53dea390154eef882dc75e37f2b
+DIST eclipse-3.7.0-src.tar.bz2 67181722 RMD160 2863a0130c5b75c08cf0c1f1977be894ad8edf5e SHA1 361247f39eacdeffb2159e59f508a5ac889912c9 SHA256 a068bab6f06b7939e557be7432b59bcde6925d86edffaa6dc2c1a6eca0fadbb2
+DIST eclipse-3.7.1-src.tar.bz2 69243059 RMD160 a9213a5a9577722e22c82296228230c9a5c0ebbc SHA1 1c3d20ed4dab43a741606f4785bea895e52dc6cf SHA256 f3a87ff4408aeadc6823eb849330527df07d5706d6456af282170bb9bbbd31d6
+DIST eclipse-build-5791c48513b4207ab1eec1e00bed4b2186f9aad5.tar.xz 276668 RMD160 346bcdd9e8d44ae865ae80380c54b7fd05a7dd04 SHA1 cb806a93b3f237aec2913d6f8b9068aeb1f9320b SHA256 1703ae2b9062e8692a2ab8aa589c91dc42fe90f6e3ba09ea2f69caf91d9b4865
+DIST eclipse-build-9e028fbc74e844e96a6fd944d7d4f68909283a5d.tar.bz2 267292 RMD160 67bb33d75570a066e0c0af22b2e2b6228f2daea5 SHA1 44ff5cacf9b8a955bca74b5c32d0dc4f7017fcce SHA256 38fbf55a846ab5be2215e67c5a8855aacc1cf26a7d66d0307dd01c26ea56333c
+EBUILD eclipse-sdk-3.7.0-r1.ebuild 14158 RMD160 1dc91441ea743bd2fcba22fc21a4ec6192091028 SHA1 1fdf0bdbf7445fa0deacb18f72992c37a3d5c285 SHA256 ceaac76c3761c8e56c0f502d7ef596dc6e1b76ad6e975b9c5d9056c66031bffc
+EBUILD eclipse-sdk-3.7.0-r2.ebuild 14196 RMD160 3c78a38e2a0947d68725daec0ea0672ce299d0e1 SHA1 6aa892cd6675707dd90226b63414c304d4fa3ce0 SHA256 b20db67af1e479f97ecf011a685dbb52b6dd56d89417876e73fe4df5927d34bf
+EBUILD eclipse-sdk-3.7.0-r3.ebuild 14349 RMD160 83b7f668ab60da8b672c99c4713ee4c0bd36665e SHA1 388a9e0c684e31a9d04049bfc69c56f3053ce7d8 SHA256 a06eea3e103e5374d9e02bfc39b746750b30838ac4ae1679e1db5b76ae58547a
+EBUILD eclipse-sdk-3.7.0.ebuild 14158 RMD160 c55e91579c0585bba847a1ba6fb110fcaa44d993 SHA1 121fb3247172caafef1049fb811c17d4fcd92fe8 SHA256 a00287bebebfd081d711e2a85590cc3cf7228cfafe3e63c40cfa4962b61da01e
+EBUILD eclipse-sdk-3.7.1.ebuild 14684 RMD160 8bb4e694f25bb961ecba28764cb0bfd3a7ac6671 SHA1 e5af2fc4cd32a7ec74815f736e6a338f1801e132 SHA256 d888a75beb2947e1d04ce1d4af26862a293e8a03b7e38c63ff2eafd11d8dcb1b
+MISC ChangeLog 1423 RMD160 f566a6207eb8c6bafdb72ffa55fe292f79ff7b27 SHA1 d794f66b860c0a23dc4f2abe7ce6ec20a35e3f7f SHA256 2bdfd866e0de7a665234f580084c818fd5893b748947b226b5c847d4d0514b7a

dev-util/eclipse-sdk/eclipse-sdk-3.7.0-r1.ebuild

+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="2"
+WANT_ANT_TASKS="ant-nodeps"
+
+# eclipse-build is too complicated for automatic fixing
+# if there are any fixes we should create patches
+# and push them upstream
+JAVA_PKG_BSFIX="off"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+BUILD_VER="3.7.0"
+BUILD_ID="I20110613-1736"
+BUILD_LABEL="${BUILD_VER}-${BUILD_ID}"
+ECLIPSE_BUILD_VER="5791c48513b4207ab1eec1e00bed4b2186f9aad5"
+S="${WORKDIR}/eclipse-build-${ECLIPSE_BUILD_VER}"
+
+DESCRIPTION="Eclipse SDK"
+HOMEPAGE="http://www.eclipse.org/eclipse/"
+BASE_URI="http://download.eclipse.org/technology/linuxtools/eclipse-build/3.7.x_Indigo/"
+SRC_URI="${BASE_URI}eclipse-${BUILD_VER}-src.tar.bz2 ${BASE_URI}eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+RESTRICT="mirror"
+
+LICENSE="EPL-1.0"
+SLOT="3.7"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gnome source"
+
+# ant dependencies should really be >=1.8.2
+CDEPEND=">=dev-java/swt-${PV%.0}_rc4:${SLOT}
+	>=dev-java/ant-1.8.1
+	>=dev-java/asm-3.3.1:3
+	>=dev-java/commons-codec-1.3
+	>=dev-java/commons-el-1.0
+	>=dev-java/commons-httpclient-3.1:3
+	>=dev-java/commons-logging-1.0.4
+	>=dev-java/hamcrest-core-1.1
+	>=dev-java/icu4j-4.4.2:4.4
+	>=dev-java/jsch-0.1.41
+	>=dev-java/junit-3.8.2:0
+	>=dev-java/junit-4.8.2:4
+	>=dev-java/lucene-2.9.1:2.9
+	>=dev-java/lucene-analyzers-2.9.1:2.9
+	>=dev-java/sat4j-core-2.3.0:2
+	>=dev-java/sat4j-pseudo-2.3.0:2
+	dev-java/tomcat-servlet-api:2.5
+	>=www-servers/tomcat-5.5.17:5.5
+	java-virtuals/jetty-server:6
+	x86? ( gnome? ( gnome-base/gconf ) )"
+RDEPEND="${CDEPEND}
+	>=virtual/jre-1.5"
+# ant dependencies should really be >=1.8.2
+DEPEND="${CDEPEND}
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	>=dev-java/ant-antlr-1.8.1
+	>=dev-java/ant-apache-bcel-1.8.1
+	>=dev-java/ant-apache-bsf-1.8.1
+	>=dev-java/ant-apache-log4j-1.8.1
+	>=dev-java/ant-apache-oro-1.8.1
+	>=dev-java/ant-apache-regexp-1.8.1
+	>=dev-java/ant-apache-resolver-1.8.1
+	>=dev-java/ant-apache-xalan2-1.8.1
+	>=dev-java/ant-commons-logging-1.8.1
+	>=dev-java/ant-commons-net-1.8.1
+	>=dev-java/ant-core-1.8.1
+	>=dev-java/ant-javamail-1.8.1
+	>=dev-java/ant-jdepend-1.8.1
+	>=dev-java/ant-jmf-1.8.1
+	>=dev-java/ant-jsch-1.8.1
+	>=dev-java/ant-junit-1.8.1
+	>=dev-java/ant-junit4-1.8.1
+	>=dev-java/ant-swing-1.8.1
+	>=dev-java/ant-testutil-1.8.1
+	>=virtual/jdk-1.6"
+#	>=dev-java/ant-launcher-1.8.1
+
+OSGI_DEPENDENCIES=(
+	'com.ibm.icu - icu4j-4.4'
+	'com.jcraft.jsch - jsch'
+	'javax.servlet tomcat6-servlet-2.5-api tomcat-servlet-api-2.5 servlet-api'
+	'javax.servlet.jsp tomcat6-jsp-2.1-api tomcat-servlet-api-2.5 jsp-api'
+	'org.apache.commons.codec commons-codec commons-codec'
+	'org.apache.commons.el apache-commons-el-1.0 commons-el'
+	'org.apache.commons.httpclient jakarta-commons-httpclient-3.1 commons-httpclient-3'
+	'org.apache.commons.logging apache-commons-logging commons-logging'
+	'org.apache.jasper - tomcat-5.5 jasper-compiler jasper-runtime'
+	'org.apache.lucene.core lucene lucene-2.9'
+	'org.apache.lucene.analysis lucene-analyzers lucene-analyzers-2.9'
+	'org.hamcrest.core - hamcrest-core'
+	'org.mortbay.jetty.server jetty-6.1.26 jetty-6 jetty'
+	'org.mortbay.jetty.util jetty-util-6.1.26 jetty-6 jetty-util'
+	'org.objectweb.asm - asm-3'
+	'org.sat4j.core org.sat4j.core sat4j-core-2'
+	'org.sat4j.pb org.sat4j.pb sat4j-pseudo-2'
+)
+NONOSGI_DEPENDENCIES=(
+	'org.apache.ant ant-antlr'
+	'org.apache.ant ant-apache-bcel'
+	'org.apache.ant ant-apache-bsf'
+	'org.apache.ant ant-apache-log4j'
+	'org.apache.ant ant-apache-oro'
+	'org.apache.ant ant-apache-regexp'
+	'org.apache.ant ant-apache-resolver'
+	'org.apache.ant ant-apache-xalan2'
+	'org.apache.ant ant-commons-logging'
+	'org.apache.ant ant-commons-net'
+	'org.apache.ant ant-core ant ant-launcher'
+	'org.apache.ant ant-javamail'
+	'org.apache.ant ant-jdepend'
+	'org.apache.ant ant-jmf'
+	'org.apache.ant ant-jsch'
+	'org.apache.ant ant-junit'
+	'org.apache.ant ant-junit4'
+#	'org.apache.ant ant-launcher'
+	'org.apache.ant ant-swing'
+	'org.apache.ant ant-testutil'
+	'org.junit_3.8.2.v3 junit'
+	'org.junit4 junit-4 junit'
+	'org.junit_4.8.2.v4 junit-4 junit'
+)
+
+ALL_OS='aix hpux linux macosx qnx solaris win32'
+ALL_WS='carbon cocoa gtk motif photon win32 wpf'
+ALL_ARCH='alpha arm ia64 mips mipsel PA_RISC ppc ppc64 s390 s390x sparc sparc64 x86 x86_64'
+
+buildDir="${S}/build/eclipse-${BUILD_LABEL}-src"
+
+pkg_setup() {
+	ws='gtk'
+	if use x86 ; then os='linux' ; arch='x86'
+	elif use amd64 ; then os='linux' ; arch='x86_64'
+	fi
+
+	java-pkg-2_pkg_setup
+
+	if use doc ; then
+		ewarn "Having the 'doc' USE flag enabled greatly increases the build time."
+		ewarn "You might want to disable it for ${PN} if you don't need it."
+	fi
+}
+
+src_unpack() {
+	CHECKREQS_MEMORY="1536"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072"
+	else
+		CHECKREQS_DISK_BUILD="1536"
+	fi
+	check_reqs
+
+	#unpack "eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	tar -xpJf "${DISTDIR}/eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	ln -s "${DISTDIR}/eclipse-${BUILD_VER}-src.tar.bz2" "${S}/eclipse-${BUILD_LABEL}-src.tar.bz2" || die
+	cd "${S}"
+	# building with ecj fails for some reason (polluted classpath probably)
+	java-pkg_force-compiler javac
+	#sed -e 's/^\(label\|testsBuildLabel\)=.*$/\1='"${BUILD_LABEL}"'/' \
+	#		-e 's/^buildId=.*$/buildId='"${BUILD_ID}"'/' \
+	#		-i build.properties -i pdebuild.properties || die
+	eant unpack
+	cp -r "${S}/build/eclipse-${PV}-src/"* "${buildDir}/" || die "Copying sources failed"
+	rm -r "${S}/build/eclipse-${PV}-src" || die "Removing dir failed"
+	ln -s "eclipse-${BUILD_LABEL}-src" "${S}/build/eclipse-${PV}-src" || die "Creating link failed"
+
+}
+
+src_prepare() {
+	# apply patches before we start cleaning junk out
+	eant applyPatches
+
+	# fix up hardcoded runtime class paths
+	sed -e 's|/usr/lib/jvm/java/jre/lib/rt\.jar:.*$|'"$(java-config --runtime)"'|' \
+			-i {,pde}build.properties || die
+
+	# we'll handle our own dependency symlinking, so disable eclipse-build helper
+	sed -e 's/,symlinkDeps,/,/' -i build.xml || die
+	sed_xml_element 'target' -e '/name="provision.sdk"/ s|<symlinkInstalled.*\(<echo \)|\1|' \
+			-i build.xml || die
+
+	# this unpacking step appears to be unnecessary (and it doesn't work)
+	sed_xml_element 'target' -e 's/\(depends="[^"]\+\),[^",]*nestedJars/\1/' \
+			-i "${buildDir}"/plugins/*/build.xml || die
+
+	# disable building of libgnomeproxy on x86 if USE=-gnome
+	if ! use gnome ; then
+		sed_xml_element 'condition' -e '/property="build\.libgnomeproxy"/d' -i build.xml || die
+	fi
+
+	# skip compilation of SWT native libraries (we use the system-installed copies)
+	sed_xml_element 'ant' -e '/swt/d' -i build.xml || die
+
+	ebegin 'Removing plugins of irrelevant platforms'
+	local remove_os=" ${ALL_OS} " ; remove_os=${remove_os/ ${os} / }
+	remove_os=${remove_os# } ; remove_os=${remove_os% } ; remove_os=${remove_os// /'\|'}
+	local remove_ws=" ${ALL_WS} " ; remove_ws=${remove_ws/ ${ws} / }
+	remove_ws=${remove_ws# } ; remove_ws=${remove_ws% } ; remove_ws=${remove_ws// /'\|'}
+	local remove_arch=" ${ALL_ARCH} " ; remove_arch=${remove_arch/ ${arch} / }
+	remove_arch=${remove_arch# } ; remove_arch=${remove_arch% } ; remove_arch=${remove_arch// /'\|'}
+	sed_xml_element 'includes\|plugin' \
+			-e '/id="org\.eclipse\.\(core\.net\.linux\.x86\|update\.core\.linux\)"/b' \
+			-e '/os="'"${remove_os}"'"/d' -e '/ws="'"${remove_ws}"'"/d' -e '/arch="'"${remove_arch}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'remove irrelevant platforms failed'
+	eend
+
+	if ! use doc ; then
+		ebegin 'Removing documentation plugins'
+		rm -rf "${buildDir}"/plugins/*.doc{,.*}
+		eclipse_delete-plugins '.*\.doc\(\..*\|\)'
+		eend
+	fi
+
+	if ! use source ; then
+		ebegin 'Removing source plugins'
+		rm -rf "${buildDir}"/plugins/*.source{,_*}
+		eclipse_delete-plugins '.*\.source'
+		eend
+	fi
+
+	ebegin 'Linking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-nonosgi-dep ${dep}
+	done
+	eend
+
+	cd "${buildDir}" || die
+	epatch "${FILESDIR}/${SLOT}/hamcrest-junit-lib.patch"
+	epatch "${FILESDIR}/${SLOT}/gtk_makefile.patch"
+	epatch "${FILESDIR}/${SLOT}/iterators.patch"
+}
+
+src_compile() {
+	addpredict "/dev/random"
+	ANT_OPTS='-Xmx512M' eant -DbuildArch="${arch}"
+
+	# remove stray symlink
+	rm "${buildDir}"/installation/plugins/junit4.jar
+}
+
+src_install() {
+	local destDir="/usr/$(get_libdir)/eclipse-${SLOT}"
+
+	insinto "${destDir}"
+	shopt -s dotglob
+	doins -r "${buildDir}"/installation/* || die
+	shopt -u dotglob
+	chmod +x "${D}${destDir}"/eclipse
+	rm -f "${D}${destDir}"/libcairo-swt.so  # use the system-installed SWT libraries
+
+	# redo symlinks
+	ebegin 'Relinking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-nonosgi-dep ${dep}
+	done
+	eend
+
+	# Install Gentoo wrapper and config
+	dobin "${FILESDIR}/${SLOT}/eclipse-${SLOT}" || die
+	insinto /etc
+	doins "${FILESDIR}/${SLOT}/eclipserc-${SLOT}" || die
+
+	# Create desktop entry
+	make_desktop_entry "eclipse-${SLOT}" "Eclipse ${PV}" "${destDir}/icon.xpm" || die
+}
+
+eclipse_create-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	bundle=$(basename "${S}/dependencyManifests/${bundle}"_*.jar .jar) || die
+	[[ ${replace} == '-' ]] && replace=${bundle}
+	einfo "  ${bundle} => ${package}" "${@}"
+	mkdir -p "${buildDir}/plugins/${bundle}" || die
+	pushd "${buildDir}/plugins/${bundle}" > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from "${package}"
+	fi
+	mkdir META-INF || die
+	cp "${S}/dependencyManifests/${bundle}.jar/META-INF/MANIFEST.MF" META-INF/ || die
+	manifest_replace META-INF/MANIFEST.MF 'Bundle-ClassPath' "$(echo *.jar | tr ' ' ',')"
+	manifest_delete META-INF/MANIFEST.MF 'Name\|SHA1-Digest'
+	# replace classpath refs to this bundle with refs to system-installed jars
+	sed_xml_element 'pathelement' -e '/path="\([^"]\+\/\)\?'"${replace//./\.}"'\.jar"/c '"$(
+			for jar in *.jar ; do
+				echo -n '<pathelement path="'"$(readlink "${jar}")"'"/>'
+			done)" -i "${buildDir}"/plugins/*/build.xml || die
+	popd > /dev/null || die
+	# include unpacked bundle in copy to bootstrap plugins dir
+	sed_xml_element 'fileset' -e '/id="orbitDeps"/ s|</fileset>|<include name="'"${bundle}/"'"/>\0|' \
+			-i "${S}/pdebuild.xml" || die
+}
+
+eclipse_create-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${buildDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+		dir=${dir%%/*}
+		local manifest=${pdir}/${dir}/META-INF/MANIFEST.MF
+		[[ -f ${manifest} ]] && manifest_delete "${manifest}" 'Name\|SHA1-Digest'
+		rm -f "${pdir}/${dir}"/META-INF/ECLIPSEF.{RSA,SF}
+	done
+}
+
+eclipse_relink-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	einfo "  ${bundle} => ${package}" "${@}"
+	pushd "${D}${destDir}/plugins/${bundle}"_* > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from --build-only "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from --build-only "${package}"
+	fi
+	popd > /dev/null || die
+}
+
+eclipse_relink-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${D}${destDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+	done
+}
+
+# Removes feature.xml references to plugins matching ${1}.
+eclipse_delete-plugins() {
+	sed_xml_element 'includes\|plugin' -e '/id="'"${1}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'eclipse_delete-plugins failed'
+}
+
+# Prints the first value from manifest file ${1} whose key matches regex ${2},
+# unfolding as necessary.
+manifest_get() {
+	sed -n -e '/^\('"${2}"'\): /{h;:A;$bB;n;/^ /!bB;H;bA};d;:B;g;s/^[^:]*: //;s/\n //g;p;q' "${1}" \
+		|| die 'manifest_get failed'
+}
+
+# Deletes values from manifest file ${1} whose keys match regex ${2}, taking
+# into account folding.
+manifest_delete() {
+	sed -n -e ':A;/^\('"${2}"'\): /{:B;n;/^ /!{bA};bB};p' -i "${1}" \
+		|| die 'manifest_delete failed'
+}
+
+# Replaces the value for key ${2} in the first section of manifest file ${1}
+# with ${3}, or adds the key-value pair to that section if the key was absent.
+manifest_replace() {
+	LC_ALL='C' awk -v key="${2}" -v val="${3}" '
+function fold(s,  o, l, r) {
+	o = 2 ; l = length(s) - 1 ; r = substr(s, 1, 1)
+	while (l > 69) { r = r substr(s, o, 69) "\n " ; o += 69 ; l -= 69 }
+	return r substr(s, o)
+}
+BEGIN { FS = ": " }
+f { print ; next }
+i { if ($0 !~ "^ ") { f = 1 ; print } ; next }
+$1 == key { print fold(key FS val) ; i = 1 ; next }
+/^\r?$/ { print fold(key FS val) ; print ; f = 1 ; next }
+{ print }
+END { if (!f) { print fold(key FS val) } }
+' "${1}" > "${1}-" && mv "${1}"{-,} || die 'manifest_replace failed'
+}
+
+# Executes sed over each XML element with a name matching ${1}, rather than
+# over each line. The entire element (and its children) may be removed with the
+# 'd' command, or they may be edited using all the usual sed foo. Basically,
+# the script argument will be executed only for elements matching ${1}, and the
+# sed pattern space will consist of the entire element, including any nested
+# elements. Note that this is not perfect and requires no more than one XML
+# element per line to be reliable.
+sed_xml_element() {
+	local elem=${1} ; shift
+	sed -e '/<\('"${elem}"'\)\([> \t]\|$\)/{:_1;/>/!{N;b_1};/\/>/b_3' \
+			-e ':_2;/<\/\('"${elem}"'\)>/!{N;b_2};b_3};b;:_3' "${@}"
+}

dev-util/eclipse-sdk/eclipse-sdk-3.7.0-r2.ebuild

+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="2"
+WANT_ANT_TASKS="ant-nodeps"
+
+# eclipse-build is too complicated for automatic fixing
+# if there are any fixes we should create patches
+# and push them upstream
+JAVA_PKG_BSFIX="off"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+BUILD_VER="3.7.0"
+BUILD_ID="I20110613-1736"
+BUILD_LABEL="${BUILD_VER}-${BUILD_ID}"
+ECLIPSE_BUILD_VER="5791c48513b4207ab1eec1e00bed4b2186f9aad5"
+S="${WORKDIR}/eclipse-build-${ECLIPSE_BUILD_VER}"
+
+DESCRIPTION="Eclipse SDK"
+HOMEPAGE="http://www.eclipse.org/eclipse/"
+BASE_URI="http://download.eclipse.org/technology/linuxtools/eclipse-build/3.7.x_Indigo/"
+SRC_URI="${BASE_URI}eclipse-${BUILD_VER}-src.tar.bz2 ${BASE_URI}eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+RESTRICT="mirror"
+
+LICENSE="EPL-1.0"
+SLOT="3.7"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gnome source"
+
+# ant dependencies should really be >=1.8.2
+CDEPEND=">=dev-java/swt-${PV%.0}_rc4:${SLOT}
+	>=dev-java/ant-1.8.1
+	>=dev-java/asm-3.3.1:3
+	>=dev-java/commons-codec-1.3
+	>=dev-java/commons-el-1.0
+	>=dev-java/commons-httpclient-3.1:3
+	>=dev-java/commons-logging-1.0.4
+	>=dev-java/hamcrest-core-1.1
+	>=dev-java/icu4j-4.4.2:4.4
+	>=dev-java/jsch-0.1.41
+	>=dev-java/junit-3.8.2:0
+	>=dev-java/junit-4.8.2:4
+	>=dev-java/lucene-2.9.1:2.9
+	>=dev-java/lucene-analyzers-2.9.1:2.9
+	>=dev-java/sat4j-core-2.3.0:2
+	>=dev-java/sat4j-pseudo-2.3.0:2
+	dev-java/tomcat-servlet-api:2.5
+	>=www-servers/tomcat-5.5.17:5.5
+	java-virtuals/jetty-server:6
+	x86? ( gnome? ( gnome-base/gconf ) )"
+RDEPEND="${CDEPEND}
+	>=virtual/jre-1.5"
+# ant dependencies should really be >=1.8.2
+DEPEND="${CDEPEND}
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	>=dev-java/ant-antlr-1.8.1
+	>=dev-java/ant-apache-bcel-1.8.1
+	>=dev-java/ant-apache-bsf-1.8.1
+	>=dev-java/ant-apache-log4j-1.8.1
+	>=dev-java/ant-apache-oro-1.8.1
+	>=dev-java/ant-apache-regexp-1.8.1
+	>=dev-java/ant-apache-resolver-1.8.1
+	>=dev-java/ant-apache-xalan2-1.8.1
+	>=dev-java/ant-commons-logging-1.8.1
+	>=dev-java/ant-commons-net-1.8.1
+	>=dev-java/ant-core-1.8.1
+	>=dev-java/ant-javamail-1.8.1
+	>=dev-java/ant-jdepend-1.8.1
+	>=dev-java/ant-jmf-1.8.1
+	>=dev-java/ant-jsch-1.8.1
+	>=dev-java/ant-junit-1.8.1
+	>=dev-java/ant-junit4-1.8.1
+	>=dev-java/ant-swing-1.8.1
+	>=dev-java/ant-testutil-1.8.1
+	doc? ( >=dev-java/ant-nodeps-1.8.1 )
+	>=virtual/jdk-1.6"
+#	>=dev-java/ant-launcher-1.8.1
+
+OSGI_DEPENDENCIES=(
+	'com.ibm.icu - icu4j-4.4'
+	'com.jcraft.jsch - jsch'
+	'javax.servlet tomcat6-servlet-2.5-api tomcat-servlet-api-2.5 servlet-api'
+	'javax.servlet.jsp tomcat6-jsp-2.1-api tomcat-servlet-api-2.5 jsp-api'
+	'org.apache.commons.codec commons-codec commons-codec'
+	'org.apache.commons.el apache-commons-el-1.0 commons-el'
+	'org.apache.commons.httpclient jakarta-commons-httpclient-3.1 commons-httpclient-3'
+	'org.apache.commons.logging apache-commons-logging commons-logging'
+	'org.apache.jasper - tomcat-5.5 jasper-compiler jasper-runtime'
+	'org.apache.lucene.core lucene lucene-2.9'
+	'org.apache.lucene.analysis lucene-analyzers lucene-analyzers-2.9'
+	'org.hamcrest.core - hamcrest-core'
+	'org.mortbay.jetty.server jetty-6.1.26 jetty-6 jetty'
+	'org.mortbay.jetty.util jetty-util-6.1.26 jetty-6 jetty-util'
+	'org.objectweb.asm - asm-3'
+	'org.sat4j.core org.sat4j.core sat4j-core-2'
+	'org.sat4j.pb org.sat4j.pb sat4j-pseudo-2'
+)
+NONOSGI_DEPENDENCIES=(
+	'org.apache.ant ant-antlr'
+	'org.apache.ant ant-apache-bcel'
+	'org.apache.ant ant-apache-bsf'
+	'org.apache.ant ant-apache-log4j'
+	'org.apache.ant ant-apache-oro'
+	'org.apache.ant ant-apache-regexp'
+	'org.apache.ant ant-apache-resolver'
+	'org.apache.ant ant-apache-xalan2'
+	'org.apache.ant ant-commons-logging'
+	'org.apache.ant ant-commons-net'
+	'org.apache.ant ant-core ant ant-launcher'
+	'org.apache.ant ant-javamail'
+	'org.apache.ant ant-jdepend'
+	'org.apache.ant ant-jmf'
+	'org.apache.ant ant-jsch'
+	'org.apache.ant ant-junit'
+	'org.apache.ant ant-junit4'
+#	'org.apache.ant ant-launcher'
+	'org.apache.ant ant-swing'
+	'org.apache.ant ant-testutil'
+	'org.junit_3.8.2.v3 junit'
+	'org.junit4 junit-4 junit'
+	'org.junit_4.8.2.v4 junit-4 junit'
+)
+
+ALL_OS='aix hpux linux macosx qnx solaris win32'
+ALL_WS='carbon cocoa gtk motif photon win32 wpf'
+ALL_ARCH='alpha arm ia64 mips mipsel PA_RISC ppc ppc64 s390 s390x sparc sparc64 x86 x86_64'
+
+buildDir="${S}/build/eclipse-${BUILD_LABEL}-src"
+
+pkg_setup() {
+	ws='gtk'
+	if use x86 ; then os='linux' ; arch='x86'
+	elif use amd64 ; then os='linux' ; arch='x86_64'
+	fi
+
+	java-pkg-2_pkg_setup
+
+	if use doc ; then
+		ewarn "Having the 'doc' USE flag enabled greatly increases the build time."
+		ewarn "You might want to disable it for ${PN} if you don't need it."
+	fi
+}
+
+src_unpack() {
+	CHECKREQS_MEMORY="1536"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072"
+	else
+		CHECKREQS_DISK_BUILD="1536"
+	fi
+	check_reqs
+
+	#unpack "eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	tar -xpJf "${DISTDIR}/eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	ln -s "${DISTDIR}/eclipse-${BUILD_VER}-src.tar.bz2" "${S}/eclipse-${BUILD_LABEL}-src.tar.bz2" || die
+	cd "${S}"
+	# building with ecj fails for some reason (polluted classpath probably)
+	java-pkg_force-compiler javac
+	#sed -e 's/^\(label\|testsBuildLabel\)=.*$/\1='"${BUILD_LABEL}"'/' \
+	#		-e 's/^buildId=.*$/buildId='"${BUILD_ID}"'/' \
+	#		-i build.properties -i pdebuild.properties || die
+	eant unpack
+	cp -r "${S}/build/eclipse-${PV}-src/"* "${buildDir}/" || die "Copying sources failed"
+	rm -r "${S}/build/eclipse-${PV}-src" || die "Removing dir failed"
+	ln -s "eclipse-${BUILD_LABEL}-src" "${S}/build/eclipse-${PV}-src" || die "Creating link failed"
+
+}
+
+src_prepare() {
+	# apply patches before we start cleaning junk out
+	eant applyPatches
+
+	# fix up hardcoded runtime class paths
+	sed -e 's|/usr/lib/jvm/java/jre/lib/rt\.jar:.*$|'"$(java-config --runtime)"'|' \
+			-i {,pde}build.properties || die
+
+	# we'll handle our own dependency symlinking, so disable eclipse-build helper
+	sed -e 's/,symlinkDeps,/,/' -i build.xml || die
+	sed_xml_element 'target' -e '/name="provision.sdk"/ s|<symlinkInstalled.*\(<echo \)|\1|' \
+			-i build.xml || die
+
+	# this unpacking step appears to be unnecessary (and it doesn't work)
+	sed_xml_element 'target' -e 's/\(depends="[^"]\+\),[^",]*nestedJars/\1/' \
+			-i "${buildDir}"/plugins/*/build.xml || die
+
+	# disable building of libgnomeproxy on x86 if USE=-gnome
+	if ! use gnome ; then
+		sed_xml_element 'condition' -e '/property="build\.libgnomeproxy"/d' -i build.xml || die
+	fi
+
+	# skip compilation of SWT native libraries (we use the system-installed copies)
+	sed_xml_element 'ant' -e '/swt/d' -i build.xml || die
+
+	ebegin 'Removing plugins of irrelevant platforms'
+	local remove_os=" ${ALL_OS} " ; remove_os=${remove_os/ ${os} / }
+	remove_os=${remove_os# } ; remove_os=${remove_os% } ; remove_os=${remove_os// /'\|'}
+	local remove_ws=" ${ALL_WS} " ; remove_ws=${remove_ws/ ${ws} / }
+	remove_ws=${remove_ws# } ; remove_ws=${remove_ws% } ; remove_ws=${remove_ws// /'\|'}
+	local remove_arch=" ${ALL_ARCH} " ; remove_arch=${remove_arch/ ${arch} / }
+	remove_arch=${remove_arch# } ; remove_arch=${remove_arch% } ; remove_arch=${remove_arch// /'\|'}
+	sed_xml_element 'includes\|plugin' \
+			-e '/id="org\.eclipse\.\(core\.net\.linux\.x86\|update\.core\.linux\)"/b' \
+			-e '/os="'"${remove_os}"'"/d' -e '/ws="'"${remove_ws}"'"/d' -e '/arch="'"${remove_arch}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'remove irrelevant platforms failed'
+	eend
+
+	if ! use doc ; then
+		ebegin 'Removing documentation plugins'
+		rm -rf "${buildDir}"/plugins/*.doc{,.*}
+		eclipse_delete-plugins '.*\.doc\(\..*\|\)'
+		eend
+	fi
+
+	if ! use source ; then
+		ebegin 'Removing source plugins'
+		rm -rf "${buildDir}"/plugins/*.source{,_*}
+		eclipse_delete-plugins '.*\.source'
+		eend
+	fi
+
+	ebegin 'Linking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-nonosgi-dep ${dep}
+	done
+	eend
+
+	cd "${buildDir}" || die
+	epatch "${FILESDIR}/${SLOT}/hamcrest-junit-lib.patch"
+	epatch "${FILESDIR}/${SLOT}/gtk_makefile.patch"
+	epatch "${FILESDIR}/${SLOT}/iterators.patch"
+}
+
+src_compile() {
+	addpredict "/dev/random"
+	ANT_OPTS='-Xmx512M' eant -DbuildArch="${arch}"
+
+	# remove stray symlink
+	rm "${buildDir}"/installation/plugins/junit4.jar
+}
+
+src_install() {
+	local destDir="/usr/$(get_libdir)/eclipse-${SLOT}"
+
+	insinto "${destDir}"
+	shopt -s dotglob
+	doins -r "${buildDir}"/installation/* || die
+	shopt -u dotglob
+	chmod +x "${D}${destDir}"/eclipse
+	rm -f "${D}${destDir}"/libcairo-swt.so  # use the system-installed SWT libraries
+
+	# redo symlinks
+	ebegin 'Relinking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-nonosgi-dep ${dep}
+	done
+	eend
+
+	# Install Gentoo wrapper and config
+	dobin "${FILESDIR}/${SLOT}/eclipse-${SLOT}" || die
+	insinto /etc
+	doins "${FILESDIR}/${SLOT}/eclipserc-${SLOT}" || die
+
+	# Create desktop entry
+	make_desktop_entry "eclipse-${SLOT}" "Eclipse ${PV}" "${destDir}/icon.xpm" || die
+}
+
+eclipse_create-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	bundle=$(basename "${S}/dependencyManifests/${bundle}"_*.jar .jar) || die
+	[[ ${replace} == '-' ]] && replace=${bundle}
+	einfo "  ${bundle} => ${package}" "${@}"
+	mkdir -p "${buildDir}/plugins/${bundle}" || die
+	pushd "${buildDir}/plugins/${bundle}" > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from "${package}"
+	fi
+	mkdir META-INF || die
+	cp "${S}/dependencyManifests/${bundle}.jar/META-INF/MANIFEST.MF" META-INF/ || die
+	manifest_replace META-INF/MANIFEST.MF 'Bundle-ClassPath' "$(echo *.jar | tr ' ' ',')"
+	manifest_delete META-INF/MANIFEST.MF 'Name\|SHA1-Digest'
+	# replace classpath refs to this bundle with refs to system-installed jars
+	sed_xml_element 'pathelement' -e '/path="\([^"]\+\/\)\?'"${replace//./\.}"'\.jar"/c '"$(
+			for jar in *.jar ; do
+				echo -n '<pathelement path="'"$(readlink "${jar}")"'"/>'
+			done)" -i "${buildDir}"/plugins/*/build.xml || die
+	popd > /dev/null || die
+	# include unpacked bundle in copy to bootstrap plugins dir
+	sed_xml_element 'fileset' -e '/id="orbitDeps"/ s|</fileset>|<include name="'"${bundle}/"'"/>\0|' \
+			-i "${S}/pdebuild.xml" || die
+}
+
+eclipse_create-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${buildDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+		dir=${dir%%/*}
+		local manifest=${pdir}/${dir}/META-INF/MANIFEST.MF
+		[[ -f ${manifest} ]] && manifest_delete "${manifest}" 'Name\|SHA1-Digest'
+		rm -f "${pdir}/${dir}"/META-INF/ECLIPSEF.{RSA,SF}
+	done
+}
+
+eclipse_relink-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	einfo "  ${bundle} => ${package}" "${@}"
+	pushd "${D}${destDir}/plugins/${bundle}"_* > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from --build-only "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from --build-only "${package}"
+	fi
+	popd > /dev/null || die
+}
+
+eclipse_relink-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${D}${destDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+	done
+}
+
+# Removes feature.xml references to plugins matching ${1}.
+eclipse_delete-plugins() {
+	sed_xml_element 'includes\|plugin' -e '/id="'"${1}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'eclipse_delete-plugins failed'
+}
+
+# Prints the first value from manifest file ${1} whose key matches regex ${2},
+# unfolding as necessary.
+manifest_get() {
+	sed -n -e '/^\('"${2}"'\): /{h;:A;$bB;n;/^ /!bB;H;bA};d;:B;g;s/^[^:]*: //;s/\n //g;p;q' "${1}" \
+		|| die 'manifest_get failed'
+}
+
+# Deletes values from manifest file ${1} whose keys match regex ${2}, taking
+# into account folding.
+manifest_delete() {
+	sed -n -e ':A;/^\('"${2}"'\): /{:B;n;/^ /!{bA};bB};p' -i "${1}" \
+		|| die 'manifest_delete failed'
+}
+
+# Replaces the value for key ${2} in the first section of manifest file ${1}
+# with ${3}, or adds the key-value pair to that section if the key was absent.
+manifest_replace() {
+	LC_ALL='C' awk -v key="${2}" -v val="${3}" '
+function fold(s,  o, l, r) {
+	o = 2 ; l = length(s) - 1 ; r = substr(s, 1, 1)
+	while (l > 69) { r = r substr(s, o, 69) "\n " ; o += 69 ; l -= 69 }
+	return r substr(s, o)
+}
+BEGIN { FS = ": " }
+f { print ; next }
+i { if ($0 !~ "^ ") { f = 1 ; print } ; next }
+$1 == key { print fold(key FS val) ; i = 1 ; next }
+/^\r?$/ { print fold(key FS val) ; print ; f = 1 ; next }
+{ print }
+END { if (!f) { print fold(key FS val) } }
+' "${1}" > "${1}-" && mv "${1}"{-,} || die 'manifest_replace failed'
+}
+
+# Executes sed over each XML element with a name matching ${1}, rather than
+# over each line. The entire element (and its children) may be removed with the
+# 'd' command, or they may be edited using all the usual sed foo. Basically,
+# the script argument will be executed only for elements matching ${1}, and the
+# sed pattern space will consist of the entire element, including any nested
+# elements. Note that this is not perfect and requires no more than one XML
+# element per line to be reliable.
+sed_xml_element() {
+	local elem=${1} ; shift
+	sed -e '/<\('"${elem}"'\)\([> \t]\|$\)/{:_1;/>/!{N;b_1};/\/>/b_3' \
+			-e ':_2;/<\/\('"${elem}"'\)>/!{N;b_2};b_3};b;:_3' "${@}"
+}

dev-util/eclipse-sdk/eclipse-sdk-3.7.0-r3.ebuild

+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="2"
+WANT_ANT_TASKS="ant-nodeps"
+
+# eclipse-build is too complicated for automatic fixing
+# if there are any fixes we should create patches
+# and push them upstream
+JAVA_PKG_BSFIX="off"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+BUILD_VER="3.7.0"
+BUILD_ID="I20110613-1736"
+BUILD_LABEL="${BUILD_VER}-${BUILD_ID}"
+ECLIPSE_BUILD_VER="5791c48513b4207ab1eec1e00bed4b2186f9aad5"
+S="${WORKDIR}/eclipse-build-${ECLIPSE_BUILD_VER}"
+
+DESCRIPTION="Eclipse SDK"
+HOMEPAGE="http://www.eclipse.org/eclipse/"
+BASE_URI="http://download.eclipse.org/technology/linuxtools/eclipse-build/3.7.x_Indigo/"
+SRC_URI="${BASE_URI}eclipse-${BUILD_VER}-src.tar.bz2 ${BASE_URI}eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+RESTRICT="mirror"
+
+LICENSE="EPL-1.0"
+SLOT="3.7"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gnome source"
+
+# ant dependencies should really be >=1.8.2
+CDEPEND=">=dev-java/swt-${PV%.0}_rc4:${SLOT}
+	>=dev-java/ant-1.8.1
+	>=dev-java/asm-3.3.1:3
+	>=dev-java/commons-codec-1.3
+	>=dev-java/commons-el-1.0
+	>=dev-java/commons-httpclient-3.1:3
+	>=dev-java/commons-logging-1.0.4
+	>=dev-java/hamcrest-core-1.1
+	>=dev-java/icu4j-4.4.2:4.4
+	>=dev-java/jsch-0.1.41
+	>=dev-java/junit-3.8.2:0
+	>=dev-java/junit-4.8.2:4
+	>=dev-java/lucene-2.9.1:2.9
+	>=dev-java/lucene-analyzers-2.9.1:2.9
+	>=dev-java/sat4j-core-2.3.0:2
+	>=dev-java/sat4j-pseudo-2.3.0:2
+	dev-java/tomcat-servlet-api:2.5
+	>=www-servers/tomcat-7:7
+	java-virtuals/jetty-server:6
+	x86? ( gnome? ( gnome-base/gconf ) )"
+RDEPEND="${CDEPEND}
+	>=virtual/jre-1.5"
+# ant dependencies should really be >=1.8.2
+DEPEND="${CDEPEND}
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	>=dev-java/ant-antlr-1.8.1
+	>=dev-java/ant-apache-bcel-1.8.1
+	>=dev-java/ant-apache-bsf-1.8.1
+	>=dev-java/ant-apache-log4j-1.8.1
+	>=dev-java/ant-apache-oro-1.8.1
+	>=dev-java/ant-apache-regexp-1.8.1
+	>=dev-java/ant-apache-resolver-1.8.1
+	>=dev-java/ant-apache-xalan2-1.8.1
+	>=dev-java/ant-commons-logging-1.8.1
+	>=dev-java/ant-commons-net-1.8.1
+	>=dev-java/ant-core-1.8.1
+	>=dev-java/ant-javamail-1.8.1
+	>=dev-java/ant-jdepend-1.8.1
+	>=dev-java/ant-jmf-1.8.1
+	>=dev-java/ant-jsch-1.8.1
+	>=dev-java/ant-junit-1.8.1
+	>=dev-java/ant-junit4-1.8.1
+	>=dev-java/ant-swing-1.8.1
+	>=dev-java/ant-testutil-1.8.1
+	doc? ( >=dev-java/ant-nodeps-1.8.1 )
+	>=virtual/jdk-1.6"
+#	>=dev-java/ant-launcher-1.8.1
+
+OSGI_DEPENDENCIES=(
+	'com.ibm.icu - icu4j-4.4'
+	'com.jcraft.jsch - jsch'
+	'javax.servlet tomcat6-servlet-2.5-api tomcat-servlet-api-2.5 servlet-api'
+	'javax.servlet.jsp tomcat6-jsp-2.1-api tomcat-servlet-api-2.5 jsp-api'
+	'org.apache.commons.codec commons-codec commons-codec'
+	'org.apache.commons.el apache-commons-el-1.0 commons-el'
+	'org.apache.commons.httpclient jakarta-commons-httpclient-3.1 commons-httpclient-3'
+	'org.apache.commons.logging apache-commons-logging commons-logging'
+	'org.apache.jasper - tomcat-7 jasper jasper-el'
+	'org.apache.lucene.core lucene lucene-2.9'
+	'org.apache.lucene.analysis lucene-analyzers lucene-analyzers-2.9'
+	'org.hamcrest.core - hamcrest-core'
+	'org.mortbay.jetty.server jetty-6.1.26 jetty-6 jetty'
+	'org.mortbay.jetty.util jetty-util-6.1.26 jetty-6 jetty-util'
+	'org.objectweb.asm - asm-3'
+	'org.sat4j.core org.sat4j.core sat4j-core-2'
+	'org.sat4j.pb org.sat4j.pb sat4j-pseudo-2'
+)
+NONOSGI_DEPENDENCIES=(
+	'org.apache.ant ant-antlr'
+	'org.apache.ant ant-apache-bcel'
+	'org.apache.ant ant-apache-bsf'
+	'org.apache.ant ant-apache-log4j'
+	'org.apache.ant ant-apache-oro'
+	'org.apache.ant ant-apache-regexp'
+	'org.apache.ant ant-apache-resolver'
+	'org.apache.ant ant-apache-xalan2'
+	'org.apache.ant ant-commons-logging'
+	'org.apache.ant ant-commons-net'
+	'org.apache.ant ant-core ant ant-launcher'
+	'org.apache.ant ant-javamail'
+	'org.apache.ant ant-jdepend'
+	'org.apache.ant ant-jmf'
+	'org.apache.ant ant-jsch'
+	'org.apache.ant ant-junit'
+	'org.apache.ant ant-junit4'
+#	'org.apache.ant ant-launcher'
+	'org.apache.ant ant-swing'
+	'org.apache.ant ant-testutil'
+	'org.junit_3.8.2.v3 junit'
+	'org.junit4 junit-4 junit'
+	'org.junit_4.8.2.v4 junit-4 junit'
+)
+
+ALL_OS='aix hpux linux macosx qnx solaris win32'
+ALL_WS='carbon cocoa gtk motif photon win32 wpf'
+ALL_ARCH='alpha arm ia64 mips mipsel PA_RISC ppc ppc64 s390 s390x sparc sparc64 x86 x86_64'
+
+buildDir="${S}/build/eclipse-${BUILD_LABEL}-src"
+
+pkg_pretend() {
+	CHECKREQS_MEMORY="1536M"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072M"
+	else
+		CHECKREQS_DISK_BUILD="1536M"
+	fi
+	check-reqs_pkg_pretend
+}	 
+
+pkg_setup() {
+	CHECKREQS_MEMORY="1536M"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072M"
+	else
+		CHECKREQS_DISK_BUILD="1536M"
+	fi
+	check-reqs_pkg_setup
+
+	ws='gtk'
+	if use x86 ; then os='linux' ; arch='x86'
+	elif use amd64 ; then os='linux' ; arch='x86_64'
+	fi
+
+	java-pkg-2_pkg_setup
+
+	if use doc ; then
+		ewarn "Having the 'doc' USE flag enabled greatly increases the build time."
+		ewarn "You might want to disable it for ${PN} if you don't need it."
+	fi
+}
+
+src_unpack() {
+
+	#unpack "eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	tar -xpJf "${DISTDIR}/eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	ln -s "${DISTDIR}/eclipse-${BUILD_VER}-src.tar.bz2" "${S}/eclipse-${BUILD_LABEL}-src.tar.bz2" || die
+	cd "${S}"
+	# building with ecj fails for some reason (polluted classpath probably)
+	java-pkg_force-compiler javac
+	#sed -e 's/^\(label\|testsBuildLabel\)=.*$/\1='"${BUILD_LABEL}"'/' \
+	#		-e 's/^buildId=.*$/buildId='"${BUILD_ID}"'/' \
+	#		-i build.properties -i pdebuild.properties || die
+	eant unpack
+	cp -r "${S}/build/eclipse-${PV}-src/"* "${buildDir}/" || die "Copying sources failed"
+	rm -r "${S}/build/eclipse-${PV}-src" || die "Removing dir failed"
+	ln -s "eclipse-${BUILD_LABEL}-src" "${S}/build/eclipse-${PV}-src" || die "Creating link failed"
+
+}
+
+src_prepare() {
+	# apply patches before we start cleaning junk out
+	eant applyPatches
+
+	# fix up hardcoded runtime class paths
+	sed -e 's|/usr/lib/jvm/java/jre/lib/rt\.jar:.*$|'"$(java-config --runtime)"'|' \
+			-i {,pde}build.properties || die
+
+	# we'll handle our own dependency symlinking, so disable eclipse-build helper
+	sed -e 's/,symlinkDeps,/,/' -i build.xml || die
+	sed_xml_element 'target' -e '/name="provision.sdk"/ s|<symlinkInstalled.*\(<echo \)|\1|' \
+			-i build.xml || die
+
+	# this unpacking step appears to be unnecessary (and it doesn't work)
+	sed_xml_element 'target' -e 's/\(depends="[^"]\+\),[^",]*nestedJars/\1/' \
+			-i "${buildDir}"/plugins/*/build.xml || die
+
+	# disable building of libgnomeproxy on x86 if USE=-gnome
+	if ! use gnome ; then
+		sed_xml_element 'condition' -e '/property="build\.libgnomeproxy"/d' -i build.xml || die
+	fi
+
+	# skip compilation of SWT native libraries (we use the system-installed copies)
+	sed_xml_element 'ant' -e '/swt/d' -i build.xml || die
+
+	ebegin 'Removing plugins of irrelevant platforms'
+	local remove_os=" ${ALL_OS} " ; remove_os=${remove_os/ ${os} / }
+	remove_os=${remove_os# } ; remove_os=${remove_os% } ; remove_os=${remove_os// /'\|'}
+	local remove_ws=" ${ALL_WS} " ; remove_ws=${remove_ws/ ${ws} / }
+	remove_ws=${remove_ws# } ; remove_ws=${remove_ws% } ; remove_ws=${remove_ws// /'\|'}
+	local remove_arch=" ${ALL_ARCH} " ; remove_arch=${remove_arch/ ${arch} / }
+	remove_arch=${remove_arch# } ; remove_arch=${remove_arch% } ; remove_arch=${remove_arch// /'\|'}
+	sed_xml_element 'includes\|plugin' \
+			-e '/id="org\.eclipse\.\(core\.net\.linux\.x86\|update\.core\.linux\)"/b' \
+			-e '/os="'"${remove_os}"'"/d' -e '/ws="'"${remove_ws}"'"/d' -e '/arch="'"${remove_arch}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'remove irrelevant platforms failed'
+	eend
+
+	if ! use doc ; then
+		ebegin 'Removing documentation plugins'
+		rm -rf "${buildDir}"/plugins/*.doc{,.*}
+		eclipse_delete-plugins '.*\.doc\(\..*\|\)'
+		eend
+	fi
+
+	if ! use source ; then
+		ebegin 'Removing source plugins'
+		rm -rf "${buildDir}"/plugins/*.source{,_*}
+		eclipse_delete-plugins '.*\.source'
+		eend
+	fi
+
+	ebegin 'Linking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-nonosgi-dep ${dep}
+	done
+	eend
+
+	cd "${buildDir}" || die
+	epatch "${FILESDIR}/${SLOT}/hamcrest-junit-lib.patch"
+	epatch "${FILESDIR}/${SLOT}/gtk_makefile.patch"
+	epatch "${FILESDIR}/${SLOT}/iterators.patch"
+}
+
+src_compile() {
+	addpredict "/dev/random"
+	ANT_OPTS='-Xmx512M' eant -DbuildArch="${arch}"
+
+	# remove stray symlink
+	rm "${buildDir}"/installation/plugins/junit4.jar
+}
+
+src_install() {
+	local destDir="/usr/$(get_libdir)/eclipse-${SLOT}"
+
+	insinto "${destDir}"
+	shopt -s dotglob
+	doins -r "${buildDir}"/installation/* || die
+	shopt -u dotglob
+	chmod +x "${D}${destDir}"/eclipse
+	rm -f "${D}${destDir}"/libcairo-swt.so  # use the system-installed SWT libraries
+
+	# redo symlinks
+	ebegin 'Relinking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-nonosgi-dep ${dep}
+	done
+	eend
+
+	# Install Gentoo wrapper and config
+	dobin "${FILESDIR}/${SLOT}/eclipse-${SLOT}" || die
+	insinto /etc
+	doins "${FILESDIR}/${SLOT}/eclipserc-${SLOT}" || die
+
+	# Create desktop entry
+	make_desktop_entry "eclipse-${SLOT}" "Eclipse ${PV}" "${destDir}/icon.xpm" || die
+}
+
+eclipse_create-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	bundle=$(basename "${S}/dependencyManifests/${bundle}"_*.jar .jar) || die
+	[[ ${replace} == '-' ]] && replace=${bundle}
+	einfo "  ${bundle} => ${package}" "${@}"
+	mkdir -p "${buildDir}/plugins/${bundle}" || die
+	pushd "${buildDir}/plugins/${bundle}" > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from "${package}"
+	fi
+	mkdir META-INF || die
+	cp "${S}/dependencyManifests/${bundle}.jar/META-INF/MANIFEST.MF" META-INF/ || die
+	manifest_replace META-INF/MANIFEST.MF 'Bundle-ClassPath' "$(echo *.jar | tr ' ' ',')"
+	manifest_delete META-INF/MANIFEST.MF 'Name\|SHA1-Digest'
+	# replace classpath refs to this bundle with refs to system-installed jars
+	sed_xml_element 'pathelement' -e '/path="\([^"]\+\/\)\?'"${replace//./\.}"'\.jar"/c '"$(
+			for jar in *.jar ; do
+				echo -n '<pathelement path="'"$(readlink "${jar}")"'"/>'
+			done)" -i "${buildDir}"/plugins/*/build.xml || die
+	popd > /dev/null || die
+	# include unpacked bundle in copy to bootstrap plugins dir
+	sed_xml_element 'fileset' -e '/id="orbitDeps"/ s|</fileset>|<include name="'"${bundle}/"'"/>\0|' \
+			-i "${S}/pdebuild.xml" || die
+}
+
+eclipse_create-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${buildDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+		dir=${dir%%/*}
+		local manifest=${pdir}/${dir}/META-INF/MANIFEST.MF
+		[[ -f ${manifest} ]] && manifest_delete "${manifest}" 'Name\|SHA1-Digest'
+		rm -f "${pdir}/${dir}"/META-INF/ECLIPSEF.{RSA,SF}
+	done
+}
+
+eclipse_relink-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	einfo "  ${bundle} => ${package}" "${@}"
+	pushd "${D}${destDir}/plugins/${bundle}"_* > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from --build-only "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from --build-only "${package}"
+	fi
+	popd > /dev/null || die
+}
+
+eclipse_relink-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${D}${destDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+	done
+}
+
+# Removes feature.xml references to plugins matching ${1}.
+eclipse_delete-plugins() {
+	sed_xml_element 'includes\|plugin' -e '/id="'"${1}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'eclipse_delete-plugins failed'
+}
+
+# Prints the first value from manifest file ${1} whose key matches regex ${2},
+# unfolding as necessary.
+manifest_get() {
+	sed -n -e '/^\('"${2}"'\): /{h;:A;$bB;n;/^ /!bB;H;bA};d;:B;g;s/^[^:]*: //;s/\n //g;p;q' "${1}" \
+		|| die 'manifest_get failed'
+}
+
+# Deletes values from manifest file ${1} whose keys match regex ${2}, taking
+# into account folding.
+manifest_delete() {
+	sed -n -e ':A;/^\('"${2}"'\): /{:B;n;/^ /!{bA};bB};p' -i "${1}" \
+		|| die 'manifest_delete failed'
+}
+
+# Replaces the value for key ${2} in the first section of manifest file ${1}
+# with ${3}, or adds the key-value pair to that section if the key was absent.
+manifest_replace() {
+	LC_ALL='C' awk -v key="${2}" -v val="${3}" '
+function fold(s,  o, l, r) {
+	o = 2 ; l = length(s) - 1 ; r = substr(s, 1, 1)
+	while (l > 69) { r = r substr(s, o, 69) "\n " ; o += 69 ; l -= 69 }
+	return r substr(s, o)
+}
+BEGIN { FS = ": " }
+f { print ; next }
+i { if ($0 !~ "^ ") { f = 1 ; print } ; next }
+$1 == key { print fold(key FS val) ; i = 1 ; next }
+/^\r?$/ { print fold(key FS val) ; print ; f = 1 ; next }
+{ print }
+END { if (!f) { print fold(key FS val) } }
+' "${1}" > "${1}-" && mv "${1}"{-,} || die 'manifest_replace failed'
+}
+
+# Executes sed over each XML element with a name matching ${1}, rather than
+# over each line. The entire element (and its children) may be removed with the
+# 'd' command, or they may be edited using all the usual sed foo. Basically,
+# the script argument will be executed only for elements matching ${1}, and the
+# sed pattern space will consist of the entire element, including any nested
+# elements. Note that this is not perfect and requires no more than one XML
+# element per line to be reliable.
+sed_xml_element() {
+	local elem=${1} ; shift
+	sed -e '/<\('"${elem}"'\)\([> \t]\|$\)/{:_1;/>/!{N;b_1};/\/>/b_3' \
+			-e ':_2;/<\/\('"${elem}"'\)>/!{N;b_2};b_3};b;:_3' "${@}"
+}

dev-util/eclipse-sdk/eclipse-sdk-3.7.0.ebuild

+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="2"
+WANT_ANT_TASKS="ant-nodeps"
+
+# eclipse-build is too complicated for automatic fixing
+# if there are any fixes we should create patches
+# and push them upstream
+JAVA_PKG_BSFIX="off"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+BUILD_VER="3.7.0"
+BUILD_ID="I20110613-1736"
+BUILD_LABEL="${BUILD_VER}-${BUILD_ID}"
+ECLIPSE_BUILD_VER="5791c48513b4207ab1eec1e00bed4b2186f9aad5"
+S="${WORKDIR}/eclipse-build-${ECLIPSE_BUILD_VER}"
+
+DESCRIPTION="Eclipse SDK"
+HOMEPAGE="http://www.eclipse.org/eclipse/"
+BASE_URI="http://download.eclipse.org/technology/linuxtools/eclipse-build/3.7.x_Indigo/"
+SRC_URI="${BASE_URI}eclipse-${BUILD_VER}-src.tar.bz2 ${BASE_URI}eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+RESTRICT="mirror"
+
+LICENSE="EPL-1.0"
+SLOT="3.7"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gnome source"
+
+# ant dependencies should really be >=1.8.2
+CDEPEND=">=dev-java/swt-${PV%.0}_rc4:${SLOT}
+	>=dev-java/ant-1.8.1
+	>=dev-java/asm-3.3.1:3
+	>=dev-java/commons-codec-1.3
+	>=dev-java/commons-el-1.0
+	>=dev-java/commons-httpclient-3.1:3
+	>=dev-java/commons-logging-1.0.4
+	>=dev-java/hamcrest-core-1.1
+	>=dev-java/icu4j-4.4.2:4.4
+	>=dev-java/jsch-0.1.41
+	>=dev-java/junit-3.8.2:0
+	>=dev-java/junit-4.8.2:4
+	>=dev-java/lucene-2.9.1:2.9
+	>=dev-java/lucene-analyzers-2.9.1:2.9
+	>=dev-java/sat4j-core-2.3.0:2
+	>=dev-java/sat4j-pseudo-2.3.0:2
+	dev-java/tomcat-servlet-api:2.5
+	>=www-servers/jetty-6.1.23:6
+	>=www-servers/tomcat-5.5.17:5.5
+	x86? ( gnome? ( gnome-base/gconf ) )"
+RDEPEND="${CDEPEND}
+	>=virtual/jre-1.5"
+# ant dependencies should really be >=1.8.2
+DEPEND="${CDEPEND}
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	>=dev-java/ant-antlr-1.8.1
+	>=dev-java/ant-apache-bcel-1.8.1
+	>=dev-java/ant-apache-bsf-1.8.1
+	>=dev-java/ant-apache-log4j-1.8.1
+	>=dev-java/ant-apache-oro-1.8.1
+	>=dev-java/ant-apache-regexp-1.8.1
+	>=dev-java/ant-apache-resolver-1.8.1
+	>=dev-java/ant-apache-xalan2-1.8.1
+	>=dev-java/ant-commons-logging-1.8.1
+	>=dev-java/ant-commons-net-1.8.1
+	>=dev-java/ant-core-1.8.1
+	>=dev-java/ant-javamail-1.8.1
+	>=dev-java/ant-jdepend-1.8.1
+	>=dev-java/ant-jmf-1.8.1
+	>=dev-java/ant-jsch-1.8.1
+	>=dev-java/ant-junit-1.8.1
+	>=dev-java/ant-junit4-1.8.1
+	>=dev-java/ant-swing-1.8.1
+	>=dev-java/ant-testutil-1.8.1
+	>=virtual/jdk-1.6"
+#	>=dev-java/ant-launcher-1.8.1
+
+OSGI_DEPENDENCIES=(
+	'com.ibm.icu - icu4j-4.4'
+	'com.jcraft.jsch - jsch'
+	'javax.servlet tomcat6-servlet-2.5-api tomcat-servlet-api-2.5 servlet-api'
+	'javax.servlet.jsp tomcat6-jsp-2.1-api tomcat-servlet-api-2.5 jsp-api'
+	'org.apache.commons.codec commons-codec commons-codec'
+	'org.apache.commons.el apache-commons-el-1.0 commons-el'
+	'org.apache.commons.httpclient jakarta-commons-httpclient-3.1 commons-httpclient-3'
+	'org.apache.commons.logging apache-commons-logging commons-logging'
+	'org.apache.jasper - tomcat-5.5 jasper-compiler jasper-runtime'
+	'org.apache.lucene.core lucene lucene-2.9'
+	'org.apache.lucene.analysis lucene-analyzers lucene-analyzers-2.9'
+	'org.hamcrest.core - hamcrest-core'
+	'org.mortbay.jetty.server jetty-6.1.26 jetty-6 jetty'
+	'org.mortbay.jetty.util jetty-util-6.1.26 jetty-6 jetty-util'
+	'org.objectweb.asm - asm-3'
+	'org.sat4j.core org.sat4j.core sat4j-core-2'
+	'org.sat4j.pb org.sat4j.pb sat4j-pseudo-2'
+)
+NONOSGI_DEPENDENCIES=(
+	'org.apache.ant ant-antlr'
+	'org.apache.ant ant-apache-bcel'
+	'org.apache.ant ant-apache-bsf'
+	'org.apache.ant ant-apache-log4j'
+	'org.apache.ant ant-apache-oro'
+	'org.apache.ant ant-apache-regexp'
+	'org.apache.ant ant-apache-resolver'
+	'org.apache.ant ant-apache-xalan2'
+	'org.apache.ant ant-commons-logging'
+	'org.apache.ant ant-commons-net'
+	'org.apache.ant ant-core ant ant-launcher'
+	'org.apache.ant ant-javamail'
+	'org.apache.ant ant-jdepend'
+	'org.apache.ant ant-jmf'
+	'org.apache.ant ant-jsch'
+	'org.apache.ant ant-junit'
+	'org.apache.ant ant-junit4'
+#	'org.apache.ant ant-launcher'
+	'org.apache.ant ant-swing'
+	'org.apache.ant ant-testutil'
+	'org.junit_3.8.2.v3 junit'
+	'org.junit4 junit-4 junit'
+	'org.junit_4.8.2.v4 junit-4 junit'
+)
+
+ALL_OS='aix hpux linux macosx qnx solaris win32'
+ALL_WS='carbon cocoa gtk motif photon win32 wpf'
+ALL_ARCH='alpha arm ia64 mips mipsel PA_RISC ppc ppc64 s390 s390x sparc sparc64 x86 x86_64'
+
+buildDir="${S}/build/eclipse-${BUILD_LABEL}-src"
+
+pkg_setup() {
+	ws='gtk'
+	if use x86 ; then os='linux' ; arch='x86'
+	elif use amd64 ; then os='linux' ; arch='x86_64'
+	fi
+
+	java-pkg-2_pkg_setup
+
+	if use doc ; then
+		ewarn "Having the 'doc' USE flag enabled greatly increases the build time."
+		ewarn "You might want to disable it for ${PN} if you don't need it."
+	fi
+}
+
+src_unpack() {
+	CHECKREQS_MEMORY="1536"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072"
+	else
+		CHECKREQS_DISK_BUILD="1536"
+	fi
+	check_reqs
+
+	#unpack "eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	tar -xpJf "${DISTDIR}/eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	ln -s "${DISTDIR}/eclipse-${BUILD_VER}-src.tar.bz2" "${S}/eclipse-${BUILD_LABEL}-src.tar.bz2" || die
+	cd "${S}"
+	# building with ecj fails for some reason (polluted classpath probably)
+	java-pkg_force-compiler javac
+	#sed -e 's/^\(label\|testsBuildLabel\)=.*$/\1='"${BUILD_LABEL}"'/' \
+	#		-e 's/^buildId=.*$/buildId='"${BUILD_ID}"'/' \
+	#		-i build.properties -i pdebuild.properties || die
+	eant unpack
+	cp -r "${S}/build/eclipse-${PV}-src/"* "${buildDir}/" || die "Copying sources failed"
+	rm -r "${S}/build/eclipse-${PV}-src" || die "Removing dir failed"
+	ln -s "eclipse-${BUILD_LABEL}-src" "${S}/build/eclipse-${PV}-src" || die "Creating link failed"
+
+}
+
+src_prepare() {
+	# apply patches before we start cleaning junk out
+	eant applyPatches
+
+	# fix up hardcoded runtime class paths
+	sed -e 's|/usr/lib/jvm/java/jre/lib/rt\.jar:.*$|'"$(java-config --runtime)"'|' \
+			-i {,pde}build.properties || die
+
+	# we'll handle our own dependency symlinking, so disable eclipse-build helper
+	sed -e 's/,symlinkDeps,/,/' -i build.xml || die
+	sed_xml_element 'target' -e '/name="provision.sdk"/ s|<symlinkInstalled.*\(<echo \)|\1|' \
+			-i build.xml || die
+
+	# this unpacking step appears to be unnecessary (and it doesn't work)
+	sed_xml_element 'target' -e 's/\(depends="[^"]\+\),[^",]*nestedJars/\1/' \
+			-i "${buildDir}"/plugins/*/build.xml || die
+
+	# disable building of libgnomeproxy on x86 if USE=-gnome
+	if ! use gnome ; then
+		sed_xml_element 'condition' -e '/property="build\.libgnomeproxy"/d' -i build.xml || die
+	fi
+
+	# skip compilation of SWT native libraries (we use the system-installed copies)
+	sed_xml_element 'ant' -e '/swt/d' -i build.xml || die
+
+	ebegin 'Removing plugins of irrelevant platforms'
+	local remove_os=" ${ALL_OS} " ; remove_os=${remove_os/ ${os} / }
+	remove_os=${remove_os# } ; remove_os=${remove_os% } ; remove_os=${remove_os// /'\|'}
+	local remove_ws=" ${ALL_WS} " ; remove_ws=${remove_ws/ ${ws} / }
+	remove_ws=${remove_ws# } ; remove_ws=${remove_ws% } ; remove_ws=${remove_ws// /'\|'}
+	local remove_arch=" ${ALL_ARCH} " ; remove_arch=${remove_arch/ ${arch} / }
+	remove_arch=${remove_arch# } ; remove_arch=${remove_arch% } ; remove_arch=${remove_arch// /'\|'}
+	sed_xml_element 'includes\|plugin' \
+			-e '/id="org\.eclipse\.\(core\.net\.linux\.x86\|update\.core\.linux\)"/b' \
+			-e '/os="'"${remove_os}"'"/d' -e '/ws="'"${remove_ws}"'"/d' -e '/arch="'"${remove_arch}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'remove irrelevant platforms failed'
+	eend
+
+	if ! use doc ; then
+		ebegin 'Removing documentation plugins'
+		rm -rf "${buildDir}"/plugins/*.doc{,.*}
+		eclipse_delete-plugins '.*\.doc\(\..*\|\)'
+		eend
+	fi
+
+	if ! use source ; then
+		ebegin 'Removing source plugins'
+		rm -rf "${buildDir}"/plugins/*.source{,_*}
+		eclipse_delete-plugins '.*\.source'
+		eend
+	fi
+
+	ebegin 'Linking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_create-nonosgi-dep ${dep}
+	done
+	eend
+
+	cd "${buildDir}" || die
+	epatch "${FILESDIR}/${SLOT}/hamcrest-junit-lib.patch"
+	epatch "${FILESDIR}/${SLOT}/gtk_makefile.patch"
+	epatch "${FILESDIR}/${SLOT}/iterators.patch"
+}
+
+src_compile() {
+	addpredict "/dev/random"
+	ANT_OPTS='-Xmx512M' eant -DbuildArch="${arch}"
+
+	# remove stray symlink
+	rm "${buildDir}"/installation/plugins/junit4.jar
+}
+
+src_install() {
+	local destDir="/usr/$(get_libdir)/eclipse-${SLOT}"
+
+	insinto "${destDir}"
+	shopt -s dotglob
+	doins -r "${buildDir}"/installation/* || die
+	shopt -u dotglob
+	chmod +x "${D}${destDir}"/eclipse
+	rm -f "${D}${destDir}"/libcairo-swt.so  # use the system-installed SWT libraries
+
+	# redo symlinks
+	ebegin 'Relinking dependencies'
+	local dep ; for dep in "${OSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-osgi-dep ${dep}
+	done
+	local dep ; for dep in "${NONOSGI_DEPENDENCIES[@]}" ; do
+		eclipse_relink-nonosgi-dep ${dep}
+	done
+	eend
+
+	# Install Gentoo wrapper and config
+	dobin "${FILESDIR}/${SLOT}/eclipse-${SLOT}" || die
+	insinto /etc
+	doins "${FILESDIR}/${SLOT}/eclipserc-${SLOT}" || die
+
+	# Create desktop entry
+	make_desktop_entry "eclipse-${SLOT}" "Eclipse ${PV}" "${destDir}/icon.xpm" || die
+}
+
+eclipse_create-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	bundle=$(basename "${S}/dependencyManifests/${bundle}"_*.jar .jar) || die
+	[[ ${replace} == '-' ]] && replace=${bundle}
+	einfo "  ${bundle} => ${package}" "${@}"
+	mkdir -p "${buildDir}/plugins/${bundle}" || die
+	pushd "${buildDir}/plugins/${bundle}" > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from "${package}"
+	fi
+	mkdir META-INF || die
+	cp "${S}/dependencyManifests/${bundle}.jar/META-INF/MANIFEST.MF" META-INF/ || die
+	manifest_replace META-INF/MANIFEST.MF 'Bundle-ClassPath' "$(echo *.jar | tr ' ' ',')"
+	manifest_delete META-INF/MANIFEST.MF 'Name\|SHA1-Digest'
+	# replace classpath refs to this bundle with refs to system-installed jars
+	sed_xml_element 'pathelement' -e '/path="\([^"]\+\/\)\?'"${replace//./\.}"'\.jar"/c '"$(
+			for jar in *.jar ; do
+				echo -n '<pathelement path="'"$(readlink "${jar}")"'"/>'
+			done)" -i "${buildDir}"/plugins/*/build.xml || die
+	popd > /dev/null || die
+	# include unpacked bundle in copy to bootstrap plugins dir
+	sed_xml_element 'fileset' -e '/id="orbitDeps"/ s|</fileset>|<include name="'"${bundle}/"'"/>\0|' \
+			-i "${S}/pdebuild.xml" || die
+}
+
+eclipse_create-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${buildDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+		dir=${dir%%/*}
+		local manifest=${pdir}/${dir}/META-INF/MANIFEST.MF
+		[[ -f ${manifest} ]] && manifest_delete "${manifest}" 'Name\|SHA1-Digest'
+		rm -f "${pdir}/${dir}"/META-INF/ECLIPSEF.{RSA,SF}
+	done
+}
+
+eclipse_relink-osgi-dep() {
+	local bundle=${1} replace=${2} package=${3} ; shift 3
+	einfo "  ${bundle} => ${package}" "${@}"
+	pushd "${D}${destDir}/plugins/${bundle}"_* > /dev/null || die
+	if (( ${#} )) ; then
+		local jar ; for jar in "${@}" ; do
+			java-pkg_jar-from --build-only "${package}" "${jar}.jar"
+		done
+	else
+		java-pkg_jar-from --build-only "${package}"
+	fi
+	popd > /dev/null || die
+}
+
+eclipse_relink-nonosgi-dep() {
+	local bundle=${1} package=${2} ; shift 2
+	local pdir=${D}${destDir}/plugins
+	local jar ; for jar in "${@:-${package}}" ; do
+		local dir=$(dirname "$(grep -ho "${bundle//./\.}"'\(_[^/=]*\)\?/\([^/=]*/\)*'"${jar}"'\.jar' \
+				"${S}"/{,jdt}nonosgidependencies.properties)") || die
+		einfo "  ${dir}/${jar}.jar => ${package}"
+		mkdir -p "${pdir}/${dir}" || die
+		java-pkg_jar-from --build-only "${package}" "${jar}.jar" "${pdir}/${dir}/${jar}.jar"
+	done
+}
+
+# Removes feature.xml references to plugins matching ${1}.
+eclipse_delete-plugins() {
+	sed_xml_element 'includes\|plugin' -e '/id="'"${1}"'"/d' \
+			-i "${buildDir}"/features/*/feature.xml "${S}"/eclipse-build-feature/feature.xml \
+		|| die 'eclipse_delete-plugins failed'
+}
+
+# Prints the first value from manifest file ${1} whose key matches regex ${2},
+# unfolding as necessary.
+manifest_get() {
+	sed -n -e '/^\('"${2}"'\): /{h;:A;$bB;n;/^ /!bB;H;bA};d;:B;g;s/^[^:]*: //;s/\n //g;p;q' "${1}" \
+		|| die 'manifest_get failed'
+}
+
+# Deletes values from manifest file ${1} whose keys match regex ${2}, taking
+# into account folding.
+manifest_delete() {
+	sed -n -e ':A;/^\('"${2}"'\): /{:B;n;/^ /!{bA};bB};p' -i "${1}" \
+		|| die 'manifest_delete failed'
+}
+
+# Replaces the value for key ${2} in the first section of manifest file ${1}
+# with ${3}, or adds the key-value pair to that section if the key was absent.
+manifest_replace() {
+	LC_ALL='C' awk -v key="${2}" -v val="${3}" '
+function fold(s,  o, l, r) {
+	o = 2 ; l = length(s) - 1 ; r = substr(s, 1, 1)
+	while (l > 69) { r = r substr(s, o, 69) "\n " ; o += 69 ; l -= 69 }
+	return r substr(s, o)
+}
+BEGIN { FS = ": " }
+f { print ; next }
+i { if ($0 !~ "^ ") { f = 1 ; print } ; next }
+$1 == key { print fold(key FS val) ; i = 1 ; next }
+/^\r?$/ { print fold(key FS val) ; print ; f = 1 ; next }
+{ print }
+END { if (!f) { print fold(key FS val) } }
+' "${1}" > "${1}-" && mv "${1}"{-,} || die 'manifest_replace failed'
+}
+
+# Executes sed over each XML element with a name matching ${1}, rather than
+# over each line. The entire element (and its children) may be removed with the
+# 'd' command, or they may be edited using all the usual sed foo. Basically,
+# the script argument will be executed only for elements matching ${1}, and the
+# sed pattern space will consist of the entire element, including any nested
+# elements. Note that this is not perfect and requires no more than one XML
+# element per line to be reliable.
+sed_xml_element() {
+	local elem=${1} ; shift
+	sed -e '/<\('"${elem}"'\)\([> \t]\|$\)/{:_1;/>/!{N;b_1};/\/>/b_3' \
+			-e ':_2;/<\/\('"${elem}"'\)>/!{N;b_2};b_3};b;:_3' "${@}"
+}

dev-util/eclipse-sdk/eclipse-sdk-3.7.1.ebuild

+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="2"
+WANT_ANT_TASKS="ant-nodeps"
+
+# eclipse-build is too complicated for automatic fixing
+# if there are any fixes we should create patches
+# and push them upstream
+JAVA_PKG_BSFIX="off"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+BUILD_VER="3.7.1"
+BUILD_ID="I20110909-1335"
+BUILD_LABEL="${BUILD_VER}-${BUILD_ID}"
+ECLIPSE_BUILD_VER="9e028fbc74e844e96a6fd944d7d4f68909283a5d"
+S="${WORKDIR}/org.eclipse.linuxtools.eclipse-build-${ECLIPSE_BUILD_VER}/eclipse-build"
+
+DESCRIPTION="Eclipse SDK"
+HOMEPAGE="http://www.eclipse.org/eclipse/"
+BASE_URI="http://download.eclipse.org/technology/linuxtools/eclipse-build/3.7.x_Indigo/"
+SRC_URI="${BASE_URI}eclipse-${BUILD_VER}-src.tar.bz2
+	http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.eclipse-build.git/snapshot/org.eclipse.linuxtools.eclipse-build-${ECLIPSE_BUILD_VER}.tar.bz2 -> eclipse-build-${ECLIPSE_BUILD_VER}.tar.bz2"
+#	${BASE_URI}eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+
+LICENSE="EPL-1.0"
+RESTRICT="mirror"
+SLOT="3.7"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc gnome source"
+
+# ant dependencies should really be >=1.8.2
+CDEPEND=">=dev-java/swt-${PV%.0}_rc4:${SLOT}
+	>=dev-java/ant-1.8.1
+	>=dev-java/asm-3.3.1:3
+	>=dev-java/commons-codec-1.3
+	>=dev-java/commons-el-1.0
+	>=dev-java/commons-httpclient-3.1:3
+	>=dev-java/commons-logging-1.0.4
+	>=dev-java/hamcrest-core-1.1
+	>=dev-java/icu4j-4.4.2:4.4
+	>=dev-java/jsch-0.1.41
+	>=dev-java/junit-3.8.2:0
+	>=dev-java/junit-4.8.2:4
+	>=dev-java/lucene-2.9.1:2.9
+	>=dev-java/lucene-analyzers-2.9.1:2.9
+	>=dev-java/sat4j-core-2.3.0:2
+	>=dev-java/sat4j-pseudo-2.3.0:2
+	dev-java/tomcat-servlet-api:2.5
+	>=www-servers/tomcat-7:7
+	java-virtuals/jetty-server:6
+	x86? ( gnome? ( gnome-base/gconf ) )"
+RDEPEND="${CDEPEND}
+	>=virtual/jre-1.5"
+# ant dependencies should really be >=1.8.2
+DEPEND="${CDEPEND}
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	>=dev-java/ant-antlr-1.8.1
+	>=dev-java/ant-apache-bcel-1.8.1
+	>=dev-java/ant-apache-bsf-1.8.1
+	>=dev-java/ant-apache-log4j-1.8.1
+	>=dev-java/ant-apache-oro-1.8.1
+	>=dev-java/ant-apache-regexp-1.8.1
+	>=dev-java/ant-apache-resolver-1.8.1
+	>=dev-java/ant-apache-xalan2-1.8.1
+	>=dev-java/ant-commons-logging-1.8.1
+	>=dev-java/ant-commons-net-1.8.1
+	>=dev-java/ant-core-1.8.1
+	>=dev-java/ant-javamail-1.8.1
+	>=dev-java/ant-jdepend-1.8.1
+	>=dev-java/ant-jmf-1.8.1
+	>=dev-java/ant-jsch-1.8.1
+	>=dev-java/ant-junit-1.8.1
+	>=dev-java/ant-junit4-1.8.1
+	>=dev-java/ant-swing-1.8.1
+	>=dev-java/ant-testutil-1.8.1
+	>=virtual/jdk-1.6"
+#	>=dev-java/ant-launcher-1.8.1
+
+OSGI_DEPENDENCIES=(
+	'com.ibm.icu - icu4j-4.4'
+	'com.jcraft.jsch - jsch'
+	'javax.servlet - tomcat-servlet-api-2.5 servlet-api'
+#	'javax.servlet tomcat6-servlet-2.5-api tomcat-servlet-api-2.5 servlet-api'
+	'javax.servlet.jsp - tomcat-servlet-api-2.5 jsp-api'
+#	'javax.servlet.jsp tomcat6-jsp-2.1-api tomcat-servlet-api-2.5 jsp-api'
+	'org.apache.commons.codec commons-codec commons-codec'
+	'org.apache.commons.el apache-commons-el-1.0 commons-el'
+	'org.apache.commons.httpclient - commons-httpclient-3'
+#	'org.apache.commons.httpclient jakarta-commons-httpclient-3.1 commons-httpclient-3'
+	'org.apache.commons.logging apache-commons-logging commons-logging'
+	'org.apache.jasper - tomcat-7 jasper jasper-el'
+	'org.apache.lucene.core - lucene-2.9'
+#	'org.apache.lucene.core lucene lucene-2.9'
+	'org.apache.lucene.analysis - lucene-analyzers-2.9'
+#	'org.apache.lucene.analysis lucene-analyzers lucene-analyzers-2.9'
+	'org.hamcrest.core - hamcrest-core'
+	'org.mortbay.jetty.server - jetty-6 jetty'
+#	'org.mortbay.jetty.server jetty-6.1.26 jetty-6 jetty'
+	'org.mortbay.jetty.util - jetty-6 jetty-util'
+#	'org.mortbay.jetty.util jetty-util-6.1.26 jetty-6 jetty-util'
+	'org.objectweb.asm - asm-3'
+	'org.sat4j.core - sat4j-core-2'
+#	'org.sat4j.core org.sat4j.core sat4j-core-2'
+	'org.sat4j.pb - sat4j-pseudo-2'
+#	'org.sat4j.pb org.sat4j.pb sat4j-pseudo-2'
+)
+NONOSGI_DEPENDENCIES=(
+	'org.apache.ant ant-antlr'
+	'org.apache.ant ant-apache-bcel'
+	'org.apache.ant ant-apache-bsf'
+	'org.apache.ant ant-apache-log4j'
+	'org.apache.ant ant-apache-oro'
+	'org.apache.ant ant-apache-regexp'
+	'org.apache.ant ant-apache-resolver'
+	'org.apache.ant ant-apache-xalan2'
+	'org.apache.ant ant-commons-logging'
+	'org.apache.ant ant-commons-net'
+	'org.apache.ant ant-core ant ant-launcher'
+	'org.apache.ant ant-javamail'
+	'org.apache.ant ant-jdepend'
+	'org.apache.ant ant-jmf'
+	'org.apache.ant ant-jsch'
+	'org.apache.ant ant-junit'
+	'org.apache.ant ant-junit4'
+#	'org.apache.ant ant-launcher'
+	'org.apache.ant ant-swing'
+	'org.apache.ant ant-testutil'
+	'org.junit_3.8.2.v3 junit'
+	'org.junit4 junit-4 junit'
+	'org.junit_4.8.2.v4 junit-4 junit'
+)
+
+ALL_OS='aix hpux linux macosx qnx solaris win32'
+ALL_WS='carbon cocoa gtk motif photon win32 wpf'
+ALL_ARCH='alpha arm ia64 mips mipsel PA_RISC ppc ppc64 s390 s390x sparc sparc64 x86 x86_64'
+
+pkg_pretend() {
+	CHECKREQS_MEMORY="1536M"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072M"
+	else
+		CHECKREQS_DISK_BUILD="1536M"
+	fi
+	check-reqs_pkg_pretend
+}
+
+buildDir="${S}/build/eclipse-${BUILD_VER}-src"
+
+pkg_setup() {
+	CHECKREQS_MEMORY="1536M"
+	if use doc ; then
+		CHECKREQS_DISK_BUILD="3072M"
+	else
+		CHECKREQS_DISK_BUILD="1536M"
+	fi
+
+	check-reqs_pkg_setup
+	ws='gtk'
+	if use x86 ; then os='linux' ; arch='x86'
+	elif use amd64 ; then os='linux' ; arch='x86_64'
+	fi
+
+	java-pkg-2_pkg_setup
+
+	if use doc ; then
+		ewarn "Having the 'doc' USE flag enabled greatly increases the build time."
+		ewarn "You might want to disable it for ${PN} if you don't need it."
+	fi
+}
+
+src_unpack() {
+	unpack "eclipse-build-${ECLIPSE_BUILD_VER}.tar.bz2"
+	#tar -xpJf "${DISTDIR}/eclipse-build-${ECLIPSE_BUILD_VER}.tar.xz"
+	ln -s "${DISTDIR}/eclipse-${BUILD_VER}-src.tar.bz2" "${S}/eclipse-${BUILD_VER}-src.tar.bz2" || die
+
+	cd "${S}"
+	# building with ecj fails for some reason (polluted classpath probably)
+	java-pkg_force-compiler javac
+	sed -e 's/^\(label\|testsBuildLabel\)=.*$/\1='"${BUILD_VER}"'/' \
+			-e 's/^buildId=.*$/buildId='"${BUILD_ID}"'/' \
+			-i build.properties -i pdebuild.properties || die
+	eant unpack
+}
+
+src_prepare() {
+	# apply patches before we start cleaning junk out
+	eant applyPatches
+
+	# fix up hardcoded runtime class paths
+	sed -e 's|/usr/lib/jvm/java/jre/lib/rt\.jar:.*$|'"$(java-config --runtime)"'|' \
+			-i {,pde}build.properties || die
+
+	# we'll handle our own dependency symlinking, so disable eclipse-build helper
+	sed -e 's/,symlinkDeps,/,/' -i build.xml || die
+	sed_xml_element 'target' -e '/name="provision.sdk"/ s|<symlinkInstalled.*\(<echo \)|\1|' \
+			-i build.xml || die
+
+	# this unpacking step appears to be unnecessary (and it doesn't work)
+	sed_xml_element 'target' -e 's/\(depends="[^"]\+\),[^",]*nestedJars/\1/' \
+			-i "${buildDir}"/plugins/*/build.xml || die
+
+	# disable building of libgnomeproxy on x86 if USE=-gnome
+	if ! use gnome ; then
+		sed_xml_element 'condition' -e '/property="build\.libgnomeproxy"/d' -i build.xml || die
+	fi
+
+	# skip compilation of SWT native libraries (we use the system-installed copies)
+	sed_xml_element 'ant' -e '/swt/d' -i build.xml || die
+
+	ebegin 'Removing plugins of irrelevant platforms'
+	local remove_os=" ${ALL_OS} " ; remove_os=${remove_os/ ${os} / }
+	remove_os=${remove_os# } ; remove_os=${remove_os% } ; remove_os=${remove_os// /'\|'}
+	local remove_ws=" ${ALL_WS} " ; remove_ws=${remove_ws/ ${ws} / }
+	remove_ws=${remove_ws# } ; remove_ws=${remove_ws% } ; remove_ws=${remove_ws// /'\|'}
+	local remove_arch=" ${ALL_ARCH} " ; remove_arch=${remove_arch/ ${arch} / }
+	remove_arch=${remove_arch# } ; remove_arch=${remove_arch% } ; remove_arch=${remove_arch// /'\|'}
+	sed_xml_element 'includes\|plugin' \