Skip to main content
Jump to: navigation, search


Revision as of 04:59, 7 October 2009 by (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

A short guide to building PDT in Athena.

What are the files and their roles in org.eclipse.pdt.releng

  • - Main configuration file. There's a couple of basic options that tell Athena which project is built (tools.pdt), how should deliverables be named (version, name). Athena will try to build the feature defined in mainFeatureToBuildID. By default several different packages Master, SDK, Tests, Update, Runtime) are built.
  • build.xml - Used to invoke Athena build. This is copy-paste from other Athena projects.
  • buildExtra.xml - some extra steps specific to PDT. Currently only the logic to generate php parser is here
  • - Configuration of tests to run.
  • promote.xml - Used to promote files from Hudson job to downloads area. Copy-paste from other Athena projects.
  • - configuration of promote.xml. Specific to Integration builds. For other types of builds, create separate properties files.

How are dependencies organized?

There are three ways to satisfy dependencies in Athena build:

  1. Explicitly add a URL to zip with dependency that should be unzipped into Eclipse build target. The zip at top level should have eclipse directory and inside features and plugins dirs with appropriate content. Those URLs are listed in dependencyURLs property in
  2. List of features to install. Features to install are listed in featureIDsToInstall property. They're installed by p2 and searched in the repositories list defined in repositoryURLs. P2 automatically decides the best version to install, so for example PDT requires feature o.e.dltk.core 2.0 and there was no other way to let P2 find this feature than add dltk p2 development repository.
  3. List of plugins to install. Plugins to install are listed in pluginIDsToInstall property. They're resolved by p2 as well and searched in repositories defined in repositoryURLs. This is an extra option added to easily install stuff from Orbit, because Orbit doesn't have separate features for every plug-in it contains, but only a single feature.

So in future, to manage dependencies, the best way is to update the list of repositories in repositoryURLs. If a new dependency has no p2 repository, then it can be installed by using dependencyURLs. If the dependency has p2 repo, but no feature packaging, then use pluginIDsToInstall.

How are builds promoted?

Builds are not promoted automatically by Hudson. Promotion is done by ant script org.eclipse.pdt.releng/promote.xml and configured in org.eclipse.pdt.releng/ To promote builds automatically, the promote.xml can be added to Crontab after a build is invoked. By default builds are invoked by Hudson every 6 hours if there were any changes in CVS. (at 3:10, 9:10, 15:10, 21:10 Ottawa time). So to promote 1 build every day, following crontab entry should be added:

30 21 * * * /opt/public/common/apache-ant-1.7.1/bin/ant -f /opt/users/hudsonbuild/.hudson/jobs/cbi-pdt-2.2-helios/workspace/build/org.eclipse.pdt.releng/promote.xml 2>/dev/null 1>~/promo_log.txt

and create org.eclipse.pdt.releng/ as a copy of but adjust the target directories of deliverables.

By default code is fetched from HEAD. This is configured in Hudson in parameter EXTRAFLAGS -forceContextQualifier -fetchTag HEAD)

How to invoke Integration build?

Manually. Go to Hudson job, and press Build Now. In the parameters, change the BUILDTYPE from N to I. Clear the EXTRAFLAGS param. As a result, code will be fetched as defined in file, not from HEAD and will be prefixed with I, instead of N. After build is ready, it has to be promoted manually by calling

ant promote.xml

full command:

ant -f /opt/users/hudsonbuild/.hudson/jobs/cbi-pdt-2.2-helios/workspace/build/org.eclipse.pdt.releng/promote.xml

How is downloads page updated?

Downloads page every time goes thru the downloads directory and lists all the files that are available there. So assuming that is configured properly, promoted files should be available in right directories and be automatically picked by downloads page.

How are tests invoked?

The name of test feature to build is defined in in testFeatureToBuildID=org.eclipse.php.test The tests to execute are defined in First property [1] is a list of test plug-ins to run. Subsequent properties map the plug-in id's to the main TestSuite classes to run.

[1] testPluginsToRun=org.eclipse.php.core.tests
[2] org.eclipse.php.core.tests.suite=org.eclipse.php.core.tests.AllTests

Back to the top