Tycho/Split eclipse repository and product packaging types
My memory fades far too quickly, so I want to capture what I can still remember from our discussions during eclipsecon 2011. Feel free add and/or correct what missed or got wrong (though corrections should probably be discussed on tycho-dev first).
I am also fairly certain there were discussions and/or JIRA issues with this information, so please add links here if you know them.
At high level we want to move Eclipse RCP packaging logic to a new eclipse-product packaging type. After this split, eclipse-repository will only create p2 repositories while eclipse-product will only create runnable RCP applications.
eclipse-repository packaging type
The main goal of this packaging type is to aggregate installable units and optionally their corresponding artifacts from multiple disperse sources in a single p2 repository using one of standard p2 repository layouts (most likely "simple").
Build output for projects with packaging=eclipse-repository
- p2 repository directory structure directly consumable from p2 installation GUI or can be uploaded to a remote http server and used from there.
- p2 repository zip file for offline distribution or for upload to remote server
Note that upload to remote servers and managing remotely accessible p2 repositories is outside of scope of eclipse-repository packaging type.
As a personal note, I believe new, tycho specific descriptor format is necessary to define eclipse-repository content and the same format can be used to define p2 repository "views" as discussed in [this] tycho-dev thread.
eclipse-repository user stories
- Eclipse project update site (i.e. m2e). As a project build-and-release engineer, I need to produce a p2 repository for our users to install the project to existing eclipse installations. The repository can contain one or more versions of features and bundles produced by the project but does not contain project's transitive dependencies. Currently supported by eclipse-update-site and eclipse-feature packaging types using site.xml and feature.xml descriptors respectively. At lower level, for each included version I need to aggregate features and bundles and define categories. Also need ability to add "associated sites" to help project's users find and install project's dependencies.
- RCP application update site. As an RCP application build-and-release engineer, I need to produce p2 repository that can be used to distribute updates for an RCP application. Pretty much the same as project update site above, but generated p2 repository should include everything needed to run the RCP application, i.e. equinox, native launchers and all other dependencies.
- Aggregate, filter and categorize content from one or more remote p2 repositories. As a team lead, I want to provide a single p2 repository that contains all tools used by team's developers.