Difference between revisions of "STP/Build Component"

From Eclipsepedia

< STP
Jump to: navigation, search
 
(One intermediate revision by one user not shown)
Line 18: Line 18:
 
|style="width:50%;"|
 
|style="width:50%;"|
 
<h1>How Do I Build?</h1>
 
<h1>How Do I Build?</h1>
Once you've checked out the relevant project(s) from SVN in the IDE, the IDE will build it for you, saving all that tedious mucking about with the command line. But if you would like to be able to build it ''headless'' then there are a couple of options. If you have ''shell access'' to the <tt>build.eclipse.org</tt> build infrastructure you can build it there with a minimum of hassle. Note that shell access is only given to committer that have specific responsibilities for builds. If you want to build it on your local machine, you will need to first construct what we call ''the platform'', which is an Eclipse installation with all of the dependencies in place, installed as features and plugins. The dependencies will change version from milestone to milestone as we head for a roll-up build in the mid-year big-bang release.  
+
Once you've checked out the relevant project(s) from SVN in the IDE, the IDE will build it for you, saving all that tedious mucking about with the command line. But if you would like to be able to build it ''headless'' then there are some tools that you need to have in place before you can start.
 +
 
 +
* ''Build Platform'' - this is the Eclipse platform, plus all of the dependencies that you need to build your project. Usually you will point the build at an Eclipse installation on your local disk. For the build, the property '''platform''' contains the path to your platform, for example '''-Dplatform=/Users/me/eclipse'''.
 +
 
 +
* ''Buckminster'' - STP uses the [Buckminster] tool to find the source code, build it and then produce a p2 update site. Lots of logic on how to do builds and how to find dependencies has been incorporated into Buckminster, which makes the build very straightforward from a maintenance perspective.
 +
 
 +
* ''Apache Ant'' - We use  Ant as a kind of general-purpose build wrapper and as a way to provide default values to properties, override properties and just move files around. We could be using <tt>bash</tt> scripts to do this, but Ant just seems to fit the bill quite well.
  
 
Because there's a lot of different components and projects in STP, we've tried to construct a build system that can be reused by everyone, so that there is some chance we can all learn to maintain it :)  The instructions that are here are for the individual component/project builds, and there's a set of instructions for the full-on roll-up of all projects into one update site.
 
Because there's a lot of different components and projects in STP, we've tried to construct a build system that can be reused by everyone, so that there is some chance we can all learn to maintain it :)  The instructions that are here are for the individual component/project builds, and there's a set of instructions for the full-on roll-up of all projects into one update site.
  
* [[STP/Build/OnEclipseInfrastructure | Builds on the Eclipse build infrastructure]]
 
 
* [[STP/Build/BuildOnMyMachine | Builds on your local machine]]
 
* [[STP/Build/BuildOnMyMachine | Builds on your local machine]]
 +
* [[STP/Build/OnEclipseInfrastructure | Builds on the Eclipse build infrastructure]]
 
* [[STP/Build/BuildAllSTP | Build everything in STP]]
 
* [[STP/Build/BuildAllSTP | Build everything in STP]]
  

Latest revision as of 07:38, 30 June 2009

The Build repository is a separate codebase which includes all of the bits and pieces that we use to run our builds, make update sites, and all that good stuff. The build materials are managed collectively by the committers to the various components of STP - we're not lucky enough to have a dedicated build team.

If Buckminster build systems are something you like, and you think our build could be improved then we really welcome any patches or ideas you may have. Take a look at the open Build bugs for inspiration!

If you need to get in touch with anyone about builds, we have a contacts page. This is in place to facilitate the roll-up summer builds.

Logo project.gif

Where's the Source?

STP uses SVN, and is a multi-repository project, with one repository for each sub-project or component. Individual components can be built (in most cases) independently, but sometimes cross-dependencies exist, and of course a full roll-up build implies access to all the relevant repositories.

SVN repositories can be access through the HTTP protocol, for anonymous read-only checkouts, and the SVN+SSH protocol, for committer checkouts. Here are the repository locations.

There are other supporting repositories too that you may not be using on a day-to-day basis - we have a repository that contains the top-level build for all components and projects, a sandbox to serve as a temporary contribution space and an archive, which is where we put retired components, so that they don't clutter up the place.

How Do I Build?

Once you've checked out the relevant project(s) from SVN in the IDE, the IDE will build it for you, saving all that tedious mucking about with the command line. But if you would like to be able to build it headless then there are some tools that you need to have in place before you can start.

  • Build Platform - this is the Eclipse platform, plus all of the dependencies that you need to build your project. Usually you will point the build at an Eclipse installation on your local disk. For the build, the property platform contains the path to your platform, for example -Dplatform=/Users/me/eclipse.
  • Buckminster - STP uses the [Buckminster] tool to find the source code, build it and then produce a p2 update site. Lots of logic on how to do builds and how to find dependencies has been incorporated into Buckminster, which makes the build very straightforward from a maintenance perspective.
  • Apache Ant - We use Ant as a kind of general-purpose build wrapper and as a way to provide default values to properties, override properties and just move files around. We could be using bash scripts to do this, but Ant just seems to fit the bill quite well.

Because there's a lot of different components and projects in STP, we've tried to construct a build system that can be reused by everyone, so that there is some chance we can all learn to maintain it :) The instructions that are here are for the individual component/project builds, and there's a set of instructions for the full-on roll-up of all projects into one update site.

How Do I Use The STP Generic Build For My Component?

To get components and sub-projects up to speed quickly on build, we've made a generic build system available. You just customize this with various aspects of your project and it will do a full-on build of the code, an update site and a p2 repository (coming soon!).

What about some Useful Links?

If you are hacking the build, you need to know some things about Buckminster, which is our shield against the slings and arrows of the raw PDE build with its strange Ant script behaviour. Buckminster is relatively new, having started up in 2006, but has built a lot of solidity and experience with Eclipse and other projects outside the Eclipse community. Plenty of information is available from the linked wiki page, and I would recommend articles like How to Build an Update Site to get you going. The guys on the Buckminster newsgroup and the Buckminster-Dev newsgroup are usually very responsive too.