Jump to: navigation, search

Buckminster Galileo Builder

Revision as of 04:34, 17 April 2009 by Thomas.tada.se (Talk | contribs)

Introduction

The Buckminster Galileo Builder was created to enable a fast but still very accurate build of the Galileo release train. It's provided as a single feature to be installed either into an IDE or into some headless environment. The builder is intended to be used on any computer, not just on the build server at Eclipse.org.

The build will perform the following steps:

  1. Generate a full build model from the all contributions.
  2. Create a composite repositories that includes all contributed repositories.
  3. Create a special category repository that includes categories declared in the model.
  4. Create a feature that includes all contributed features and bundles.
  5. Verify that the feature can be installed into all configurations declared in the model.
  6. Create a mirror that includes everything. The mirroring is selective and will only bring in the transitive closure of all contributions. No categories are copied from the contributions. This last step is optional.

Steps 1-5 usually completes within 3-6 minutes on my machine (located in Sweden). The time is very much dependent on bandwidth and the current mode of download.eclipse.org. These steps will probably reveal about 95% of the problems. During the mirroring in step 6, it's verified that all artifacts exists and that packed files can be unpacked.

The builder should make a fairly good job of determining where to send emails when things go wrong. So far, this functionality has been tested using mock emails only. I think we should continue in that vein until everything is found to be working properly and the builder can be used in production. I.e. do not pass the -production flag to the builder unless you really know what you're doing.

How to get started

  1. Start an Eclipse 3.5 installation, I20090407-1430 or newer. If you don't have one available, download from here http://download.eclipse.org/eclipse/downloads/
  2. Use the P2 update manager and add the update site http://download.eclipse.org/tools/buckminster/tools-3.5/
  3. Install the Galileo Builder feature found under the Buckminster Tools category
  4. Check out the project org.eclipse.galileo.build from the CVS repository at :pserver:anonymous@dev.eclipse.org:/cvsroot/callisto. This is the project that contains all the contributions.

Running the build

From the command line

Just type:
eclipse -nosplash -application org.eclipse.buckminster.galileo.build.app <options>

From within the IDE

Create a Launch Configuration of type Eclipse Application, check Run an application, select org.eclipse.buckminster.galileo.build.app, go to the Arguments tab and enter the options, then click Run (or Debug).

Hint: If you want to point to the contributions you have checked out into your workspace, use:
-buildModel "${project_loc:org.eclipse.galileo.build}/galileo.build"

Command line options

Option Value Default Description
-buildModel <path to file> This value is required An absolute path to the galileo.build file (the one found adjacent to all contributions in the org.eclipse.galileo.build project)
-verifyOnly N/A N/A Only verify all meta-data. Do not create a mirror
-updateOnly N/A N/A Reuse the results of the previous run, i.e. update metadata and, if applicable, the mirror
-production N/A N/A Enable sending of emails to proper addresses. Only mock emails can be sent unless this option is in effect (see -mockEmailTo and -mockEmailCC).
-logLevel ERROR, WARNING, INFO, or DEBUG INFO Control the verbosity of the trace output. Using DEBUG forces the logger to print out stack-traces for logged exceptions.
-buildRoot <path to folder> The buildRoot declared in the build model A path denoting the folder where all generated artifacts will end up. This setting overrides the attribute with the same name in the build model.
-buildId <build id> build-<timestamp in the format yyyyMMddHHmm> The ID of the current build.
-targetPlatformRepository <URL> The repository of the EP contribution A pointer to the repository that contains the target platform. Typically the last milestone or an I-Build. The URL should point to a repository folder. A typical examle: http://download.eclipse.org/eclipse/updates/3.5milestones/S-3.5M6-200903130100/. This option should only be used if the EP contribution lacks repository.
-emailFrom <email address> Address of build master The email address to use in as the sender of emails.
-emailFromName <name> The name of the build master The name to associate with the senders email address
-subjectPrefix <string> The label for the build A prefix for the email subject. Will be placed within brackets.
-smtpHost <host name> localhost The name of the SMTP host, something like mail.example.com.
-smtpPort <port number> 25 The port that the SMTP host will listen to.
-smtpUser <user name> Connect without authentication The user name to use if the SMTP requires authentication.
-smtpPassword <user name> Connect without authentication The password to use if the SMTP requires authentication. Defaults to not using authentication
-mockEmailTo <email address> Use contact addresses provided with the contributions An email address that will be used instead of the addresses listed with the contributions. Useful when testing the email sending function.

NOTE: The log will indicate the real address, not the mock address, but no email is sent to the real address.

-mockEmailCC <email address> Use the build masters address An email address that will be used instead of the declared build-masters address. Useful when testing the email sending function.

Source for the Builder

The easy way, just import the source

Use this approach if your objective is to look at the code or just debug through it. Install the Source bundles for Galileo Builder feature. Once that is installed, just Import the org.eclipse.buckminster.galileo.builder into your workspace:

  1. Click Import... to start the Import wizard
  2. Choose Plug-in Development -> Plug-ins and Fragments
  3. Click Next
  4. Check Projects with source folders
  5. Click Next
  6. Select the org.eclipse.buckminster.galileo.builder project and click Add
  7. Click Finish

Getting source from our SVN

You can of course obtain the source from our SVN repository too. This is necessary if you plan to provide patches to the code.

Install Subversive

  1. Add these two sites (see: #Useful Bookmarks)
    http://download.eclipse.org/technology/subversive/0.7/update-site/
    http://polarion.org/projects/subversive/download/eclipse/2.0/update-site/
  2. Select the following features:
    • Everything below the Subversive SVN Team Provider Plugin (Incubation) category
    • These two features below the Subversive SVN Connectors category:
      Subversive SVN Connectors
      SVNKit 1.2.2 Implementation (Optional)
  3. Click next, agree to licenses, and install.
  4. Follow the recommendation and restart your IDE

Checking out the source

  1. Switch to the SVN Repository exploring perspective
  2. Add the SVN repository http://dev.eclipse.org/svnroot/tools/org.eclipse.buckminster
  3. Open trunk and check-out the org.eclipse.buckminster.galileo.builder project.

Getting it all with Buckminster

An alternative to just checking out the project is to use a Buckminster CQUERY.The CQUERY will not only obtain the needed source but also all of the dependent plug-ins. In other words, it will obtain everything necessary to compile and run the source, regardless of what you already have installed in your IDE. Everything will end up in your workspace (binary bundles are imported) so you don't need to worry about messing up your installation. If it's your first time, just follow these instructions.

Install Buckminster into your IDE

  1. Make sure Subversive is installed
  2. Add this site (see: #Useful Bookmarks)
    http://download.eclipse.org/tools/buckminster/updates-3.5
  3. Select the following features:
    • Everything below the Buckminster category
    • Everything below the Buckminster SVN Support (Subversive) category
  4. Click next, agree to licenses, and install.
  5. Follow the recommendation and restart your IDE

Run the CQUERY

  1. Click the File menu and select Open a Component Query
  2. Enter the following URL http://www.eclipse.org/buckminster/samples/queries/builder.cquery
  3. In the query that opens, click Resolve and Materialize

The expected result is that your workspace gets populated with the source for the Galileo builder and that a number of amalgan, emf, m2m, and ocl bundles are imported into your workspace. Those bundles will not have any source.

Useful Bookmarks

Instead of adding the update sites manually, you can store these bookmarks in a file and import them:

<?xml version="1.0" encoding="UTF-8"?>
<bookmarks>
  <site url="http://download.eclipse.org/tools/buckminster/updates-3.5" selected="true" name=""/>
  <site url="http://download.eclipse.org/technology/subversive/0.7/update-site/" selected="true" name=""/>
  <site url="http://polarion.org/projects/subversive/download/eclipse/2.0/update-site/" selected="true" name=""/>
</bookmarks>