Discussion:
[tycho-dev] Reusing (config.)a.jre.javase from TP
Mickael Istria
2018-02-20 16:51:14 UTC
Permalink
Hi all,

I'm working on improving support for BREE in product export, to avoid
definitively the kind of issues we've seen with the support of JavaSE-9
BREE or earlier ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=387701 )
before JavaSE-10 gets introduced.
I think there are multiple complementary paths of resolution here. One is
to implement in p2 the proposal in
https://bugs.eclipse.org/bugs/show_bug.cgi?id=387701#c0 and could even be
extended wider to simply not make a product IU have a requirement on a
recent JavaSE version after all since the product typically can boot with
any JavaSE and the actual required version is defined by transitive
dependencies. Another path could be to have Tycho reusing
(config.)a.jre.javase from the target-platform definition instead of
regenerating a different IU. I'd like to try to implement both.
I've got a basic question about this later one: why does Tycho not consume
the existing (config.)a.jre.javase IUs? Is this necessary? Would it make
sense to implement a strategy preferring reuse of those existing ius?

Thanks in advance for your insights.
--
Mickael Istria
Eclipse IDE <https://www.eclipse.org/downloads/eclipse-packages/>
developer, at Red Hat Developers <https://developers.redhat.com/> community
Elected Committer Representative at the Eclipse Foundation
<https://www.eclipse.org/org/> board of directors
Mickael Istria
2018-02-20 17:13:10 UTC
Permalink
I found that StandardEEResolutionHints.isNonApplicableEEUnit() does exclude
existing (config.)a.jre.avase from resolution for the following reason

"p2 repositories are polluted with useless a.jre/config.a.jre IUs. These
IUs do not represent current/desired JRE and can expose resolver to
packages that are not actually available."

I looked at the IU definition in the Eclipse Platform repo:

<unit id='a.jre.javase' version='9.0.0' singleton='false'>
<provides size='182'>
<provided namespace='org.eclipse.equinox.p2.iu' name='a.jre.javase'
version='9.0.0'/>
<provided namespace='java.package' name='javax.accessibility'
version='0.0.0'/>
<provided namespace='java.package' name='javax.activation'
version='0.0.0'/>
<provided namespace='java.package' name='javax.activity'
version='0.0.0'/>
<provided namespace='java.package' name='javax.annotation'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.annotation.processing' version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto'
version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto.interfaces'
version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto.spec'
version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio'
version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.event'
version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.metadata'
version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.plugins.bmp'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.imageio.plugins.jpeg' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.stream'
version='0.0.0'/>
<provided namespace='java.package' name='javax.jws'
version='0.0.0'/>
<provided namespace='java.package' name='javax.jws.soap'
version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model'
version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.element'
version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.type'
version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.util'
version='0.0.0'/>
<provided namespace='java.package' name='javax.management'
version='0.0.0'/>
<provided namespace='java.package' name='javax.management.loading'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.management.modelmbean' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.monitor'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.management.openmbean' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.relation'
version='0.0.0'/>
<provided namespace='java.package' name='javax.management.remote'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.management.remote.rmi' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.timer'
version='0.0.0'/>
<provided namespace='java.package' name='javax.naming'
version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.directory'
version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.event'
version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.ldap'
version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.net'
version='0.0.0'/>
<provided namespace='java.package' name='javax.net.ssl'
version='0.0.0'/>
<provided namespace='java.package' name='javax.print'
version='0.0.0'/>
<provided namespace='java.package' name='javax.print.attribute'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.print.attribute.standard' version='0.0.0'/>
<provided namespace='java.package' name='javax.print.event'
version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi.CORBA'
version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi.ssl'
version='0.0.0'/>
<provided namespace='java.package' name='javax.script'
version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.security.auth.callback' version='0.0.0'/>
<provided namespace='java.package'
name='javax.security.auth.kerberos' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.login'
version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.x500'
version='0.0.0'/>
<provided namespace='java.package' name='javax.security.cert'
version='0.0.0'/>
<provided namespace='java.package' name='javax.security.sasl'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.midi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.midi.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.sampled'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.sampled.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sql'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset.serial'
version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.border'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.colorchooser'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.event'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.filechooser'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.basic'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.metal'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.multi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.nimbus'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.synth'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.table'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text.html'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.swing.text.html.parser' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text.rtf'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.tree'
version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.undo'
version='0.0.0'/>
<provided namespace='java.package' name='javax.tools'
version='0.0.0'/>
<provided namespace='java.package' name='javax.transaction'
version='0.0.0'/>
<provided namespace='java.package' name='javax.transaction.xa'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.annotation'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.xml.bind.annotation.adapters' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.attachment'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.helpers'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.util'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dom'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig.dom'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.xml.crypto.dsig.keyinfo' version='0.0.0'/>
<provided namespace='java.package'
name='javax.xml.crypto.dsig.spec' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.datatype'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.namespace'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.parsers'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.soap'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream.events'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream.util'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.dom'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.sax'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.stax'
version='0.0.0'/>
<provided namespace='java.package'
name='javax.xml.transform.stream' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.validation'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.handler'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.handler.soap'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.http'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.soap'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.spi'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.spi.http'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.wsaddressing'
version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.xpath'
version='0.0.0'/>
<provided namespace='java.package' name='org.ietf.jgss'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA_2_3'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.CORBA_2_3.portable' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.CORBA.DynAnyPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.ORBPackage'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.portable'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.CORBA.TypeCodePackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CosNaming'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.CosNaming.NamingContextExtPackage' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.CosNaming.NamingContextPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.Dynamic'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.DynamicAny'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.DynamicAny.DynAnyFactoryPackage' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.DynamicAny.DynAnyPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.IOP'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.IOP.CodecFactoryPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.IOP.CodecPackage'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.Messaging'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableInterceptor' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableInterceptor.ORBInitInfoPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer'
version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableServer.CurrentPackage' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableServer.POAManagerPackage' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableServer.POAPackage' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableServer.portable' version='0.0.0'/>
<provided namespace='java.package'
name='org.omg.PortableServer.ServantLocatorPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.SendingContext'
version='0.0.0'/>
<provided namespace='java.package' name='org.omg.stub.java.rmi'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.bootstrap'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.css'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.events'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.html'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.ls'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.ranges'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.stylesheets'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.traversal'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.views'
version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.xpath'
version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax'
version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax.ext'
version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax.helpers'
version='0.0.0'/>
<provided namespace='osgi.ee' name='OSGi/Minimum' version='1.0.0'/>
<provided namespace='osgi.ee' name='OSGi/Minimum' version='1.1.0'/>
<provided namespace='osgi.ee' name='OSGi/Minimum' version='1.2.0'/>
<provided namespace='osgi.ee' name='JRE' version='1.0.0'/>
<provided namespace='osgi.ee' name='JRE' version='1.1.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.0.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.1.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.2.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.3.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.4.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.5.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.6.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.7.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='1.8.0'/>
<provided namespace='osgi.ee' name='JavaSE' version='9.0.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact1'
version='1.8.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact1'
version='9.0.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact2'
version='1.8.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact2'
version='9.0.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact3'
version='1.8.0'/>
<provided namespace='osgi.ee' name='JavaSE/compact3'
version='9.0.0'/>
</provides>
<touchpoint id='org.eclipse.equinox.p2.native' version='1.0.0'/>
</unit>

