STP Build Using Buckminster
- 1 Introduce
- 2 Use Build System
- 3 CruiseControl Setup
- 4 Extend Build System
- 5 FAQ
The purpose of this document is to supply some information on the new STP build system based on Buckminster. If you only want to use it to build STP plugins, then it needn't any backgrounds of Buckminster at all, otherwise, say extend the build system to add your new plugins to STP build system, then an understanding of Buckminster will be good.
Use Build System
This section will introduce on how to use the new build system to build STP quickly, here I will show commands based on Linux, building on Window is similar except some different arguments, I will give more detail at the end of this section.
You need setup a target platform first before you building STP, the target platform is just an Eclipse SDK installation plus all the prerequisite plugins needed by STP, e.g. you need install plugins below to /shared/eclipse_java/eclipse directory:
- orbit-R200709171314.zip(Since STP and Orbit under developing, you can get latest Orbit package from http://download.eclipse.org/tools/orbit/committers/ in case can't find some components during build)
Since STP is under developing, so all the plugins list here will be changed, you can refer STP download page to get the latest information: http://download.eclipse.org/stp/downloads/
To run unit test, you need install Eclipse test framework plugin too:
Again, please make sure you install all those to /shared/eclipse_java/eclipse directory.
Install a JDK 1.5 on your build machine, make sure you can access javac and java from command line.
Install a Apache Ant 1.7.0 on your build machine, make sure you can access ant from command line.
1. check out build system from svn $svn co http://dev.eclipse.org/svnroot/stp/trunk/build/buckminster buckminster 2. build STP $cd buckminster $ant #this will show a help message to you $ant -Dbase.directory=/local/temp/download build #kick off resolving and building for STP
waiting for about 5 minutes, after finishing, you can find build results from /local/temp/download/working/build/buckminster/workspace, it depend on your base.directory setting.
Not finish, coming soon :)
Create STP Update Site
This is straightforward, run command below
$ant -Dbase.directory=/local/temp/download stp.build.site
after finishing, you can find STP update site from /local/temp/download/working/build/buckminster/stp.site/org.eclipse.stp.build.root/site, it depend on your base.directory setting.
Build on Windows
1. Prepare a target platform for Windows
2. You need tell the build system where to find the target platform, you need edit the stp.rmap file, in the searchPath for europa, change the url to point to your target platform, e.g. c:\eclipse
3. Run command below
c:\>cd buckminster c:\>ant -Dbase.directory=c:\local\temp\download -Dpde.target.platform.path=c:\eclipse -Dpde.target.arch=x86 -Dpde.target.os=windows -Dpde.target.ws=win32 build
Just a quick reminder for the arch, os and ws constants:
pde.target.arch = x86 | ppc | x86_64 | PA_RISC pde.target.os = linux | solaris | aix | hpux | macosx pde.target.ws = win32 | gtk | motif | carbon
So if you are building on linux for example, the (arch, os, ws) triplet would be something like (x86, linux, gtk), or if you are building on MacBook Pro, it will be (x86, macosx, carbon).
Setting up CruiseControl for STP build using Buckminster is straightforward, basic steps list below:
1. Guarantee you can build STP follow steps list above(suppose your working copy at /local/stp/trunk)
2. Download Cruisecontrol from http://cruisecontrol.sourceforge.net/ , binary version 2.7.1 is preferred
3. Copy the ready Cruisecontrol config file for STP from /local/stp/trunk/build/buckminster/cruise-config.xml to your Cruisecontrol installation directory
4. Edit properties in cruise-config.xml to config your arguments
3. Start CruiseControl like:
$cd cruisecontrol-bin-2.7.1 $./cruisecontrol.sh -configfile ./cruise-config.xml
4. See results at: http://localhost:8080/cruisecontrol/buildresults/stp
5. Monitor build process at: http://localhost:8080/dashboard/dashboard
Extend Build System
Get Familiar with Buckminster
1. Buckminster project: http://www.eclipse.org/buckminster/index.php
2. A good start tutorial: http://wiki.eclipse.org/Hello_XML_World_Example_%28Buckminster%29
3. Useful documents: http://wiki.eclipse.org/index.php/Buckminster
How to Add New Plugin
Suppose you have a new plugin to add to STP build system, you should do things below:
1. You should guarantee it works fine inside Eclipse
2. You must add it to a feature, the build system does support add a plugin, but it's not a good practise
3. Edit buckminster.cspc file which defined in <buckminster>/org.eclipse.stp.build.root to add your feature, please read the comments in buckminter.cspec carefully, you need add that feature in three places, i.e. dependencies, bundle.jars and soa.development.category, the latter two are for update site, if you only want to build then add feature dependencies is enough
4. kick off building
5. Edit stp.rmap as needed if Buckminster can't resolve your new plugin
Yes, you can, but you need edit stp.rmap to point to your new target platform location and when you kick off building using -Dpde.target.platform.path=<your new location>
Can I get more debug information when error occurs?
When kick off building add properties -Dbuckminster.log.level=DEBUG
Can you tell me the organization of this build system?
The important components for the new build system are
* build.properties # define all kinds of properties * build.xml # the Ant build file * org.eclipse.stp.build.root # the virtual component for STP build * buckminster.cspec # Buckminster cspec file * stp.cquery # the entry point for Buckminster * stp.rmap # the resource map for STP
Can I use those stuff to prepare a STP workspace for me?
Yes, you can, you need prepare a Eclipse SDK which you used to develop STP and install Buckminster from Buckminster Downloads, then you go "File -> Open a Component Query", input http://dev.eclipse.org/svnroot/stp/trunk/build/buckminster/stp.cquery, and you can materialize STP now