[eclipse] =Fix eclipse-pdebuild script to have proper path to pde bundle.\n\nOne patch from the old e-b was mi

Krzysztof Daniel kdaniel at fedoraproject.org
Fri Aug 24 13:04:38 UTC 2012


commit c0f90a91f24b0ae51331c2eda54b12098cdaae10
Author: Krzysztof Daniel <kdaniel at redhat.com>
Date:   Fri Aug 24 15:03:39 2012 +0200

    =Fix eclipse-pdebuild script to have proper path to pde bundle.\n\nOne patch from the old e-b was missing

 eclipse-pdebuild-add-target.patch |  300 +++++++++++++++++++++++++++++++++++++
 eclipse.spec                      |   15 ++-
 2 files changed, 313 insertions(+), 2 deletions(-)
---
diff --git a/eclipse-pdebuild-add-target.patch b/eclipse-pdebuild-add-target.patch
new file mode 100644
index 0000000..c022ea6
--- /dev/null
+++ b/eclipse-pdebuild-add-target.patch
@@ -0,0 +1,300 @@
+### Eclipse Workspace Patch 1.0
+#P org.eclipse.pde.build
+--- /dev/null
++++ eclipse.pde.build/org.eclipse.pde.build/templates/package-build/prepare-build-dir.sh
+@@ -0,0 +1,105 @@
++#!/bin/sh
++
++if [ $# -lt 2 ]; then
++  echo "usage: $0 <path to source dir> <path to build dir>"
++  exit 1
++fi
++
++if [ ! -d $1 ]; then
++  echo "usage: $0 <path to source dir> <path to build dir>"
++  exit 1
++fi
++
++SOURCEDIR=$1
++BUILDDIR=$2
++TESTING=$3
++
++echo "preparing files in $1 for buildfile generation ..."
++mkdir -p $BUILDDIR
++
++# make some ant build files to extract the id from the feature.xml, plugin.xml or the fragment.xml
++mkdir -p $BUILDDIR/tmp
++BUILDFILE=$BUILDDIR/tmp/build.xml
++
++echo "<project default=\"main\">
++   <target name=\"main\">
++                   <xmlproperty file=\"@type at .xml\" collapseAttributes=\"true\"/>
++       <fail unless=\"@type at .id\" message=\"feature.id not set\"/>
++                   <echo message=\"\${@type at .id}\" />
++        </target>
++</project>" > $BUILDFILE
++
++for type in feature plugin fragment; do
++  CURBUILDFILE=$BUILDDIR/tmp/$type-build.xml
++  cat $BUILDFILE | sed "s|@type@|$type|" > $CURBUILDFILE
++done
++
++# make the directories eclipse is expecting
++echo "  making the 'features' and 'plugins' directories"
++mkdir -p $BUILDDIR/features $BUILDDIR/plugins
++
++# make symlinks for the features
++FEATURES=$(find $SOURCEDIR -name feature.xml)
++find $SOURCEDIR -name feature.xml | while read f; do
++  PROJECTDIR=$(dirname "$f")
++  inSDK=1
++  inSDK=$(echo $PROJECTDIR | grep -c $BUILDDIR)
++  if [ $inSDK = 0 ]; then
++    PROJECTNAME=$(ant -Dbasedir="$PROJECTDIR" -f $BUILDDIR/tmp/feature-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++    ERROR=""
++    if [ -z "$PROJECTNAME" ]; then
++      echo "ERROR: could not determine the feature id for $PROJECTDIR"
++      if [ $TESTING != true ]; then
++        exit 1
++      else
++        ERROR="yes"
++      fi
++    fi
++
++    if [ "x$ERROR" != "xyes" ]; then
++      if [ $TESTING != true ] || `echo "$PROJECTNAME" | grep "org.eclipse"`; then
++        echo "  making symlink: $BUILDDIR/features/$PROJECTNAME -> $PROJECTDIR"
++        ln -sfT "$PROJECTDIR" $BUILDDIR/features/"$PROJECTNAME"
++      fi
++    fi
++  fi
++done
++
++# make symlinks for plugins and fragments
++PLUGINDIRS=$(find $SOURCEDIR -name plugin.xml -o -name fragment.xml -o -name MANIFEST.MF | sed "s/plugin.xml//g" | sed "s/fragment.xml//g" | sed "s/META-INF\/MANIFEST.MF//" | sort | uniq)
++find $SOURCEDIR -name plugin.xml -o -name fragment.xml -o -name MANIFEST.MF | sed "s/plugin.xml//g" | sed "s/fragment.xml//g" | sed "s/META-INF\/MANIFEST.MF//" | sort | uniq | while read dir; do
++  PROJECTNAME=""
++  ERROR=""
++  inSDK=1
++  inSDK=$(echo $dir | grep -c $BUILDDIR)
++  if [ $inSDK = 0 ]; then
++    if [ -e "$dir/META-INF/MANIFEST.MF" ]; then
++      PROJECTNAME=$(grep Bundle-SymbolicName $dir/META-INF/MANIFEST.MF | cut --delimiter=';' -f 1 | cut --delimiter=' ' -f 2)
++    elif [ -e "$dir/plugin.xml" ]; then
++      PROJECTNAME=$(ant -Dbasedir=$dir -f $BUILDDIR/tmp/plugin-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++    elif [ -e "$dir/fragment.xml" ]; then
++      PROJECTNAME=$(ant -Dbasedir=$dir -f $BUILDDIR/tmp/fragment-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++    fi
++
++    if [ -z "$PROJECTNAME"  ]; then
++      echo "ERROR: could not determine the plugin or fragment id for $dir"
++      if [ $TESTING != true ]; then
++        exit 1
++      else
++        ERROR="yes"
++      fi
++    fi
++
++    if [ "x$ERROR" != "xyes" ]; then
++      if [ $TESTING != true ] || `echo "$PROJECTNAME" | grep "org.eclipse"`; then
++        echo "  making symlink: $BUILDDIR/plugins/$PROJECTNAME -> $dir"
++        ln -sfT "$dir" $BUILDDIR/plugins/"$PROJECTNAME"
++      fi
++    fi;
++
++  fi
++
++done
++
++rm -rf $BUILDDIR/tmp
++echo done
+--- /dev/null
++++ eclipse.pde.build/org.eclipse.pde.build/templates/package-build/customTargets-assemble-target.xml
+@@ -0,0 +1,15 @@
++<project>
++   <!-- ===================================================================== -->
++   <!-- Targets to assemble the built elements for particular configurations  -->
++   <!-- These generally call the generated assemble scripts (named in -->
++   <!-- ${assembleScriptName}) but may also add pre and post processing -->
++   <!-- Add one target for each root element and each configuration -->
++   <!-- ===================================================================== -->
++
++   <target name="assemble. at id@">
++       <ant antfile="${assembleScriptName}" dir="${buildDirectory}"/>
++   </target>
++   <target name="assemble. at id@. at configs@">
++       <ant antfile="${assembleScriptName}" dir="${buildDirectory}" />
++   </target>
++</project>
+--- /dev/null
++++ eclipse.pde.build/org.eclipse.pde.build/templates/package-build/customTargets.xml
+@@ -0,0 +1,154 @@
++<project name="Build specific targets and properties" default="noDefault">
++
++   <fail unless="type" message="Please set the ${type} property to 'feature', 'plugin' or 'fragment'." />
++   <fail unless="id" message="Please set the ${id} property to the feature, plugin or fragment id of the plugin you are building." />
++   <fail unless="sourceDirectory" message="Please set the ${sourceDirectory} property to the directory that has the source plugins." />
++
++   <!-- we need to do this because you can't expand variables in target names -->
++   <copy file="${builder}/customTargets-assemble-target.xml" tofile="${buildDirectory}/customTargets-${id}-assemble-target.xml" />
++   <replace file="${buildDirectory}/customTargets-${id}-assemble-target.xml" token="@id@" value="${id}" />
++   <replace file="${buildDirectory}/customTargets-${id}-assemble-target.xml" token="@configs@" value="${configs}" />
++   <replace file="${buildDirectory}/customTargets-${id}-assemble-target.xml" token="," value="." />
++   <import file="${buildDirectory}/customTargets-${id}-assemble-target.xml" />
++
++   <!-- ===================================================================== -->
++   <!-- Run a given ${target} on all elements being built -->
++   <!-- Add on <ant> task for each top level element being built. -->
++   <!-- ===================================================================== -->
++   <target name="allElements">
++       <ant antfile="${genericTargets}" target="${target}">
++           <property name="type" value="${type}" />
++           <property name="id" value="${id}" />
++       </ant>
++   </target>
++
++
++   <!-- ===================================================================== -->
++   <!-- Check out map files from correct repository -->
++   <!-- ===================================================================== -->
++   <target name="getMapFiles">
++   </target>
++
++   <!-- ===================================================================== -->
++
++   <target name="clean" unless="noclean">
++       <antcall target="allElements">
++           <param name="target" value="cleanElement" />
++       </antcall>
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before setup -->
++   <!-- ===================================================================== -->
++   <target name="preSetup">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after setup but before starting the build proper -->
++   <!-- ===================================================================== -->
++   <target name="postSetup">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before fetching the build elements -->
++   <!-- ===================================================================== -->
++   <target name="preFetch">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after fetching the build elements -->
++   <!-- ===================================================================== -->
++   <target name="postFetch">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before generating the build scripts. -->
++   <!-- ===================================================================== -->
++   <target name="preGenerate">
++       <!-- Eclipse expects the feature projects to be in the 'features' directory and
++           plugin projects to be in the 'plugins' directory. The build infrastructure
++       normally arranges the projects during the fetch stage. Since we aren't doing
++       the fetch stage, we have to manually arrange the files -->
++       <exec dir="${builder}" executable="/bin/bash" failOnError="true">
++           <arg line="prepare-build-dir.sh ${sourceDirectory} ${buildDirectory} ${testing}" />
++       </exec>
++       <antcall target="symlinkDeps" />
++   </target>
++
++   <target name="symlinkDeps" if="orbitDepsDir">
++       <apply executable="ln" parallel="false" dir="${buildDirectory}/plugins" verbose="true">
++           <arg line="-s" />
++           <srcfile />
++           <fileset dir="${orbitDepsDir}" includes="*.jar" />
++       </apply>
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after generating the build scripts. -->
++   <!-- ===================================================================== -->
++   <target name="postGenerate">
++       <antcall target="clean" />
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before running the build.xmls for the elements being built. -->
++   <!-- ===================================================================== -->
++   <target name="preProcess">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after running the build.xmls for the elements being built. -->
++   <!-- ===================================================================== -->
++   <target name="postProcess">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before running assemble. -->
++   <!-- ===================================================================== -->
++   <target name="preAssemble">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after  running assemble. -->
++   <!-- ===================================================================== -->
++   <target name="postAssemble">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do before running package. -->
++   <!-- ===================================================================== -->
++   <target name="prePackage">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after  running package. -->
++   <!-- ===================================================================== -->
++   <target name="postPackage">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do after the build is done. -->
++   <!-- ===================================================================== -->
++   <target name="postBuild">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do to test the build results -->
++   <!-- ===================================================================== -->
++   <target name="test">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Steps to do to publish the build results -->
++   <!-- ===================================================================== -->
++   <target name="publish">
++   </target>
++
++   <!-- ===================================================================== -->
++   <!-- Default target                                                        -->
++   <!-- ===================================================================== -->
++   <target name="noDefault">
++       <echo message="You must specify a target when invoking this file" />
++   </target>
++
++</project>
+--- /dev/null
++++ eclipse.pde.build/org.eclipse.pde.build/templates/package-build/build.properties
+@@ -0,0 +1,12 @@
++buildDirectory=${sourceDirectory}/build
++buildLabel=rpmBuild
++archivePrefix=eclipse
++skipFetch=true
++javacFailOnError=true
++collectingFolder=eclipse
++archivesFormat=*,*,*-zip
++zipargs=-y
++javacDebugInfo=true
++archiveName=${id}.zip
++runPackager=false
++baseLocation=/usr/share/eclipse
diff --git a/eclipse.spec b/eclipse.spec
index 20dec09..6821a39 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -33,7 +33,7 @@ ln -s %{_javadir}/%{2} ${_f}
 Summary:        An open, extensible IDE
 Name:           eclipse
 Version:        %{eclipse_version}
-Release:        11%{?dist}
+Release:        12%{?dist}
 License:        EPL
 Group:          Text Editors/Integrated Development Environments (IDE)
 URL:            http://www.eclipse.org/
@@ -95,6 +95,7 @@ Patch20:        %{name}-ignore-version-when-calculating-home.patch
 Patch21:        %{name}-populate-update-sites-from-master.patch
 Patch22:        %{name}-remove-jgit-provider.patch
 Patch23:        %{name}-fix-comilation-lucene-3.6-compile.patch
+Patch24:        %{name}-pdebuild-add-target.patch
 
 BuildRequires:  ant >= 1.8.3
 BuildRequires:  rsync
@@ -290,6 +291,7 @@ tar --strip-components=1 -xf %{SOURCE1}
 %patch21
 %patch22
 %patch23
+%patch24
 
 #https://bugs.eclipse.org/bugs/show_bug.cgi?id=386040
 %pom_disable_module bundles/org.eclipse.equinox.http.jetty5 rt.equinox.bundles .
@@ -785,12 +787,18 @@ copyPlatform=$RPM_BUILD_ROOT%{_libdir}/%{name}/buildscripts/copy-platform
 # Install the PDE Build wrapper script.
 install -p -D -m0755 pdebuildscripts/eclipse-pdebuild.sh \
   $RPM_BUILD_ROOT%{_bindir}/%{name}-pdebuild
-PDEBUILDVERSION=$(ls $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/pde/plugins \
+PDEBUILDVERSION=$(ls $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/sdk/plugins \
   | grep org.eclipse.pde.build_ | \
   sed 's/org.eclipse.pde.build_//')
 sed -i "s/@PDEBUILDVERSION@/$PDEBUILDVERSION/g" \
   $RPM_BUILD_ROOT%{_bindir}/%{name}-pdebuild
 
+
+#fix pde permissions
+chmod a+x  $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/sdk/plugins/org.eclipse.pde.build_*/templates/package-build/*.sh
+#replace pde reference
+sed -i "s@/usr/share/eclipse@%{libdir}/%{name}@" $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/sdk/plugins/org.eclipse.pde.build_*/templates/package-build/build.properties
+
 # Install eclipse macros file
 mkdir $RPM_BUILD_ROOT%{_sysconfdir}/rpm/
 install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/
@@ -1083,6 +1091,9 @@ rm -rf %{_bindir}/efj/
 %{_mavendepmapfragdir}/%{name}-equinox-osgi
 
 %changelog
+* Fri Aug 24 2012 Krzysztof Daniel <kdaniel at redhat.com> 1:4.2.0-12
+- Fix eclipse-pdebuild script to have proper path to pde bundle.
+
 * Thu Aug 23 2012 Krzysztof Daniel <kdaniel at redhat.com> 1:4.2.0-11
 - Symlink junit 4.
 - Move additional, non-Eclipse sources back to eclipse-build.


More information about the scm-commits mailing list