Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 342350

Summary: Incorrect dependencies in epp.packages.linuxtools
Product: [Technology] EPP Reporter: Thomas Hallgren <thomas>
Component: linuxtools-packageAssignee: Project Inbox <epp.packager-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: david_williams, jonah, Kenn.Hussey, michal.ruza, miles.daffin, overholt
Version: unspecified   
Target Milestone: 1.3.0   
Hardware: All   
OS: All   
Whiteboard:

Description Thomas Hallgren CLA 2011-04-09 05:36:15 EDT
The epp.package.linuxtools IUs found in the Helios repository all have a broken requirement generated for org.eclipse.epp.package.linuxtools.feature.feature.group. The requirement is stated like this:

        <required namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.epp.package.linuxtools.feature.feature.group' range='[1.3.2.20110301-1807,1.3.2.20110301-1807]'/>

and while it looks correct at first, it is actually broken. The targeted feature is filtered with:

  (&(osgi.os=linux)(osgi.ws=gtk)(|(osgi.arch=x86)(osgi.arch=x86_64)))

and unless the requirement also has this filter, it will render the IU uninstallable on environments that are discriminated by the filter. This is because p2 will see the unfiltered requirement but it will be unable to resolve it due to the filter on the IU that is expected to fulfill it. I can see two solutions to this problem.

Either add a corresponding filter to the 'epp.package.linuxtools' IU so that it, as a whole, is discriminated the same way as the feature that it requires. Or, add a corresponding same filter only to the requirement. Doing the latter means that the 'epp.package.linuxtools' can still be installed on all platforms but the required feature will be left out.

While this bug might seem like a minor problem (the IU will not be considered in the p2 installer since it's name doesn't end with 'feature.group'), the inconsistency does have ramifications that goes beyond that use case. For instance, the Helios repository as a whole cannot be mirrored using a validating mirroring tool such as the b3.aggregator without adding special exceptions.
Comment 1 David Williams CLA 2011-04-11 14:29:35 EDT
So ... what's to be done here? 

I can't see rebuilding the existing repository, due to too much risk of regressing something else. Is there a "mini repository" that could be added to our composite repo so "make it right"? If not, I suspect this will be a "won't fix" unless anyone has any other suggestions. 

How can this problem be avoided in future? 

Can improvements be made to aggregator so would be caught or, warned about, in future? Or, improvements in processes or tests? 

Is it just a matter of the "owning" project to do more testing?
Comment 2 Thomas Hallgren CLA 2011-04-11 16:38:30 EDT
(In reply to comment #1)
> How can this problem be avoided in future? 
> 
> Can improvements be made to aggregator so would be caught or, warned about, in
> future? Or, improvements in processes or tests? 
> 
This would have been detected by the aggregator if the epp repository was part of the Helios aggregation. It wasn't. Instead, it was added to the Helios Composite after the fact. Perhaps this can be done differently with Indigo?
Comment 3 Andrew Overholt CLA 2011-04-11 16:40:17 EDT
IIRC, Markus created the EPP package IU for us originally.  We do indeed only want the EPP package to be available for x86 and x86_64 Linux GTK due.  If I'm reading your comments correctly, this means that we should "add a corresponding filter to the 'epp.package.linuxtools' IU so that it, as a whole, is discriminated the same way as the feature that it requires"?
Comment 4 Thomas Hallgren CLA 2011-04-11 16:41:58 EDT
(In reply to comment #3)
> ... this means that we should "add a corresponding
> filter to the 'epp.package.linuxtools' IU so that it, as a whole, is
> discriminated the same way as the feature that it requires"?

Yes. With that objective, that would be the best solution.
Comment 5 Andrew Overholt CLA 2011-04-27 15:17:25 EDT
(In reply to comment #4)
> (In reply to comment #3)
> > ... this means that we should "add a corresponding
> > filter to the 'epp.package.linuxtools' IU so that it, as a whole, is
> > discriminated the same way as the feature that it requires"?
> 
> Yes. With that objective, that would be the best solution.

It's not clear to me how to proceed.  Is this something Markus/someone else must do when the metadata is created or is it something I can do?
Comment 6 Markus Knauer CLA 2011-05-21 10:09:59 EDT
I did some changes, see the inclusion of the linuxtools feature below:

+ org.eclipse.epp.allpackages.indigo.feature
---+ includes features
---+---+ org.eclipse.epp.package.common.feature
---+---+ org.eclipse.epp.package.cpp.feature
---+---+ ...
---+---+ org.eclipse.epp.package.linuxtools.feature (now with os="linux" arch="x86,x86_64")

+ org.eclipse.epp.package.linuxtools.feature itself with os="linux" ws="gtk" arch="x86,x86_64" (unchanged)
---+ includes bundle
---+---+ org.eclipse.epp.package.linuxtools (without any filters)
---+ includes product definition
---+---+ epp.product (unfortunately without any filters)
---+---+---+ defines the epp.package.linuxtools IU

Maybe the change of the top-level EPP feature (org.eclipse.epp.allpackages.indigo.feature) that is used in the Buckminster build is enough, but I am a bit sceptical. Unfortunately it is not possible to add any filters to the product definition in the epp.product configuration file. Any thoughts? Can we do something with a p2.inf?
Comment 7 Jonah Graham CLA 2021-05-07 09:41:32 EDT
This has been fixed a long time ago and now linux tools are part of the CPP package.