Part of ATF Ajax Toolkit Framework
The selected way to distribute the ATF binaries is a zipped update site. The rationale is that there are third party dependencies (like Mozilla XPCOM and some Ajax Toolkits libraries which have not been approved for re-distribution by Eclipse). Using an update site allows to provide update site pointers to install the missing pieces from remote sites like Mozilla.org in one pass.
The build is using PDE Build. The sequence for that build is:
- Download a reference environment to build against: in this phase a complete reference Eclipse SDK (using the web tools all in one drop) is retrieved, extracted and layed for use in PDE build. This guarantees that the build is made against a well known stable Eclipse environment. A few other dependencies (Mozilla, Zimbra, etc) which are required for compilation but are not shipped with ATF are also downloaded, extracted and set to participate in the build. THE FIRST TIME YOU RUN THE BUILD, THIS DOWNLOAD CAN TAKE A WHILE, there are about ~250MB of software that are downloaded. Those downloads are ached.
- From then on the regular PDE build sequence is followed:
- each feature and plugin is fetched from CVS using a directory or map file, (for now pointing to HEAD as opposed to specific labels)
- build scripts are generated
- compilation is performed
- At the end of the PDE build sequence the built plugins are assembled is archives.
Work in progress
You can check the work in progress on the build there: http://easyeclipse.cvs.sourceforge.net/easyeclipse/easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.releng/
- Using Eclipse 3.2.1, create a bew CVS repo connection to: :pserver:firstname.lastname@example.org:/cvsroot/easyeclipse
- Check out this project: easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.releng/
- Open a shell or command line prompt, and navigate to the org.eclipse.atf.releng directory
- Copy the file build.properties.template to the directory <user home>/eclipse-atf/build.properties and edit it following the instructions in that file.
- Type "anteclipse main" and watch things unfold.
Mozilla browser fragments specifics
The current CVS and plugin layout is to have one fragment to SWT: org.eclipse.atf.mozilla.browser that has one common source tree, and one source tree for each supported platform specific source code. This is similar to the Platform SWT layout. Until now, the build has been performed using manual exports, exporting two versions with the exact same IDs, one for Linux and one for Windows. Once completed the setup will be identical at design time. Yet at build time, one platform specifc fragment will be built for each piece of platform specific code (which is no more than once class (MozillaBrowser) for now).
Provisional fragments can be studied here, until they get included in the Eclipse.org CVS repo:
- [mac fragment| http://easyeclipse.cvs.sourceforge.net/easyeclipse/easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.mozilla.swt.browser.carbon.macosx/]
- [win32 fragment| http://easyeclipse.cvs.sourceforge.net/easyeclipse/easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.mozilla.swt.browser.win32.win32.x86/]
- [linux/gtk/x86 fragment| http://easyeclipse.cvs.sourceforge.net/easyeclipse/easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.mozilla.swt.browser.gtk.lilnux.x86/]
- [linux/gtk/x86_64 fragment| http://easyeclipse.cvs.sourceforge.net/easyeclipse/easyeclipse/easyeclipse/org.nexb.easyeclipse.vendors/eclipse-atf/plugins/org.eclipse.atf.mozilla.swt.browser.gtk.linux.x86_64/]
The proposed layout is a workable situation (similar to that of SWT) where design time requires to use a checkout from CVS and some copy of a classpath file, and runtime gets proper fragments for each platform with their Eclipse platform filters defined, that are merged in SWT.
Things to do
- Upgrade all the versions numbers of the plugins and features to use the ".qualifier" convention, as in []
- Finish split at build-time of the Mozilla fragment in one frgament per platform. For that, each platform specific source tree will be copied to its respective fragment module (which does not contain yet any sources) in the post fetch phase of the PDE build. Once that is done, the build can continue normally.