| ### Eclipse Workspace Patch 1.0 |
| #P org.eclipse.pde.build |
| --- /dev/null |
| +++ b/plugins/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@.xml\" collapseAttributes=\"true\"/> |
| + <fail unless=\"@type@.id\" message=\"feature.id not set\"/> |
| + <echo message=\"\${@type@.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 |
| +++ b/plugins/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.@id@"> |
| + <ant antfile="${assembleScriptName}" dir="${buildDirectory}"/> |
| + </target> |
| + <target name="assemble.@id@.@configs@"> |
| + <ant antfile="${assembleScriptName}" dir="${buildDirectory}" /> |
| + </target> |
| +</project> |
| --- /dev/null |
| +++ b/plugins/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 |
| +++ b/plugins/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 |