Skip to content
This repository has been archived by the owner on Oct 20, 2018. It is now read-only.

Composite Repository Build

hmalphettes edited this page Jun 16, 2011 · 4 revisions

Composite Repositories

p2 composite repositories are a pair of XML files that link to a list of other repositories. They are similar to an html page that list a set of hyperlinks. The links must either be relative to the current location either be complete URLs.

Composite repositories are generated by the tycho-p2-scripts in an easy manner by navigating the filesystem and using glob expressions.

A single composite repository is generated by each project.

Project layout

tycho-p2-scripts requires the 2 files to be present at the root of the project:

  • Buildfile: defines the groupId and the version and build number.

  • children.repos: defines the selectors of the children repositories.

Buildfile

At the minimum, it must define a project with a version and a groupId:

VERSION_NUMBER="1.0.0.001-SNAPSHOT"
define "intalio-mycompositerepo" do
  project.version = VERSION_NUMBER
  project.group = "org.intalio.cloud.mycompositerepo"
  #Insert custom build here
end

It is important to pad the build number with ‘0s’ 3 digits long is recommended.

Although the syntax follows the apache-buildr syntax, note that tycho-p2-script does not invoke buildr. If buildr is present it is possible to define some tasks to execute. tycho-p2-scripts will invoke them and give you the opportunity to do more than just generate the composite repository.

children.repos file

Each line of the ‘repos’ file can be:

  • A comment if it starts with ‘#’

  • An absolute URL to another repository if it contains ‘://’

  • An absolute path on the filesystem if it starts with ‘/’

  • The definition of a base directory if it starts with BASE=

  • A path relative to the current BASE to a p2 repository.

  • Both the absolute and relative path support a glob expression for the last segment of the path.

  • Each line if it contains shell variables will have those variables expanded.

Sample children.repos:

#add an external repo to the children:
http://www.intalio.org/public/p2repo/org/jruby/
#add a set of repos relative to the home directory
BASE=$HOME/p2repo/org
eclipse/eclipse/updates/3.6
eclipse/jetty/updates/3.7milestones/S-3.7.RC3-201106010634
#BASE: all relative paths will be relative to the BASE
BASE=$HOME/p2repo/com/intalio/cloud
#select the child repositories: select the versionned repositories
#then choose the latest ones amongst each selected repository.
cas/master/*
platform/performance/1.0.0.004
bpm/master/2.0.0.*