[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] Problem installing feature due to unhelpful version range requirements

Hey Francis,

Optional should work in the sense that if you removed the specified version then the feature would still be ok but that would not allow you work with or install a different version.

In any event, it turns out that creating "products" that are meant to stand alone and ones that are meant to be add-ons to something like an IDE are quite different things. You might look at Chapter 23 in the RCP book for a discussion about features and products and the different scenarios.


Francis Upton wrote:
Thanks Jeff, having been so focused on the RCP side of my product, it did not even occur to be that "required" existed. I tried something as a way to get around this. I have a feature that contains the dependencies (deps), and then a feature that defines the product (prod). In prod changed the "deps" to be included but optional. I would have expected that to work (it would have been nice because then I could use the "prod" feature both for my RCP edition and IDE edition. But since it does not, I will make a new "prodIde" feature that has the plugins as required and not included.

I know this is not a p2 question per se, but why wouldn't including and making them optional work?



Jeff McAffer wrote:
I suspect that part of the problem is the use of Includes vs Requires in your features. Quite separate from p2, features have always used exact versions for "included" things and version ranges for "required" things. So when you author your feature to require something and spec a range, that should be translated into the same range in p2 metadata and you should be happy.


Francis Upton wrote:
I am using the standard PDE build scripts that call p2.generator to generate the metadata in my repository. I have many features and products and they are all generated to the same repository. So far so good.

The problem I'm having is the feature.group (e.g. com.oaklandsw.transform.feature.deps.gui.feature.group) in the content.xml get generated with a version range requirement that is exactly the versions of the plugins that are installed in the Eclipse build I'm running against. In my source feature.xml, all of the versions are 0.0.0 which is what I want, but the p2.generator does not use my source, it uses the feature.xml that winds up in the build output, which has all of the versions put into it.

This means that when installing this feature, it will insist on having these exact versions of the plugins, so because I built it on a 3.4.0 system, it will not properly install on a 3.4.1 system (it gets the usual cryptic error message about unable to satisfy the dependency).

If I manually hack the content.xml file to remove these range attributes, I run into a related problem. My product depends on the org.eclipse.rcp feature group, and this feature group in the content.xml (like all of the others) has the exact plugin versions. So the installation will again get a conflict (on swt this time) because the org.eclipse.rcp feature in the installation target does not match the one generated in the content.xml.

I'm sure somewhere I took a left turn that I should not have and there is an easy solution to this mess, but I have not yet found it.

Any ideas?

p2-dev mailing list