305 lines
32 KiB
HTML
305 lines
32 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>Automating Product Builds with PDE BUILD</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
|
|
<P><FONT SIZE="+3"> Automating Builds with PDE BUILD</FONT><BR></P><P>Last Updated:
|
|
June16, 2005</P><P><FONT SIZE="+1"><A HREF="#intro">Introduction</A></FONT></P><P><FONT SIZE="+1"><A HREF="#preparation">Preparing
|
|
the infrastrucure</A></FONT></P><UL><LI><A HREF="#commit">Commit feature and plug-in
|
|
projects to CVS repository</A></LI><LI><A HREF="#createmap">Create map file project</A></LI><LI><A HREF="#gensource">Set
|
|
up auto-generation of source features and plug-ins</A></LI></UL><P><FONT SIZE="+1"><A HREF="#buildconfigfiles">Preparing
|
|
Build Configuration Files</A> </FONT></P><UL> <LI><A HREF="#build.properties">Write
|
|
build.properties</A></LI><LI><A HREF="#customTargets.xml">Write customTargets.xml</A></LI></UL><P><FONT SIZE="+1"><A HREF="#buildexec">
|
|
Build Execution</A></FONT></P><UL> <LI><A HREF="#buildmachinesetup">Set up build
|
|
machine</A></LI><LI><A HREF="#runbuild">Running the build</A></LI></UL><P> </P><HR><P><FONT SIZE="+2"><B><A NAME="intro"></A>Introduction</B></FONT></P><P>This
|
|
document describes how to automate the building of Eclipse-based features and
|
|
their plug-ins using script generators in the org.eclipse.pde.build plug-in in
|
|
Eclipse 3.2 stream SDK.<BR> </P><P>Either an existing Eclipse 3.2 stream SDK or
|
|
the org.eclipse.releng.basebuilder project on dev.eclipse.org:/home/eclipse can
|
|
be used in this automated build process. The org.eclipse.releng.basebuilder project
|
|
contains the minimal set of plug-ins extracted from the latest stable Eclipse
|
|
3.2 stream SDK build (a milestone or release) needed to run applications and custom
|
|
Ant tasks in org.eclipse.ant.core, org.eclipse.pde.build, org.eclipse.pde, and
|
|
org.eclipse.help.base. This project is used by the Eclipse release engineering
|
|
team to build Eclipse itself. <P>It is assumed the reader is starting with a set
|
|
of pre-existing features and plug-ins, their build.properties, and has a working
|
|
knowledge of Apache Ant. In this document, features, plug-ins and fragments are
|
|
also referred to as "elements". The word "distribution" is
|
|
used to describe the end result of building a feature, a functional unit comprised
|
|
of one or more groupings of plug-ins. The result of building a feature results
|
|
in a zip or tar.gz file which contains the binary version of the feature and it's
|
|
plug-ins. If the feature contains nested features (i.e. <includes> elements),
|
|
the nested features will be built recursively and included in the distribution.<br>
|
|
<br> For example, the Eclipse SDK distributions are built from the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.sdk-feature/feature.xml?rev=1.7" target="extra">org.eclipse.sdk
|
|
feature</a> which is comprised of features org.eclipse.rcp, org.eclipse.rcp.source,
|
|
org.eclipse.platform, org.eclipse.platform.source, org.eclipse.jdt, org.eclipse.jdt.source,
|
|
org.eclipse.pde, org.eclipse.pde.source and the org.eclipse.sdk plug-in. The distribution
|
|
built from the org.eclipse.sdk feature will therefore contain the binary version
|
|
of the org.eclipse.sdk feature and its one plug-in plus the binary versions of
|
|
its eight nested features and all their plug-ins.<br> <br> <HR><P><FONT SIZE="+2"><B><A NAME="preparation"></A>Preparing
|
|
the infrastructure</B></FONT></P><P><B><FONT SIZE="+1" COLOR="#000000"><A NAME="commit"></A>Commit
|
|
feature and plug-in projects to CVS repository</FONT></B></P><P>Since Eclipse
|
|
3.0, PDE Build allows a very flexible organization of feature, plug-in and fragment
|
|
projects in a CVS repository where:</P><UL> <LI> the directory containing the
|
|
source for an element can exist as a root level CVS module or in any subdirectory
|
|
in the repository.</LI><LI>the directory name containing the element's source
|
|
does not have to match the id attribute in it's manifest (feature.xml, plugin.xml,
|
|
fragment.xml).</LI></UL><P>This flexibility was not present for the Eclipse process
|
|
prior to version 3.0 which is one reason for the very flat organization of projects
|
|
in the dev.eclipse.org:/home/eclipse repository. It is recommended that this flat
|
|
structure <B>not</B> be used as an example. Rather, using a structure similar
|
|
to the one used for the <A HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.equinox/?cvsroot=Technology_Project" target="extra">Equinox</A>
|
|
or <A HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.stellation/?cvsroot=Technology_Project" target="extra" >Stellation</A>
|
|
project should be considered where all files and directories for a given product
|
|
are stored under a single directory or module at the cvs root level:<BR><BR><cvs
|
|
root><BR><BR> /org.eclipse.equinox<BR><BR> /plugins<BR><BR> /all
|
|
plug-ins at this level<BR> </P><P>Once
|
|
the source for all elements is committed to a repository, the next step consists
|
|
of recording the location and access method for each feature, plug-in and fragment
|
|
in one or more <A HREF="#createmap">map files</A>.</P><P> </P><P><B><FONT SIZE="+1"><A NAME="createmap"></A>Create
|
|
map file project</FONT></B></P><P>A .map file is a java property file which contains
|
|
mappings of elements to their CVS locations and access methods. Map files are
|
|
used by PDE Build early in the build process to generate Ant scripts which use
|
|
the Ant <cvs> task to export source to a directory. This is described further
|
|
<A HREF="#getmaps">below</A>.<BR> <BR>Map file entries use the following format:<BR><BR>
|
|
<B>feature|fragment|plugin@element.Id=<cvs tag>,<access method>:<cvs
|
|
user>@<cvs repository>,<cvs password>[,<repository path>
|
|
(no starting slash) ]</B><BR> </P><P>The <repository path> is only required
|
|
when the module (or directory) containing the source for the element does not
|
|
match the element.Id or if the directory is not at the root of the repository.<BR>
|
|
<BR>A map file entry must exist for each feature being built, it's <plugin>
|
|
elements and it's <includes> elements (ie. nested features and their plug-ins).
|
|
Adding a plug-in or fragment to a feature therefore requires updating the map
|
|
files with the new element.<BR><BR><BR><B>Map File Entry Examples</B></P><UL><LI>The
|
|
org.eclipse.platform plug-in source is located at the root of the <A HREF="http://dev.eclipse.org/viewcvs/" target="extra">dev.eclipse.org:/home/eclipse</A>
|
|
repository. It is contained in a directory with the name "org.eclipse.platform".
|
|
The resulting map file entry for this plug-in is:<BR><BR>plugin@org.eclipse.platform=v20031121,:pserver:anonymous@dev.eclipse.org:/home/eclipse,<BR><BR></LI><LI>The
|
|
org.eclipse.platform feature source is located at the root of the <A HREF="http://dev.eclipse.org/viewcvs/" target="extra">dev.eclipse.org:/home/eclipse</A>
|
|
repository in a directory with the name "org.eclipse.platform-feature".
|
|
The resulting map file entry for this feature is:<BR><BR>feature@org.eclipse.platform=v20031128,:pserver:anonymous@dev.eclipse.org:/home/eclipse,,org.eclipse.platform-feature<BR><BR></LI><LI>The
|
|
org.eclipse.gef.sdk feature source is located in directory in the <A HREF="http://dev.eclipse.org/viewcvs/?cvsroot=Tools_Project" target="extra">dev.eclipse.org:/home/tools</A>
|
|
repository in a subdirectory called "org.eclipse.gef.sdk" of "org.eclipse-gef
|
|
feature". The resulting map file entry for this feature is:<BR><BR>feature@org.eclipse.gef.sdk=I_20031117,
|
|
:pserver:anonymous@dev.eclipse.org:/home/tools,,org.eclipse.gef-feature/org.eclipse.gef.sdk<BR></LI></UL><P>One
|
|
or more map files can be used to list the elements. The map files can be kept
|
|
under version control. Some examples of map file projects include <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng/">org.eclipse.releng</A>,
|
|
<A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.gef.releng/?cvsroot=Tools_Project">org.eclipse.gef.releng</A>,
|
|
<A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ve.releng/?cvsroot=Tools_Project">org.eclipse.ve.releng</A>.<BR>
|
|
<BR></P><P><B><FONT SIZE="+1"><A NAME="gensource"></A>Generating source features
|
|
and plug-ins at build time</FONT></B></P><P>Source features and plug-ins can be
|
|
generated at build time by PDE Build. Source features and associated source plug-ins
|
|
are typically generated for a development kit distributions (i.e. SDK). It is
|
|
also possible to generate a source plug-in only. This is typically the case for
|
|
example features or JUnit testing features.<BR> <BR>To generate a <B>source feature
|
|
and associated source plug-in</B> at build time, you will need to do the following:</P><OL>
|
|
<LI> Add an entry to the build.properties file in the feature project for which
|
|
you wish to include the source feature and plug-in. The generated source feature
|
|
should also be listed in the feature.xml as an <includes> element.<BR> <BR>
|
|
The build.properties entry should use the following format:<BR> <BR> generate.feature@<source.feature.id
|
|
to generate>=<feature.id from which to which to collect source>, plugin@<plugin.id><BR>
|
|
<BR> Example taken from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.sdk-feature/build.properties?rev=1.4">org.eclipse.sdk-feature/build.properties</A>:
|
|
<BR> generate.feature@org.eclipse.jdt.source=org.eclipse.jdt,
|
|
plugin@org.eclipse.jdt.doc.isv<BR> <BR> In this example, a source feature and
|
|
a plug-in, both with id "org.eclipse.jdt.source" will be generated and
|
|
will contain source from plug-ins listed in the org.eclipse.jdt feature and will
|
|
also include the plug-in org.eclipse.jdt.doc.isv. The generated org.eclipse.jdt.source
|
|
plug-in will be automatically listed in the org.eclipse.jdt.source feature.xml.
|
|
<BR> <BR> <BR> </LI><LI>In the feature project from which the source feature will
|
|
be generated, a directory called "<B>sourceTemplateFeature</B>" and
|
|
a directory called "<B>sourceTemplatePlugin</B>" will be required. These
|
|
directories should contain the files that are included in the root of the generated
|
|
source feature and plug-in. The feature.xml and plugin.xml files are not required
|
|
since these are generated. A build.properties is required in the sourceTemplatePlugin
|
|
directory. This should contain a "bin.includes" setting as well as the
|
|
entry "sourcePlugin = true". The plugin.xml file and src/ directory
|
|
should be listed in the bin.includes.<BR> <BR> See <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt-feature/">org.eclipse.jdt-feature</A>
|
|
and <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.platform-feature/">org.eclipse.platform-feature</A>
|
|
for examples.<BR> <BR> </LI></OL><P>To generate a <B>source plug-in only</B> at
|
|
build time, you will need to do the following:</P><OL> <LI> Add an entry to the
|
|
build.properties file in the feature project for which you wish to include the
|
|
source plug-in. The generated source plug-in should also be listed in the feature.xml
|
|
as a <plugin> element.. <BR> <BR> The build.properties entry should use
|
|
the following format:<BR> <BR> generate.plugin@<source.plugin.id to generate>=<feature.id
|
|
from which to which to collect source>, plugin@<plugin.id><BR> <BR> Example
|
|
taken from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.ve.tests-feature/build.properties?rev=1.2&cvsroot=Tools_Project">org.eclipse.ve.tests-feature/build.properties</A>:
|
|
<BR> generate.plugin@org.eclipse.ve.tests.source=org.eclipse.ve.tests<BR>
|
|
<BR> <BR> </LI><LI>In the runtime feature project from which the source plug-in
|
|
will be generated, create a directory called "sourceTemplatePlugin"
|
|
which must contain a build.properties with a "bin.includes" setting
|
|
and "sourcePlugin=true". The plugin.xml file and src/ directory should
|
|
be listed in the bin.includes.<BR> <BR> See <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ve.examples-feature/sourceTemplatePlugin/?cvsroot=Tools_Project">org.eclipse.ve.examples-feature/sourceTemplatePlugin</A>
|
|
for an example.<BR> </LI></OL><HR><P><FONT SIZE="+2"><A NAME="buildconfigfiles"></A><B>Preparing
|
|
Build Configuration Files</B></FONT></P><P>The distilled build process consists
|
|
of the following four steps:</P><OL><LI>build environment setup</LI><LI>check
|
|
out source from one or more CVS repositories</LI><LI>compilation</LI><LI> assembly
|
|
of distribution<BR></LI></OL><P>The script which controls the build sequence is
|
|
the build.xml Ant script in org.eclipse.pde.build. However this script requires
|
|
two user-implemented build configuration files,<A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pde.build/templates/build.properties?rev=HEAD&content-type=text/vnd.viewcvs-markup">build.properties</A>
|
|
and <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pde.build/templates/customTargets.xml?rev=HEAD&content-type=text/vnd.viewcvs-markup">customTargets.xml</A>.
|
|
These two files provide the information on the "where and how" to build
|
|
specific elements. </P><P>Templates of these files are provided in the <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pde.build/templates/">org.eclipse.pde.build/templates</A>
|
|
directory and examples are available in <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.eclipsebuilder/">org.eclipse.releng.eclipsebuilder</A>,
|
|
<A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.gefbuilder/?cvsroot=Tools_Project">org.eclipse.releng.gefbuilder</A>
|
|
and <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ve.releng.builder/?cvsroot=Tools_Project">org.eclipse.ve.releng.builder</A>
|
|
for building Eclipse, GEF and VE runtimes, respectively.</P><P><B><FONT SIZE="+1"><A NAME="build.properties"></A>build.properties</FONT></B></P><P>The
|
|
build.properties file defines a number of properties that are used as Ant properties
|
|
at build time and as arguments to script generators in org.eclipse.pde.build to
|
|
describe how and where to execute the build. The values for properties listed
|
|
in this file override any values set in the generated build.xml files. See "Generating
|
|
Ant scripts from the command line" in the PDE Guide in Eclipse 3.2 stream
|
|
Help for a description of required and optional properties.</P><P><B><FONT SIZE="+1"><A NAME="customTargets.xml"></A>customTargets.xml</FONT></B></P><P>customTargets.xml
|
|
is an Ant script containing targets called by PDE Build scripts to provide the
|
|
following information:</P><OL><LI>the list of elements for which to generate scripts</LI><LI>instruction
|
|
on retrieval of map file projects</LI><LI>steps to execute before and after the
|
|
following: retrieving map files, checking out source, generating build.xml scripts,
|
|
executing build.xml scripts, and assembling the binary distributions.</LI><LI>instruction
|
|
on things to do after the build is done.</LI></OL><P>The table below lists the
|
|
targets that are used to provide this information.<BR><BR></P><TABLE WIDTH="100%" BORDER="1"><TR><TD WIDTH="24%">Target</TD><TD WIDTH="76%">Description</TD></TR><TR><TD WIDTH="24%">allElements</TD><TD WIDTH="76%"><P>This
|
|
target lists all features that will be packaged into a binary distribution where
|
|
each listing comes in the form of an <ant> call to org.eclipse.pde.build/scripts/genericTargets.xml:<BR><BR><B><ant
|
|
antfile="${genericTargets}" target="${target}" ><BR> <property
|
|
name="type" value="feature" /><BR> <property
|
|
name="id" value="<element.id>" /><BR> </ant><BR></B><BR>
|
|
The user is only required to specify a value for properties "type" and
|
|
id (the value for the id attribute in the feature.xml) for each listing. At this
|
|
time, only the type "feature" is supported.<BR></P><P>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.eclipsebuilder/jdt/customTargets.xml?rev=HEAD&content-type=text/xml">org.eclipse.releng.eclipsebuilder/jdt/customTargets.xml</A>:</P><P><B><target
|
|
name="allElements"><BR> <ant antfile="${genericTargets}"
|
|
target="${target}" ><BR> <property
|
|
name="type" value="feature" /><BR> <property
|
|
name="id" value="org.eclipse.jdt" /><BR> </ant><BR></target></B></P><P>The
|
|
<A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.pde.build/scripts/genericTargets.xml?rev=HEAD&content-type=text/xml">genericTargets.xml
|
|
</A>script is an Ant script in the org.eclipse.pde.build plug-in containing targets
|
|
which call PDE Build custom Ant tasks to generate scripts for the specified elements
|
|
at various stages of the build. This script also executes the generated scripts
|
|
at various build stages. The target property is set by it's calling script, org.eclipse.pde.build/scripts/build.xml.<BR><BR>For
|
|
example, the fetch target in the build.xml calls allElements and sets the target
|
|
to property to "fetchElement":<BR><BR> <ant antfile="${customTargets}"
|
|
target="allElements"><BR> <property
|
|
name="target" value="fetchElement" /><BR> </ant><BR><BR>The
|
|
result of this is that the fetchElement target in genericTargets.xml is executed
|
|
using arguments type and id set in allElements.<BR></P></TD></TR><TR><TD WIDTH="24%">assemble.<element.id>[.config.spec]</TD><TD WIDTH="76%"><P>For
|
|
every configuration specified in the build.properties for the distribution (see
|
|
<A HREF="#configs">configs</A> above), a target named "assemble.<element.id>.<config.spec>"
|
|
is required. If the distribution is not platform-specific, the ".<config.spec>"
|
|
section of the target name is not required. </P><P>Providing the target name should
|
|
be all that is required unless you wish to give the produced binary distributable
|
|
file a name different from the default "<elment-id>-<buildid>-<config.spec>.zip".
|
|
In this case, an explicit value for the property "archiveName" should
|
|
be specified at the beginning of the target.<BR><BR>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.eclipsebuilder/jdt/customTargets.xml?rev=HEAD&content-type=text/xml">org.eclipse.releng.eclipsebuilder/jdt/customTargets.xml</A>:<BR><BR>
|
|
Since two configurations for building the org.eclipse.jdt distribution are specified
|
|
in it's build.properties "configs=*,*,* & macosx,carbon,ppc", the
|
|
following two targets are provided in the customTargets.xml script.</P><P><FONT COLOR="#000000"><B><target
|
|
name="assemble.org.eclipse.jdt"><BR> <property
|
|
name="archiveName" value="eclipse-JDT-${buildId}.zip"/><BR>
|
|
<ant antfile="${assembleScriptName}"/><BR></target></B></FONT></P><P><B><FONT COLOR="#000000"><target
|
|
name="assemble.org.eclipse.jdt.macosx.carbon.ppc"><BR> <property
|
|
name="archiveName" value="eclipse-JDT-${buildId}-macosx-carbon.tar.gz"/><BR>
|
|
<ant antfile="${assembleScriptName}"/><BR></target></FONT></B><BR></P></TD></TR><TR><TD WIDTH="24%"><A NAME="getmaps"></A>getMapFiles</TD><TD WIDTH="76%"><P>The
|
|
result of executing this target should be to place *.map files in any directory
|
|
or subdirectory under ${buildDirectory}/maps. All .map files found here are concatenated
|
|
into a single file ${buildDirectory}/directory.txt. Map file projects are typically
|
|
kept under version control in a CVS repository. <BR><BR>In the following example
|
|
from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.eclipsebuilder/sdk/customTargets.xml?rev=HEAD&content-type=text/xml">org.eclipse.releng.eclipsebuilder/sdk/customTargets.xml</A>,
|
|
the implementation of this target and it's helper targets are provided to illustrate
|
|
how map files for Eclipse builds are checked out from a CVS repository and then
|
|
tagged with the build timestamp to capture the versions of all projects used in
|
|
the build.<BR><BR><B><target name="getMapFiles" depends="checkLocal"
|
|
unless="mapsLocal"><BR> <property
|
|
name="mapCvsRoot" value=":pserver:anonymous@dev.eclipse.org:/home/eclipse"
|
|
/><BR> <property name="mapVersionTag"
|
|
value="HEAD" /><BR> <cvs cvsRoot="${mapCvsRoot}"<BR>
|
|
package="org.eclipse.releng"<BR>
|
|
dest="${buildDirectory}/maps"<BR>
|
|
tag="${mapVersionTag}"<BR>
|
|
/><BR> <antcall target="tagMapFiles"
|
|
/><BR></target></B></P><P><B><FONT COLOR="#008000"><!--helper targets---></FONT><BR></B><B><BR><target
|
|
name="checkLocal"><BR> <available
|
|
property="mapsLocal" file="${buildDirectory}/maps/org.eclipse.releng"
|
|
/><BR></target><BR></B></P><P><B><target name="tagMapFiles"
|
|
if="tagMaps"><BR> <cvs dest="${buildDirectory}/maps/org.eclipse.releng"
|
|
command="tag v${timestamp}" /><BR></target></B><BR><BR></P></TD></TR><TR><TD WIDTH="24%" HEIGHT="24">preSetup
|
|
and postSetup</TD><TD WIDTH="76%" HEIGHT="24"><P>Used to run operations before
|
|
and after retrieving the map files.<BR><BR>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.gefbuilder/sdk/customTargets.xml?rev=HEAD&content-type=text/xml&cvsroot=Tools_Project">org.eclipse.releng.gefbuilder/sdk</A>.
|
|
This example demonstrates how the postSetup target (and a helper target) is used
|
|
to download and install an Eclipse SDK to compile against.</P><P><B><target
|
|
name="postSetup"><BR> <available
|
|
file="${buildDirectory}/../eclipse-SDK.zip" property="baseExists"
|
|
/> <BR> <antcall target="getBaseEclipse"
|
|
/> <BR> </target><BR></B></P><P><B><target name="getBaseEclipse"
|
|
unless="baseExists"></B></P><P><B><FONT COLOR="#008000"> <!--this
|
|
task definition is available in org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools.
|
|
It removes the _ <version>
|
|
from all directories specified as a value for the directory attribute. </FONT></B><FONT COLOR="#008000"><B>Not
|
|
really necessary, but helpful in this
|
|
case to avoid having/needing hard-coded versions in GEF javadoc scripts.--></B></FONT><B></B><B><BR></B><B> <taskdef
|
|
name="stripVersions" classname="org.eclipse.releng.VersionNumberStripper"
|
|
/> <BR> <BR><FONT COLOR="#008000"> <!--this
|
|
property file contains the values for ${eclipseURL} and ${eclipseBuildID}--></FONT><BR> <property
|
|
file="${buildDirectory}/maps/org.eclipse.gef.releng/maps/build.cfg"
|
|
/> <BR> <get src="${eclipseURL}/eclipse-SDK-${eclipseBuildID}-win32.zip"
|
|
dest="${buildDirectory}/../eclipse-SDK.zip" /> <BR> <exec
|
|
dir="${buildDirectory}/.." executable="unzip"><BR> <arg
|
|
line="-o -qq eclipse-SDK.zip" /> <BR> </exec><BR>
|
|
<BR> <stripVersions
|
|
directory="${buildDirectory}/plugins" /> <BR><BR><FONT COLOR="#008000"> <!--
|
|
Extract doc.zip so we can create links in GEF java doc --> </FONT><BR> <exec
|
|
dir="${buildDirectory}/plugins/org.eclipse.platform.doc.isv" executable="unzip"><BR>
|
|
<arg line="-o
|
|
-qq doc.zip" /> <BR> </exec><BR> </target></B><BR><BR></P></TD></TR><TR><TD WIDTH="24%">preFetch
|
|
and postFetch </TD><TD WIDTH="76%"><P>Used to run operations before and after
|
|
fetching source for the build.<BR></P><P>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.gefbuilder/sdk/customTargets.xml?rev=HEAD&content-type=text/xml&cvsroot=Tools_Project">org.eclipse.releng.gefbuilder/sdk</A>.
|
|
This example demonstrates how the postFetch target can be used to set the build
|
|
timestamp as a value for "0" in about.mappings files.<BR><BR><B><target
|
|
name="postFetch"><BR> <replace dir="${buildDirectory}/plugins"
|
|
value="${timestamp}" token="@buildid@"><BR> <include
|
|
name="**/about.mappings" /> <BR> </replace><BR>
|
|
</target></B></P></TD></TR><TR><TD WIDTH="24%">preGenerate and postGenerate</TD><TD WIDTH="76%"><P>Used
|
|
to run operations before and after generating build.xml files for features, plug-ins
|
|
and fragments.<BR><BR>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.gefbuilder/sdk/customTargets.xml?rev=HEAD&content-type=text/xml&cvsroot=Tools_Project">org.eclipse.releng.gefbuilder/sdk</A>.
|
|
This example demonstrates how the postGenerate target (and a helper target) is
|
|
used to run the build.xml scripts to clean the source of any stale, pre-compiled
|
|
jars that might exist in the source directories. jars are not recompiled if they
|
|
already exist in plug-in or fragment directories.<BR></P><P> <B><target name="postGenerate"><BR>
|
|
<antcall target="clean" /> <BR>
|
|
</target></B></P><P><B><target name="clean" unless="noclean"><BR> <antcall
|
|
target="allElements"><BR> <param
|
|
name="target" value="cleanElement" /> <BR> </antcall><BR>
|
|
</target><BR></B></P></TD></TR><TR><TD WIDTH="24%">preProcess and postProcess</TD><TD WIDTH="76%">
|
|
Used to run operations before and after compiling the source.</TD></TR><TR><TD WIDTH="24%">preAssemble
|
|
and postAssemble</TD><TD WIDTH="76%">Used to run operations before and after assembling
|
|
the binary distributables.</TD></TR><TR><TD WIDTH="24%">postBuild</TD><TD WIDTH="76%"><P>Used
|
|
to run operations at the end of the build.<BR></P><P>Example from <A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.releng.gefbuilder/sdk/customTargets.xml?rev=HEAD&content-type=text/xml&cvsroot=Tools_Project">org.eclipse.releng.gefbuilder/sdk</A>.
|
|
This example demonstrates how the postBuild target (and a helper target) is used
|
|
to gather and place the compile logs in the ${buildLabel} directory. These files
|
|
are used in the publishing of the GEF build (see below under Publishing the Build
|
|
section).<BR></P><P><B><target name="postBuild"><BR> <antcall
|
|
target="gatherLogs" /> <BR> </target><BR><BR><target name="gatherLogs"><BR>
|
|
<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs"
|
|
/> <BR> <antcall
|
|
target="allElements"><BR> <param
|
|
name="target" value="gatherLogs" /> <BR> </antcall><BR> <unzip
|
|
dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true"><BR> <fileset
|
|
dir="${buildDirectory}/features/org.eclipse.gef.sdk"><BR> <include
|
|
name="*.log.zip" /> <BR> </fileset><BR>
|
|
</unzip><BR> </target></B><BR><BR></P></TD></TR></TABLE><P> </P><HR><P><BR><FONT SIZE="+2"><B><A NAME="buildexec"></A>Build
|
|
Execution </B></FONT></P><P><FONT SIZE="+1"><A NAME="buildmachinesetup"></A><B>Build
|
|
machine setup</B></FONT><BR><BR>This build process can be executed on any of the
|
|
<A target="extra" HREF="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_2.html#TargetOperatingEnvironments">Eclipse
|
|
3.2 Reference Platforms</A> plus the following:</P><UL><LI><A target="extra" HREF="http://www.cvshome.org/">CVS</A>
|
|
client version 1.10 or higher on system path. </LI><LI><A target="extra" HREF="http://www.info-zip.org/pub/infozip/">Info-Zip</A>
|
|
zip and unzip executables on system path.</LI><LI><A target="extra" HREF="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.releng.basebuilder/">org.eclipse.releng.basebuilder</A>
|
|
from dev.eclipse.org or any Eclipse 3.2 stream SDK install. Please note that the
|
|
Mailer java class in this project require a j2ee.jar on the classpath to compile
|
|
and run. This class is not used in the mechanism described in this document.</LI></UL><P>The
|
|
cvs, zip and unzip executables should be placed on the system path.</P><P> On
|
|
Windows systems, the HOME environement variable should be set to "c:"
|
|
(no slash) for CVS operations.</P><P>The org.eclipse.releng.basebuilder project
|
|
can be placed in any directory.</P><P><BR><B><FONT SIZE="+1"><A NAME="runbuild"></A>Running
|
|
the Build</FONT></B></P><P>To run the build, execute the following command from
|
|
../plugins/org.eclipse.pde.build/scripts to <B>build a single distribution</B>:<BR><BR><B>java
|
|
-jar <path>/startup.jar -application org.eclipse.ant.core.antRunner [-buildfile
|
|
build.xml] -Dbuilder=<path to directory containing build.properties and customTargets.xml>
|
|
[Ant property settings to override those in <A HREF="#build.properties" TARGET="_blank">build.properties</A>]</B><B><BR></B></P><P> </P>
|
|
</BODY>
|
|
</HTML>
|