You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Konrad Baczynski <ko...@empirica.io> on 2022/06/08 07:17:31 UTC

Multiple parent feature versions

Hello,

I am doing provisioning via features.

Let's assume you have one parent features repository and two child 
repositories that have defined the parent one. Every child repository 
has one feature which depends on the same feature in the parent repository.

You upgraded one bundle version in the feature in the parent repository. 
You upgraded the parent version in the first child repository, but you 
didn't do it for the other one.

Then you added both child repositories, when you install both features 
from child repositories, you have two versions of the bundle from the 
feature from the parent repository. Is there a possibility to cope with 
it? Since the versions were backward compatible, you would like to have 
only one version.


Best regards

Konrad Bączyński

-- 
Konrad Bączyński
Software developer
konrad.baczynski@empirica.io

Empirica Sp. z o.o.
ul. Curie-Skłodowskiej 12
50-381 Wrocław

www.empirica.pl
  
NIP 8982201370, REGON 021955151

Zarejestrowana w Sądzie Rejonowym dla Wrocławia-Fabrycznej, VI Wydział Gospodarczy Krajowego Rejestru Sądowego pod numerem KRS 0000914199. Kapitał zakładowy: 650.000,00 zł opłacony w całości.


Re: Multiple parent feature versions

Posted by Łukasz Dywicki <lu...@code-house.org>.
Hey Konrad,
There are few ways you can avoid issue:
1) Use version ranges for features
2) Use version ranges for bundles
3) Override versions in custom assembly

Case 1 and 2 allow you to import feature sets independently of each 
other. Version range usually aims highest version within range, so you 
can move within specified limit ie. 0.x or 0.0.x. Yet, one thing to 
remember is that version ranges are handled differently at feature 
element (then it's OSGi version range) and at feature/bundle URI (then 
it's Maven version range). Both works mostly fine, but for Maven version 
3.0-SNAPSHOT (alpha, beta as well) is outside of 3.0 range while for 
OSGi it is within the bound as SNAPSHOT is just an qualifier.
For third option you can centrally adjust which version to go with, 
simply overriding versions used in both feature sets. Obviously it is 
not as handy as first two, as it requires you to control a third file, 
yet it gives you a complete control over everything. I use it ie. to 
force specific versions of netty or jetty across third party feature 
sets I sometimes use.
A compact example of how to achieve that based on pax/log4j 2.x issue 
from last year: https://github.com/openhab/openhab-distro/pull/1350/files

Powodzenia! :)
Łukasz

On 8.06.2022 09:17, Konrad Baczynski wrote:
> Hello,
> 
> I am doing provisioning via features.
> 
> Let's assume you have one parent features repository and two child 
> repositories that have defined the parent one. Every child repository 
> has one feature which depends on the same feature in the parent repository.
> 
> You upgraded one bundle version in the feature in the parent repository. 
> You upgraded the parent version in the first child repository, but you 
> didn't do it for the other one.
> 
> Then you added both child repositories, when you install both features 
> from child repositories, you have two versions of the bundle from the 
> feature from the parent repository. Is there a possibility to cope with 
> it? Since the versions were backward compatible, you would like to have 
> only one version.
> 
> 
> Best regards
> 
> Konrad Bączyński
>