Jump to: navigation, search

Difference between revisions of "STP/Build Component"

< STP
 
(22 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
|-valign="top"  
 
|-valign="top"  
 
|style="width:90%;"|
 
|style="width:90%;"|
'''Work in Progress Here'''
+
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.
The build component contains the top-level build elements for '''all''' components. During a build, the plugins will be compiled, plugin tests will be run, and an update site will be built.
+
 
 +
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 [http://tinyurl.com/5o3jqa open Build bugs] for inspiration!
 +
 
 +
If you need to get in touch with anyone about builds, we have a [[STP/Build/BuilderContacts | contacts page]]. This is in place to facilitate the roll-up summer builds.
 
| align="right | [[Image:Logo_project.gif]]  
 
| align="right | [[Image:Logo_project.gif]]  
 
|}
 
|}
 +
 +
{{:STP/Source_Code}}
  
 
{| border="0" cellspacing="15" valign="top" style="width:100%;"
 
{| border="0" cellspacing="15" valign="top" style="width:100%;"
Line 12: Line 17:
 
|-valign="top"  
 
|-valign="top"  
 
|style="width:50%;"|
 
|style="width:50%;"|
<h1>Tasks</h1>
+
<h1>How Do I Build?</h1>
*  Provide SDKs in update site
+
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.
* Include Ganymede requirements, signing, packing, etc
+
 
* Push individual component builds and document these
+
* ''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'''.
Renovate the download area
+
 
  *  Publish an All-In-One build, with all dependencies
+
* ''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.
 +
 
 +
* [[STP/Build/BuildOnMyMachine | Builds on your local machine]]
 +
* [[STP/Build/OnEclipseInfrastructure | Builds on the Eclipse build infrastructure]]
 +
* [[STP/Build/BuildAllSTP | Build everything in STP]]
  
<h1>Instructions</h1>
 
 
|}
 
|}
  
 +
{| border="0" cellspacing="15" valign="top" style="width:100%;"
  
 +
|-valign="top"
 +
|style="width:50%;"|
 +
<h1>How Do I Use The STP Generic Build For My Component?</h1>
 +
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  <span style="color:red">''(coming soon!)''</span>.
 +
 +
* [[STP/Build/How to customize the STP Generic Build | How to customize the STP Generic Build]]
 +
 +
|}
 +
 +
{| border="0" cellspacing="15" valign="top" style="width:100%;"
 +
 +
|-valign="top"
 +
|style="width:100%;"|
 +
<h1>What about some Useful Links?</h1>
 +
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 [[Buckminster/Examples/Building_an_Update_Site | How to Build an Update Site]] to get you going. The guys on the [http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.buckminster Buckminster newsgroup] and the [http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.buckminster-dev Buckminster-Dev newsgroup] are usually very responsive too.
 +
|}
 
[[Category:Build]]
 
[[Category:Build]]

Latest revision as of 06: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.