eclipse-cbi/targetplatform-dsl

Support resolution of complex .targetplatform into a single aggregate repo + .target

Opened this issue · 1 comments

.targetplatform tend to mix bundles from several repositories, and the resulting .target have the same structure. Depending on multiple remote servers for a build can have performance and stability issues: it can be long to resolve a target platform which references half a dozen remote sites, some of which may not be very reliable.

It would be nice to have a mode in which a (potentially complex) .targetplatform produces:

  1. a single, local p2 repo which mirrors everything (metadata and artifacts) references in the source file
  2. a .target which references that single local p2 repo instead of all the remote ones and all the bundles.

The adavantages I see:

  1. I have no hard data to prove this, but the resulting .target file would probably be faster to load/resolve (both by PDE and Tycho) because it is local.
  2. It would definitly be more reliable as the build would not depend anymore on the accessibility of the original remote update site.
  3. It would make the build more reproducible, as the resulting repo is fixed. When referencing remote sites you are never sure a new version of some component will not appear with no warning.
  4. It would make the fully resolved target platform used for a project versionable (e.g. in a Git repo), including branching and tagging, to ensure even more reproductibility.

Note that the URL of the (single) location referenced in the resulting .target should be configurable, so that the repo can be published in a shared location (for example http://update.example.com/my.product/target).

Jboss tools does that using maven plugins (https://github.com/jbosstools/jbosstools-maven-plugins/wiki#create-an-aggregated-target-definition-from-a-composite-one). I'd love to see this implemented directly on eclipse, from the .tpd files.