summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul de Vrieze <pauldv@gentoo.org>2009-03-18 13:27:06 +0000
committerPaul de Vrieze <pauldv@gentoo.org>2009-03-18 13:27:06 +0000
commit0f47c7a50dcd3ced35785ef16e654a0d4f9653d3 (patch)
tree5864098e9ebf4c70690120fc84deed5b20001d74
parentHave a proper version of the eclipse sdk (diff)
downloadpauldv-0f47c7a50dcd3ced35785ef16e654a0d4f9653d3.tar.gz
pauldv-0f47c7a50dcd3ced35785ef16e654a0d4f9653d3.tar.bz2
pauldv-0f47c7a50dcd3ced35785ef16e654a0d4f9653d3.zip
Remove dependencies that are again bundled
svn path=/trunk/overlay/; revision=91
-rw-r--r--dev-util/eclipse-sdk/Manifest1
-rw-r--r--dev-util/eclipse-sdk/eclipse-sdk-3.4.2-r1.ebuild391
2 files changed, 392 insertions, 0 deletions
diff --git a/dev-util/eclipse-sdk/Manifest b/dev-util/eclipse-sdk/Manifest
index bcda02f..612a730 100644
--- a/dev-util/eclipse-sdk/Manifest
+++ b/dev-util/eclipse-sdk/Manifest
@@ -10,5 +10,6 @@ AUX 3.4/fedora/eclipse-pde.build-add-package-build.patch 11604 RMD160 ba63781fa7
DIST eclipse-sourceBuild-srcIncluded-3.4.1.zip 106290656 RMD160 b5244cd94199b2d359e7e4d1f93018c9050e29de SHA1 484cdf90c05fab47492f7d2ce1fff64422373a9b SHA256 cb451bcc8866ab289b3a322e17eda7d20429463e8b3f329f66626b45b0fd6824
DIST eclipse-sourceBuild-srcIncluded-3.4.2.zip 105843305 RMD160 d4bb5e15b484ac955ba342336de70b3d0c14ac6d SHA1 2a093a119def58b4df43e672c4d75c2f62fb0b16 SHA256 0c0df3b317a0c5745dfb7d5714ea3754b1f2d23f08c1f59713c812dd0bfa79d7
EBUILD eclipse-sdk-3.4.1.ebuild 15721 RMD160 1a283708028e962c35e2da72148f327793ad570b SHA1 ff4e0aa67d25182b280839f7415227274486a447 SHA256 ba38a377d1f450a704bc4e098288ebce4ec47ebee3ba975b75cda6a3c55ceb51
+EBUILD eclipse-sdk-3.4.2-r1.ebuild 15420 RMD160 93bdf99a6a6004d94d1699be7444de5b73bd281e SHA1 4bd6e7bce9b2b894e8bc548213ebc4830fc15f4c SHA256 c9e65ba99963b5b56ee1b52c2c7d7b9b09e9aad5fb360fe120d3c271a89aadf3
EBUILD eclipse-sdk-3.4.2.ebuild 15717 RMD160 c5e44607705d812a6925994e8873494ab2a344b1 SHA1 4393bd75c2ac1195fad147e8d724450d7cea55d3 SHA256 9e6cb767aeb5069ee50567b0784a87917aa9adca87c4c97eb5338062ba288fec
MISC NOTES 109 RMD160 46488535b78316726bcd68db93ba92f6660dce66 SHA1 e329071628cc4ac1401faa44c8e7976597cba2c6 SHA256 c914208f0ac7675bd3b6c9d306387dca733554bb771eb1add872c7b9c929dfba
diff --git a/dev-util/eclipse-sdk/eclipse-sdk-3.4.2-r1.ebuild b/dev-util/eclipse-sdk/eclipse-sdk-3.4.2-r1.ebuild
new file mode 100644
index 0000000..5903bb3
--- /dev/null
+++ b/dev-util/eclipse-sdk/eclipse-sdk-3.4.2-r1.ebuild
@@ -0,0 +1,391 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# Jetty and Jasper have to stay bundled for now, until someone does some work on them.
+
+# ECF also has to stay bundled due to a chicken and egg situation. We could use
+# the bundled version to build Eclipse and then build ECF later but it's still
+# a pain to build without using chewi-overlay.
+
+# Current patches are hard to maintain when revbumping.
+# Two solutions:
+# 1) Split patches so that there is one per file
+# 2) Use sed, better solution I would say.
+
+EAPI="1"
+
+JAVA_ANT_DISABLE_ANT_CORE_DEP="true"
+WANT_ANT_TASKS="ant-nodeps"
+
+inherit java-pkg-2 java-ant-2 check-reqs
+
+DMF="R-${PV}-200902111700"
+MY_A="eclipse-sourceBuild-srcIncluded-${PV}.zip"
+
+DESCRIPTION="Eclipse Tools Platform"
+HOMEPAGE="http://www.eclipse.org/"
+SRC_URI="http://download.eclipse.org/eclipse/downloads/drops/${DMF}/${MY_A}"
+
+SLOT="3.4"
+LICENSE="EPL-1.0"
+IUSE="doc java6 source"
+KEYWORDS="~amd64 ~x86"
+
+S="${WORKDIR}"
+PATCHDIR="${FILESDIR}/${SLOT}"
+ECLIPSE_DIR="/usr/$(get_libdir)/eclipse-${SLOT}"
+BUILDPARSER="/usr/$(get_libdir)/javatoolkit/bin/buildparser"
+
+CDEPEND="dev-java/swt:${SLOT}
+ dev-java/ant-eclipse-ecj:${SLOT}
+ dev-java/cldc-api:1.1"
+
+RDEPEND="${CDEPEND}
+ ${JAVA_ANT_E_DEPEND}
+ java6? ( >=virtual/jre-1.6 )
+ !java6? ( >=virtual/jre-1.5 )"
+
+DEPEND="${CDEPEND}
+ !java6? ( >=virtual/jdk-1.5 )
+ java6? ( >=virtual/jdk-1.6 )
+ >=dev-java/javatoolkit-0.3
+ app-arch/unzip
+ app-arch/zip"
+
+JAVA_PKG_BSFIX="off"
+
+pkg_setup() {
+ java-pkg-2_pkg_setup
+
+ CHECKREQS_MEMORY="512"
+ check_reqs
+
+ if use doc ; then
+ ewarn "Having the doc USE flag enabled greatly increases the build time. You might"
+ ewarn "want to disable it for ${PN} if you don't need it."
+ fi
+
+ eclipsearch=${ARCH}
+ use amd64 && eclipsearch="x86_64"
+}
+
+src_unpack() {
+ unpack ${A}
+ patch-apply
+ remove-bundled-stuff
+
+ while read line; do
+ java-ant_rewrite-classpath "${line}" > /dev/null
+ done < <(find "${S}" -type f -name "build.xml")
+}
+
+src_compile() {
+ java-pkg_force-compiler ecj-${SLOT}
+
+ local bootclasspath=$(java-config --runtime)
+ local options="-q -Dnobootstrap=true -Dlibsconfig=true -Dbootclasspath=${bootclasspath} -DinstallOs=linux \
+ -DinstallWs=gtk -DinstallArch=${eclipsearch} -Djava5.home=$(java-config --jdk-home)"
+
+ use java6 && options="${options} -DJavaSE-1.6=${bootclasspath}"
+
+ ANT_OPTS="-Xmx512M" eant ${options}
+
+ # Generate P2 metadata.
+ `java-config -J` -jar eclipse/plugins/org.eclipse.equinox.launcher_*.jar -data workspace \
+ -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator -flavor tooling \
+ -metadataRepositoryName "Gentoo Eclipse" -artifactRepositoryName "Gentoo Eclipse" \
+ -metadataRepository "file:eclipse/metadata" -artifactRepository "file:eclipse/metadata" \
+ -root "Gentoo Eclipse SDK" -rootVersion "${PV}" -source eclipse -append -publishArtifacts || die
+}
+
+src_install() {
+ # Root files don't get included by P2.
+ insinto "${ECLIPSE_DIR}"
+ doins -r features/org.eclipse.platform/rootfiles/{.eclipseproduct,*}
+
+ # Workaround https://bugs.eclipse.org/bugs/show_bug.cgi?id=241430...
+ rm -rf eclipse/configuration/.settings || die
+
+ # Install using P2.
+ `java-config -J` -Declipse.p2.data.area="file:${D}/${ECLIPSE_DIR}/p2" \
+ -jar eclipse/plugins/org.eclipse.equinox.launcher_*.jar -data workspace \
+ -application org.eclipse.equinox.p2.director.app.application -flavor tooling \
+ -metadataRepository "file:eclipse/metadata" -artifactRepository "file:eclipse/metadata" \
+ -installIU "Gentoo Eclipse SDK" -version "${PV}" -p2.os linux -p2.ws gtk -p2.arch ${eclipsearch} \
+ -profile SDKProfile -profileProperties org.eclipse.update.install.features=true \
+ -destination "${D}/${ECLIPSE_DIR}" -bundlepool "${D}/${ECLIPSE_DIR}" -roaming || die
+
+ cd "${D}/${ECLIPSE_DIR}" || die
+
+ # Delete unneeded files.
+ rm -rf p2/org.eclipse.equinox.p2.core || die
+
+ # Restore symlinks. P2 has ignored them.
+ rm -rf plugins/org.apache.ant_*/{bin,lib} || die
+ ln -snf /usr/share/ant/bin plugins/org.apache.ant_*/ || die
+ ln -snf /usr/share/ant/lib plugins/org.apache.ant_*/ || die
+ cp -af "${S}"/plugins/org.junit_*/*.jar plugins/org.junit_*/ || die
+# cp -af "${S}"/plugins/org.junit4/*.jar plugins/org.junit4_*/ || die
+
+ # Install startup script.
+ dobin "${FILESDIR}/${SLOT}/eclipse-${SLOT}" || die
+
+ # Install global rc script.
+ insinto /etc
+ doins "${FILESDIR}/${SLOT}/eclipserc-${SLOT}" || die
+
+ # Install icon and make desktop entry.
+ newicon "${S}/features/org.eclipse.equinox.executable/bin/gtk/linux/x86/icon.xpm" eclipse.xpm || die
+ make_desktop_entry eclipse-${SLOT} "Eclipse ${PV}" eclipse.xpm || die
+}
+
+pkg_postinst() {
+ einfo "Welcome to Eclipse ${PV} (Ganymede)!"
+ einfo " "
+ einfo "You can now install plugins via Update Manager without any"
+ einfo "tweaking. This is the recommended way to install new features for Eclipse."
+ einfo " "
+ einfo "Please read http://gentoo-wiki.com/Eclipse"
+ einfo "It contains a lot of useful information and help about Eclipse on Gentoo."
+ einfo " "
+ einfo "The FileInitializer Plugin is no longer integrated."
+ einfo "If you need it, get org.eclipse.equinox.initializer_x.y.z.jar from:"
+ einfo " http://download.eclipse.org/eclipse/equinox/"
+}
+
+# -----------------------------------------------------------------------------
+# Helper functions
+# -----------------------------------------------------------------------------
+
+patch-apply() {
+ # Optimize launcher build.
+ unzip -q plugins/org.eclipse.platform/launchersrc.zip library/gtk/make_linux.mak || die
+ sed -i -r "s/CFLAGS = -g -s\b/CFLAGS =/;/CFLAGS =/a\\\\t${CFLAGS}\\\\" library/gtk/make_linux.mak || die
+ zip -qrm plugins/org.eclipse.platform/launchersrc.zip library || die
+
+ # Avoid doing any unnecessary copying or archiving at the end of the build.
+ sed -r -i '/<exec .*\bexecutable="tar"/,/<delete /d' {assemble,package}.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+ sed -r -i '/<delete /,/<delete .*\bdir=/d' build.xml || die
+ mkdir -p tmp/eclipse || die
+ ln -snf tmp/eclipse eclipse || die
+
+ if ! use java6; then
+ sed -r '/<ant .*\/org\.eclipse\.jdt\.(apt\.pluggable\.core|compiler\.(apt|tool))(\.source)?"/,/<\/ant>/d' \
+ -i features/org.eclipse.jdt{,.source}/build.xml || die
+ sed -r '/id="org\.eclipse\.jdt\.(apt\.pluggable\.core|compiler\.(apt|tool))"/,/<plugin /d' \
+ -i features/org.eclipse.jdt/feature.xml || die
+ sed -r '/id="org\.eclipse\.jdt\.(apt\.pluggable\.core|compiler\.(apt|tool))\.source"/d' \
+ -i features/org.eclipse.jdt.source/feature.xml || die
+ sed -r -e '/<customGather .*\/org\.eclipse\.jdt\.(apt\.pluggable\.core|compiler\.(apt|tool))(\.source)?"/d' \
+ -e '/value="org\.eclipse\.jdt\.(apt\.pluggable\.core|compiler\.(apt|tool))(\.source)?_/,/eclipse\.plugins/d' \
+ -i assemble.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+ fi
+
+ # Miscellaneous patches.
+ epatch "${PATCHDIR}/eclipse_build-libs.diff"
+ epatch "${PATCHDIR}/eclipse-c-warning.patch"
+
+ # JNI.
+ sed -i '/value="x86"/d' plugins/org.eclipse.update.core.linux/src/build.xml || die
+
+ # Following adds an additional classpath when building JSPs.
+ sed -i '/<path id="@dot\.classpath".*/a<pathelement path="${gentoo.classpath}" />' \
+ plugins/org.eclipse.help.webapp/build{,JSPs}.xml || die
+
+ # No warnings. Java5. Direct output to stdout.
+ find -type f -name '*.xml' -exec \
+ sed -r -e 's:"compilerArg" value=":\0-nowarn :g' \
+ -e 's:(<property name="javac(Source|Target)" value=)"1.[0-4]":\1"1.5":g' \
+ -e 's:output="[^"]+\.(txt|log)"::g' -i {} \; || die
+
+ # JDK home and CFLAGS.
+ sed -r -e "s:^(JAVA_HOME ?=).*:\1 $(java-config --jdk-home):" -e "s:^(OPT_FLAGS ?=).*:\0 ${CFLAGS}:" \
+ -i plugins/org.eclipse.core.filesystem/natives/unix/linux/Makefile || die "sed Makefile failed"
+
+ # Don't build plugins for other archs or GUI toolkits. Don't gather their sources either.
+ sed -r -e '/<ant .*\.(aix|carbon|hpux|macosx|motif|qnx|solaris|win32)[".]/,/<\/ant>/d' \
+ -e '/<ant .*\/org\.eclipse\.swt\..+(\.source)?"/,/<\/ant>/d' \
+ -i features/org.eclipse.{platform,rcp}{,.source}/build.xml || die
+
+ if ! use doc ; then
+ # Don't reference the docs. Slightly evil but it works.
+ sed -r '/<plugin/{:x;/id="[^"]*\.doc\./{:y;/\/>/d;N;by};/\/>/b;N;bx}' \
+ -i features/*/feature.xml || die
+
+ # Don't install the docs.
+ sed -r '/<customGather .*\.doc\./d' \
+ -i assemble.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+
+ # Don't build the docs.
+ sed -i '/<antcall .*\btarget="build.doc.plugins"/d' build.xml || die
+ sed -i '/<ant .*\/.*\.doc\./,/<\/ant>/d' features/*/build.xml || die
+
+ # Don't reference the doc plugins in the sources. These feature.xml files
+ # thankfully have their plugins on one line. Let's hope they stay that way.
+ sed -r '/<plugin id="[^"]*\.doc\./d' \
+ -i features/*.source/feature.xml || die
+ fi
+
+ if ! use source ; then
+ # Don't reference the sources. Slightly evil but it works.
+ sed -r '/<includes/{:x;/id="[^"]*\.source"/{:y;/\/>/d;N;by};/\/>/b;N;bx}' \
+ -i features/org.eclipse.sdk/feature.xml || die
+
+ # Don't install the sources.
+ sed -r '/<(copy|customGather) .*\.source/d' \
+ -i {assemble,package}.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+ fi
+
+ # In 3.4.1, bootclasspath was removed from here. Not sure why.
+ sed -r '/\bname="bundleBootClasspath"/s:value=":\0${bootclasspath};:' \
+ -i plugins/org.eclipse.osgi/build.xml || die
+}
+
+remove-bundled-stuff() {
+ local x
+ pushd plugins >/dev/null
+
+ # Remove pre-built binaries.
+ find "${S}/features/org.eclipse.equinox.executable" -type f -name eclipse -delete || die
+ # ..and libraries.
+ find "${S}" -type f -name '*.so' -delete || die
+ # ..and JAR files.
+ rm -f org.eclipse.osgi/{,supplement}/osgi/osgi*.jar \
+ org.eclipse.swt/extra_jars/exceptions.jar || die
+ # ..and classes.
+ rm -rf org.eclipse.jdt.core/scripts/*.class \
+ org.eclipse.osgi.{services,util}/org || die
+
+ # Unpack zipped sources for removed classes. If we unpack the sources to
+ # src like the other plugins, the build order seems to change and things
+ # break. Very bizarre. Consequently we have to adjust build.xml to
+ # install the classes and not the sources. Ugly but it works.
+ for x in services util ; do
+ unzip -q org.eclipse.osgi.${x}/src.zip -d org.eclipse.osgi.${x}/ || die
+ x=org.eclipse.osgi.${x}/build.xml
+ { rm ${x} && awk '/<target .*name="gather\.bin\.parts"/ { inside = 1 } { if (inside) { if ($0 ~ /"org\/"/) next; \
+ if ($0 ~ /<\/fileset>/) { print; print "<fileset dir=\"${basedir}/@dot/\" includes=\"org/\"/>"; inside = 0; next } } } { print }' > ${x}; } < ${x} || die
+ done
+
+ # This prebuilt class actually comes from another plugin that will be
+ # built so we can just symlink to that.
+ ln -snf "${S}"/plugins/org.eclipse.core.runtime/@dot/org/eclipse/core/runtime/IPluginDescriptor.class \
+ org.eclipse.core.runtime.compatibility.registry/classes/org/eclipse/core/runtime/IPluginDescriptor.class || die
+
+ # Reset the list of system packages to use when building.
+ EANT_GENTOO_CLASSPATH="swt:${SLOT} cldc-api:1.1"
+
+## unbundle-jar org.apache.commons.el commons-el
+## unbundle-jar org.apache.commons.logging commons-logging
+## unbundle-jar com.jcraft.jsch jsch
+## unbundle-jar com.ibm.icu icu4j
+## unbundle-jar javax.servlet tomcat-servlet-api:2.4
+## unbundle-jar javax.servlet.jsp tomcat-servlet-api:2.4
+## unbundle-jar org.apache.lucene lucene:1.9
+## unbundle-jar org.apache.lucene.analysis lucene-analyzers:1.9
+## unbundle-jar org.objectweb.asm asm:3
+## unbundle-jar org.sat4j.core sat4j-core:2
+## unbundle-jar org.sat4j.pb sat4j-pseudo:2
+##
+## # Make the junit4 case easier.
+## # ln -snf org.junit4 org.junit4_ || die
+##
+## unbundle-dir org.apache.ant ant-core,ant-nodeps lib
+## unbundle-dir org.junit junit .
+## # unbundle-dir org.junit4 junit-4 .
+##
+## # Don't include sources for junit4.
+## # sed -i '/junitsrc/d' org.junit4/customBuildCallbacks.xml || die
+##
+ # Unbundle SWT and make @dot directory to keep build happy.
+ ${BUILDPARSER} -i Bundle-ClassPath "external:$(java-pkg_getjars swt-${SLOT})" org.eclipse.swt.gtk.linux.${eclipsearch}/META-INF/MANIFEST.MF || die
+ mkdir -p org.eclipse.swt.gtk.linux.${eclipsearch}/@dot || die
+ remove-plugin-sources org.eclipse.swt.gtk.linux.${eclipsearch}
+
+ # Mark the SWT plugins as unpacked. More evilness that works.
+ sed -r '/<plugin/{:x;/id="org\.eclipse\.swt\./{:y;/\/>/s/unpack="[^"]*"/unpack="true"/;t;N;by};/\/>/b;N;bx}' \
+ -i "${S}"/features/org.eclipse.rcp/feature.xml || die
+
+ # Prevent the SWT plugin from being JAR'd.
+ sed -r '/<param .*\bvalue="org.eclipse.swt.gtk.linux.'"${eclipsearch}"'_/d' \
+ -i "${S}"/assemble.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+
+ popd >/dev/null
+}
+
+# Unbundle a directory plugin by removing its JAR files and replacing them
+# with symlinks. We don't modify the manifest because Eclipse's antRunner
+# doesn't seem to like external JARs.
+unbundle-dir() {
+ ebegin "Unbundling $1"
+ remove-plugin-sources $1
+
+ # Delete the bundled JARs and signing files.
+ rm -f "$1"_*/$3/*.jar "$1"_*/META-INF/ECLIPSE.{RSA,SF} || die
+
+ # Replace the bundled JARs with symlinks.
+ java-pkg_jar-from --into "$1"_*/$3 $2
+
+ eend 0
+}
+
+# Unbundle a JAR plugin by removing its class files and modifying its manifest
+# so that it points to external JARs instead. The plugin must remain unpacked
+# because OSGi cannot handle external JARs in packed plugins.
+unbundle-jar() {
+ ebegin "Unbundling $1"
+ remove-plugin-sources $1
+
+ # Find full plugin name and version.
+ local plugin=`echo $1_*`
+ plugin=${plugin%.jar}
+
+ # Make directory to replace JAR.
+ mkdir -p "${plugin}" || die
+ cd "${plugin}" || die
+ rm -rf * || die
+
+ # Extract what we need from the existing JAR.
+ `java-config -j` xf "../${plugin}.jar" META-INF/MANIFEST.MF plugin.{properties,xml} || die
+
+ # Apply our new classpath.
+ local classpath=$(java-pkg_getjars $2)
+ EANT_GENTOO_CLASSPATH="${EANT_GENTOO_CLASSPATH} $2"
+ ${BUILDPARSER} -i Bundle-ClassPath "external:${classpath//:/,external:}" META-INF/MANIFEST.MF || die
+
+ # The javadoc options are stored in text files and so rewriting the classpath in
+ # the ant build files has no effect. Instead, we replace plugins paths with the
+ # paths to their external JARs. Passing gentoo.classpath is too RAM-intensive.
+ sed -i -r "s:^;\.\.\/${1//./\.}[_/].*\.jar$:;${classpath//:/\:}:" ../*/*Options.txt || die
+
+ # Delete unneeded manifest entries.
+ sed -i -r "/^Name:|^SHA1-Digest:/d" META-INF/MANIFEST.MF || die
+
+ # This plugin is now unpacked. More evilness that works.
+ sed -r '/<plugin/{:x;/id="'"${1//./\.}"'"/{:y;/\/>/s/unpack="[^"]*"/unpack="true"/;t;N;by};/\/>/b;N;bx}' \
+ -i "${S}"/features/*/feature.xml || die
+
+ # Copy the whole directory instead of just a JAR.
+ sed -r "/<copy .*\/${1//./\.}/{s/<copy\b/<copydir/;s/\.jar//g;s/\bfile=/src=/;s/\btofile=/dest=/}" \
+ -i "${S}"/package.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+
+ # Delete JAR and return to previous directory.
+ rm -f "../${plugin}.jar" || die
+ cd .. || die
+
+ eend 0
+}
+
+remove-plugin-sources() {
+ use source || return
+
+ # Don't reference the sources for this plugin. These feature.xml files
+ # thankfully have their plugins on one line. Let's hope they stay that way.
+ sed -r '/<plugin id="'"${1//./\.}"'\.source"/d' \
+ -i "${S}/features"/*.source/feature.xml || die
+
+ # Don't try to install the sources either.
+ sed -r '/<(copy|copydir|customGather) .*\/'"${1//./\.}"'\.source/d' \
+ -i "${S}"/{assemble,package}.org.eclipse.sdk.linux.gtk.${eclipsearch}.xml || die
+}