Which one of the packages is erroneous here to justify exclusion of the IU?
Or maybe the erroneous packages was an issue that was fixed upstream in
Platform/p2 and as a consequence the more recent versions of the IUs
shouldn't be excluded anymore?
Sievers, Jan
2018-02-21 07:33:07 UTC
Permalink
This was implemented by Tobias but here is my understanding:

I think the point was that those IUs provide packages independent of whether they are actually available for a given BREE or not.

E.g. a bundle with BREE JavaSE-1.6 would be able to resolve and compile against packages only introduced with JavaSE-9.
Arguably this case could just as well be checked by compiling against the JDK matching the bundle BREE (useJDK=BREE)

But it could also be the other way around, a bundle with BREE JavaSE-9 explicitly requiring packages in the manifest which were only introduced in JavaSE-9 would not be able to resolve if using a p2 repo that provides a.jre.javase version 1.6.0 only.

Regards
Jan



On 20.02.18, 18:13, "tycho-dev-***@eclipse.org on behalf of Mickael Istria" <tycho-dev-***@eclipse.org on behalf of ***@redhat.com> wrote:

I found that StandardEEResolutionHints.isNonApplicableEEUnit() does exclude existing (config.)a.jre.avase from resolution for the following reason

"p2 repositories are polluted with useless a.jre/config.a.jre IUs. These IUs do not represent current/desired JRE and can expose resolver to packages that are not actually available."


I looked at the IU definition in the Eclipse Platform repo:

<unit id='a.jre.javase' version='9.0.0' singleton='false'>
<provides size='182'>
<provided namespace='org.eclipse.equinox.p2.iu' name='a.jre.javase' version='9.0.0'/>
<provided namespace='java.package' name='javax.accessibility' version='0.0.0'/>
<provided namespace='java.package' name='javax.activation' version='0.0.0'/>
<provided namespace='java.package' name='javax.activity' version='0.0.0'/>
<provided namespace='java.package' name='javax.annotation' version='0.0.0'/>
<provided namespace='java.package' name='javax.annotation.processing' version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto' version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto.interfaces' version='0.0.0'/>
<provided namespace='java.package' name='javax.crypto.spec' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.event' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.metadata' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.plugins.bmp' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.plugins.jpeg' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.imageio.stream' version='0.0.0'/>
<provided namespace='java.package' name='javax.jws' version='0.0.0'/>
<provided namespace='java.package' name='javax.jws.soap' version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model' version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.element' version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.type' version='0.0.0'/>
<provided namespace='java.package' name='javax.lang.model.util' version='0.0.0'/>
<provided namespace='java.package' name='javax.management' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.loading' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.modelmbean' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.monitor' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.openmbean' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.relation' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.remote' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.remote.rmi' version='0.0.0'/>
<provided namespace='java.package' name='javax.management.timer' version='0.0.0'/>
<provided namespace='java.package' name='javax.naming' version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.directory' version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.event' version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.ldap' version='0.0.0'/>
<provided namespace='java.package' name='javax.naming.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.net <http://javax.net>' version='0.0.0'/>
<provided namespace='java.package' name='javax.net.ssl' version='0.0.0'/>
<provided namespace='java.package' name='javax.print' version='0.0.0'/>
<provided namespace='java.package' name='javax.print.attribute' version='0.0.0'/>
<provided namespace='java.package' name='javax.print.attribute.standard' version='0.0.0'/>
<provided namespace='java.package' name='javax.print.event' version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi' version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi.CORBA' version='0.0.0'/>
<provided namespace='java.package' name='javax.rmi.ssl' version='0.0.0'/>
<provided namespace='java.package' name='javax.script' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.callback' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.kerberos' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.login' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.auth.x500' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.cert' version='0.0.0'/>
<provided namespace='java.package' name='javax.security.sasl' version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.midi' version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.midi.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.sampled' version='0.0.0'/>
<provided namespace='java.package' name='javax.sound.sampled.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.sql' version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset' version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset.serial' version='0.0.0'/>
<provided namespace='java.package' name='javax.sql.rowset.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.border' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.colorchooser' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.event' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.filechooser' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.basic' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.metal' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.multi' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.nimbus' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.plaf.synth' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.table' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text.html' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text.html.parser' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.text.rtf' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.tree' version='0.0.0'/>
<provided namespace='java.package' name='javax.swing.undo' version='0.0.0'/>
<provided namespace='java.package' name='javax.tools' version='0.0.0'/>
<provided namespace='java.package' name='javax.transaction' version='0.0.0'/>
<provided namespace='java.package' name='javax.transaction.xa' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.annotation' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.annotation.adapters' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.attachment' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.helpers' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.bind.util' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dom' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig.dom' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig.keyinfo' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.crypto.dsig.spec' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.datatype' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.namespace' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.parsers' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.soap' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream.events' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.stream.util' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.dom' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.sax' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.stax' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.transform.stream' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.validation' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws <http://javax.xml.ws>' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.handler' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.handler.soap' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.http' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.soap' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.spi' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.spi.http' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.ws.wsaddressing' version='0.0.0'/>
<provided namespace='java.package' name='javax.xml.xpath' version='0.0.0'/>
<provided namespace='java.package' name='org.ietf.jgss' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA_2_3' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA_2_3.portable' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.DynAnyPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.ORBPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.portable' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CORBA.TypeCodePackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CosNaming' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CosNaming.NamingContextExtPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.CosNaming.NamingContextPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.Dynamic' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.DynamicAny' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.DynamicAny.DynAnyFactoryPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.DynamicAny.DynAnyPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.IOP' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.IOP.CodecFactoryPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.IOP.CodecPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.Messaging' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableInterceptor' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableInterceptor.ORBInitInfoPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer.CurrentPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer.POAManagerPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer.POAPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer.portable' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.PortableServer.ServantLocatorPackage' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.SendingContext' version='0.0.0'/>
<provided namespace='java.package' name='org.omg.stub.java.rmi' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.bootstrap' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.css' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.events' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.html' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.ls <http://org.w3c.dom.ls>' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.ranges' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.stylesheets' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.traversal' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.views' version='0.0.0'/>
<provided namespace='java.package' name='org.w3c.dom.xpath' version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax' version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax.ext' version='0.0.0'/>
<provided namespace='java.package' name='org.xml.sax.helpers' version='0.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='OSGi/Minimum' version='1.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='OSGi/Minimum' version='1.1.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='OSGi/Minimum' version='1.2.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JRE' version='1.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JRE' version='1.1.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.1.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.2.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.3.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.4.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.5.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.6.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.7.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='1.8.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE' version='9.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact1' version='1.8.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact1' version='9.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact2' version='1.8.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact2' version='9.0.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact3' version='1.8.0'/>
<provided namespace='osgi.ee <http://osgi.ee>' name='JavaSE/compact3' version='9.0.0'/>
</provides>
<touchpoint id='org.eclipse.equinox.p2.native' version='1.0.0'/>
</unit>


Which one of the packages is erroneous here to justify exclusion of the IU? Or maybe the erroneous packages was an issue that was fixed upstream in Platform/p2 and as a consequence the more recent versions of the IUs shouldn't be excluded anymore?
Mickael Istria
2018-02-21 07:54:25 UTC
Permalink
Thanks a lot Jan, that's very helpful. I'll have another round of thoughts
about it.

Loading...