From 07ac0436c7c61c5f1d3758cd254cf48289bb723a Mon Sep 17 00:00:00 2001 From: Krzysztof Daniel Date: Fri, 25 Jan 2013 19:33:06 +0100 Subject: [PATCH] RHBZ#832053: Ship SWT and other native plugins as folders. --- eclipse.spec | 79 +++++++++++++++++----------------------------------- 1 file changed, 25 insertions(+), 54 deletions(-) diff --git a/eclipse.spec b/eclipse.spec index 34ffd5b..891522e 100644 --- a/eclipse.spec +++ b/eclipse.spec @@ -65,7 +65,7 @@ fi; Summary: An open, extensible IDE Name: eclipse Version: %{eclipse_version} -Release: 0.4.git20121217%{?dist} +Release: 0.5.git20121217%{?dist} License: EPL Group: Development/Tools URL: http://www.eclipse.org/ @@ -551,6 +551,17 @@ mkdir -p rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/%{ecli sed -i -e "s/org.apache.jasper.glassfish/org.glassfish.web.javax.servlet.jsp/" eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml sed -i -e "s/javax.annotation/org.apache.geronimo.specs.geronimo-annotation_1.1_spec/" eclipse.platform.common/bundles/org.eclipse.platform.doc.isv/pom.xml +#ensure that bundles with *.so libs are dirs, so no *.so is extracted into user.home +for f in `find eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.* -name MANIFEST.MF` ; do + echo -e "Eclipse-BundleShape: dir\n\n" >> $f; +done +for f in `find eclipse.platform.resources/bundles/org.eclipse.core.filesystem.linux.* -name MANIFEST.MF` ; do + echo -e "Eclipse-BundleShape: dir\n\n" >> $f; +done +for f in `find eclipse.platform.team/bundles/org.eclipse.core.net/fragments -name MANIFEST.MF` ; do + echo -e "Eclipse-BundleShape: dir\n\n" >> $f; +done + %build #This is the lowest value where the build succeeds. 512m is not enough. export MAVEN_OPTS="-Xmx700m -XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState" @@ -641,22 +652,7 @@ pushd eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.f ###################### # Extract jdt and pde to dropins ###################### -# do the initializer magic - initialize dropins just in case -mkdir -p eclipse/dropins -cp ../../../../../../../../rt.equinox.incubator/framework/bundles/org.eclipse.equinox.initializer/target/org.eclipse.equinox.initializer-1.0.0-SNAPSHOT.jar eclipse/dropins pushd eclipse - ./eclipse -application org.eclipse.equinox.initializer.configInitializer -justThisArchOSWS -fileInitializer ../../../../../../../../../extract_patterns.txt - rm dropins/org.eclipse.equinox.initializer-1.0.0-SNAPSHOT.jar - ./eclipse -application org.eclipse.equinox.p2.reconciler.application -# Create file listings for the extracted shared libraries -echo -n "" > %{_builddir}/%{buildsubdir}/%{name}-platform.install; -for id in `ls configuration/org.eclipse.osgi/bundles`; do - if [ "Xconfiguration" = $(echo X`find configuration/org.eclipse.osgi/bundles/$id -name libswt\*.so` | sed "s:/.*::") ]; then - echo "%verify(not mtime) %{_libdir}/%{name}/configuration/org.eclipse.osgi/bundles/$id" > %{_builddir}/%{buildsubdir}/%{name}-swt.install; - else - echo "%verify(not mtime) %{_libdir}/%{name}/configuration/org.eclipse.osgi/bundles/$id" >> %{_builddir}/%{buildsubdir}/%{name}-platform.install; - fi -done #symlink what should be symlinked pushd plugins @@ -802,13 +798,7 @@ cd eclipse rm -rf configuration/org.eclipse.core.runtime rm -rf configuration/org.eclipse.equinox.app rm -rf configuration/org.eclipse.update/* - -find configuration -type d -name "data" -exec rm -rf `pwd`{} \; -find configuration -type f -name "*.log" -exec rm `pwd`{} \; - -pushd configuration/org.eclipse.osgi -rm -rf .bundledata* .lazy* .manager .state* -popd +rm -rf configuration/org.eclipse.osgi #symlink jdt & sdk pushd dropins/jdt/plugins @@ -909,10 +899,14 @@ pushd $RPM_BUILD_ROOT/usr/bin/ ln -s %{_libdir}/%{name}/eclipse popd +#SWT is now a folder, but we need to provide jars for others that depend on it. pushd $RPM_BUILD_ROOT/%{_libdir}/%{name} -SWT_JAR=`ls $RPM_BUILD_ROOT/%{_libdir}/%{name}/plugins | grep swt.gtk` - ln -s %{_libdir}/%{name}/plugins/${SWT_JAR} swt.jar - ln -s %{_libdir}/%{name}/plugins/${SWT_JAR} swt-gtk.jar +pushd plugins +SWT_JAR=`ls | grep swt.gtk` +zip "${SWT_JAR}.jar" ${SWT_JAR}/* +popd + ln -s %{_libdir}/%{name}/plugins/"${SWT_JAR}.jar" swt.jar + ln -s %{_libdir}/%{name}/plugins/"${SWT_JAR}.jar" swt-gtk.jar popd #eclipse ini @@ -926,21 +920,7 @@ popd pushd $RPM_BUILD_ROOT%{_libdir}/%{name} - rm -rf icon.xpm - -popd - -# Remove state files -pushd $RPM_BUILD_ROOT%{_libdir}/%{name}/configuration/org.eclipse.osgi/ - rm -rf .bundledata* .lazy* .manager .state* -popd - -# Symlinks to the SWT JNI shared libraries in %%{_libdir}/eclipse -pushd $RPM_BUILD_ROOT%{_libdir}/%{name} -for lib in $(find configuration -name libswt\*.so); do - ln -s $lib `basename $lib` -done popd # Temporary fix until https://bugs.eclipse.org/294877 is resolved @@ -1076,19 +1056,10 @@ fi # workaround for rpm bug, can be removed in F-20 Fixes the problem with efj being directory instead of launcher rm -rf %{_bindir}/efj/ -%if %{initialize} -%files swt -f %{name}-swt.install -%else + %files swt -%endif %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/plugins -%if %{initialize} -%{_libdir}/%{name}/libswt-*.so -%dir %{_libdir}/%{name}/configuration -%dir %{_libdir}/%{name}/configuration/org.eclipse.osgi -%dir %{_libdir}/%{name}/configuration/org.eclipse.osgi/bundles -%endif %{_libdir}/%{name}/notice.html %{_libdir}/%{name}/eclipse.ini %{_libdir}/%{name}/.options @@ -1099,11 +1070,8 @@ rm -rf %{_bindir}/efj/ %{_libdir}/%{name}/swt.jar %{_libdir}/java/swt.jar -%if %{initialize} -%files platform -f %{name}-platform.install -%else + %files platform -%endif %attr(0755,root,root) %{_bindir}/%{name} %{_libdir}/%{name}/.eclipseproduct %config %{_libdir}/%{name}/eclipse.ini @@ -1348,6 +1316,9 @@ rm -rf %{_bindir}/efj/ %{_mavendepmapfragdir}/%{name}-equinox-osgi %changelog +* Fri Jan 25 2013 Krzysztof Daniel 1:4.2.2-0.5.git20121217 +- RHBZ#832053: Ship SWT and other native plugins as folders. + * Thu Jan 17 2013 Krzysztof Daniel 1:4.2.2-0.4.git20121217 - RHBZ#893774: file shipped twice in eclipse-platform and eclipse-equinox-osgi