|
Re: Transitive plugin version dependencies [message #330152 is a reply to message #330146] |
Thu, 17 July 2008 11:38 |
Ed Merks Messages: 33264 Registered: July 2009 |
Senior Member |
|
|
Hans,
I'll answer how I think it works. Someone ought to contradict me if I'm
wrong...
Hans Schwaebli wrote:
> We need to have plugins of two different version numbers in the same
> Eclipse directory. The question is how transitive dependencies are
> handled by Eclipse (or OSGI).
>
> Example:
> Plugin A1.0 uses 3rd party plugin B1.0. Plugin B1.0 uses Plugin C1.0.
>
> In the dependencies it is specified that A1.0 needs B1.0 (exact versin
> number). But B1.0 is third party, ant it depends on C1.0-C2.0 (version
> range). This cannot be changed since B and C are third party plugins.
>
> In the plugins folder there are these plugins A1.0, B1.0, B2.0, C1.0
> and C2.0.
Some issues to consider. Many plugins are singletons and that mean two
versions of them cannot both be instantiated. I believe OSGi will always
want to prefer activating the one with the highest version number. But
of course it will also want to resolve version dependencies such that it
can activate the most plugins. I've heard that this general problem is
perhaps an NP-hard or even NP-complete problem to solve optimally.
>
> Of course A1.0 will use B1.0, because it is specified so in the
> dependencies. But will B1.0 use C1.0 or C2.0? In its dependencies
> there is a range from 1.0 to 2.0. Which one will it use when both are
> available?
I think it will tend to prefer the higher numbered version unless other
constraints force a different choice. You could make A 1.0 itself
specify a version for C that might be more restrictive than B's range,
right?
>
> C2.0 must not be used. Maybe its not used anyway. I am asking you
> this. But if it is used, could it be possible to restrict it to 1.0?
I think A itself could do that.
> Remember that B and C are 3rd party plugins and that both plugin
> versions need to be in the plugins folder because another plugin needs
> them.
If B and C are singletons and other plugins specific require C 2.0 but
you want C 1.0 I think you'll find someone is a loser.
>
> A bit complicated, I know.
Theory and practice don't always coincide. Test, test, test....
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Powered by
FUDForum. Page generated in 0.03451 seconds