Blob Blame History Raw
Index: templates/package-build/build.properties
===================================================================
RCS file: templates/package-build/build.properties
diff -N templates/package-build/build.properties
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ templates/package-build/build.properties	1 Jan 1970 00:00:00 -0000
@@ -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
Index: templates/package-build/customTargets-assemble-target.xml
===================================================================
RCS file: templates/package-build/customTargets-assemble-target.xml
diff -N templates/package-build/customTargets-assemble-target.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ templates/package-build/customTargets-assemble-target.xml	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,12 @@
+<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>
+</project>
Index: templates/package-build/customTargets.xml
===================================================================
RCS file: templates/package-build/customTargets.xml
diff -N templates/package-build/customTargets.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ templates/package-build/customTargets.xml	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,144 @@
+<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}" />
+	<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/sh">
+			<arg line="prepare-build-dir.sh ${sourceDirectory} ${buildDirectory}" />
+		</exec> 
+
+	</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>
Index: templates/package-build/prepare-build-dir.sh
===================================================================
RCS file: templates/package-build/prepare-build-dir.sh
diff -N templates/package-build/prepare-build-dir.sh
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ templates/package-build/prepare-build-dir.sh	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+if [ $# -ne 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
+
+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)
+for f in $FEATURES; do
+  PROJECTDIR=$(dirname $f)
+  PROJECTNAME=$(ant -Dbasedir=$PROJECTDIR -f $BUILDDIR/tmp/feature-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
+  if [ -z $PROJECTNAME ]; then
+    echo "ERROR: could not determine the feature id for $PROJECTDIR"
+    exit 1
+  fi
+
+  echo "  making symlink: $BUILDDIR/features/$PROJECTNAME -> $PROJECTDIR"
+  ln -sf $PROJECTDIR $BUILDDIR/features/$PROJECTNAME
+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)
+for dir in $PLUGINDIRS; do
+  PROJECTNAME=""
+  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"
+    exit 1
+  fi
+
+  echo "  making symlink: $BUILDDIR/plugins/$PROJECTNAME -> $dir"
+  ln -sf $dir $BUILDDIR/plugins/$PROJECTNAME
+
+done 
+
+rm -rf $BUILDDIR/tmp
+echo done