Skip to content

Build an aggregated repository containing all direct-from-maven bundles as well as all Orbit bundles #3

@merks

Description

@merks

Oomph has been building a repository that is computed by composing the direct-from-maven dependencies of all the target platforms of all the projects participating in SimRel that define such dependencies, updated to their latest available version from Maven central:

https://download.eclipse.org/oomph/simrel-maven

The details are documented here:

https://github.com/merks/simrel-maven#readme

Now Oomph is building a repository that is the aggregation of these direct-from-maven dependencies along with the contents of an Orbit repository:

https://download.eclipse.org/oomph/simrel-orbit/

The aggregation is currently defined like this:

image

The reason for the inclusion of org.apache.commons.httpclient from https://download.eclipse.org/tools/orbit/downloads/drops/R20201118194144/repository is because otherwise the aggregation fails like this:

Cannot complete the install because one or more required items could not be found. Software being installed: validationSet_orbit 1.0.0 Missing requirement: org.apache.xmlrpc.client 3.1.3.v20160817-1930 requires 'java.package; org.apache.commons.httpclient 3.0.1' but it could not be found Cannot satisfy dependency: mappedRepo_download.eclipse.org_tools_orbit_downloads_latest-R 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 0.0.0 Cannot satisfy dependency: org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 1.0.0.v20230210-1433 depends on: org.eclipse.equinox.p2.iu; org.apache.xmlrpc.client [3.1.3.v20160817-1930,3.1.3.v20160817-1930] Cannot satisfy dependency: validationSet_orbit 1.0.0 depends on: org.eclipse.equinox.p2.iu; mappedRepo_download.eclipse.org_tools_orbit_downloads_latest-R [1.0.0,1.0.0]
Missing requirement: Apache XML-RPC Client Library 3.1.3.v20160817-1930 (org.apache.xmlrpc.client 3.1.3.v20160817-1930) requires 'java.package; org.apache.commons.httpclient 3.0.1' but it could not be found

JavaPackage(org.apache.commons.httpclient 3.0.1) is required by:
ValidationSet(orbit)
Contribution(orbit)
MappedRepository(https://download.eclipse.org/tools/orbit/downloads/latest-R)
InstallableUnit(org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 1.0.0.v20230210-1433)
InstallableUnit(org.apache.xmlrpc.client 3.1.3.v20160817-1930)

Of course we could just make that repository a validation repository, but I don't think it makes sense to build a repository where some of the IUs can't actually be installed because of missing requirements. (The direct-from-maven repository is separately tested for such requirement completeness.)

The https://download.eclipse.org/eclipse/updates/4.27/R-4.27-202303020300 repository is added as validation repository because some IUs explicitly require org.eclipse.osgi but they would likely be better of with package imports of the org.osgi packages they are actually using, e.g.,

Cannot complete the install because one or more required items could not be found. Software being installed: validationSet_orbit 1.0.0 Missing requirement: javax.xml 1.3.4.v201005080400 requires 'osgi.bundle; org.eclipse.osgi 0.0.0' but it could not be found Missing requirement: javax.xml 1.4.1.v20220503-2331 requires 'osgi.bundle; org.eclipse.osgi 0.0.0' but it could not be found Cannot satisfy dependency: jakarta.xml.bind 2.3.3.v20221203-1659 depends on: java.package; javax.xml.datatype 1.3.0 Cannot satisfy dependency: mappedRepo_download.eclipse.org_tools_orbit_downloads_latest-R 1.0.0 depends on: org.eclipse.equinox.p2.iu; org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 0.0.0 Cannot satisfy dependency: org.apache.santuario.xmlsec 2.2.0.v20221112-0806 depends on: java.package; javax.xml.bind [2.3.0,3.0.0) Cannot satisfy dependency: org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 1.0.0.v20230210-1433 depends on: org.eclipse.equinox.p2.iu; org.apache.santuario.xmlsec [2.2.0.v20221112-0806,2.2.0.v20221112-0806] Cannot satisfy dependency: validationSet_orbit 1.0.0 depends on: org.eclipse.equinox.p2.iu; mappedRepo_download.eclipse.org_tools_orbit_downloads_latest-R [1.0.0,1.0.0]
Missing requirement: JAXP XML 1.3.4.v201005080400 (javax.xml 1.3.4.v201005080400) requires 'osgi.bundle; org.eclipse.osgi 0.0.0' but it could not be found
Bundle(org.eclipse.osgi) is required by:
ValidationSet(orbit)
Contribution(orbit)
MappedRepository(https://download.eclipse.org/tools/orbit/downloads/latest-R)
InstallableUnit(org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 1.0.0.v20230210-1433)
InstallableUnit(org.apache.santuario.xmlsec 2.2.0.v20221112-0806)
InstallableUnit(jakarta.xml.bind 2.3.3.v20221203-1659)
InstallableUnit(javax.xml 1.3.4.v201005080400)
Missing requirement: XML Commons External Components XML APIs 1.4.1.v20220503-2331 (javax.xml 1.4.1.v20220503-2331) requires 'osgi.bundle; org.eclipse.osgi 0.0.0' but it could not be found

Bundle(org.eclipse.osgi) is required by:
ValidationSet(orbit)
Contribution(orbit)
MappedRepository(https://download.eclipse.org/tools/orbit/downloads/latest-R)
InstallableUnit(org.eclipse.orbit.releng.recipes.feature.aggregation.feature.group 1.0.0.v20230210-1433)
InstallableUnit(org.apache.santuario.xmlsec 2.2.0.v20221112-0806)
InstallableUnit(jakarta.xml.bind 2.3.3.v20221203-1659)
InstallableUnit(javax.xml 1.4.1.v20220503-2331)

The build generates reports and we can see that there are a great many duplicates:

image

We should consider whether it makes sense for Orbit to continue to provide bundles for which there are also direct-from-maven versions because of course an important SimRel goal is to reduce or eliminate the number of duplicates. We saw during the last release cycle all the problems around gson versions, so duplicates can and do cause problems even for bundles that are not singletons.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions