Hi Christian,
I guess I found a bug [😊]
your suggestion works if bndrun file *has a* "-runbundles:" entry. value can be
empty or some other value.
However, if there is a value from the previous build and you add a new
"-runrequires" and do a build "-runrequires" entry is replaced by the
additional runbundles instead of union of the required bundles. Every time you
do a build it oscillates between the dependencies. here is how you can
reproduce it:
-runrequires: \
osgi.identity;filter:='(osgi.identity=osgi.enroute.examples.eval.simple.provider)',\
-runbundles: {intentially empty}
then run mvn install with the configuration below, then you get
-runrequires: \
osgi.identity;filter:='(osgi.identity=osgi.enroute.examples.eval.simple.provider)',\
-runbundles: \
org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
org.apache.felix.log;version='[1.0.1,1.0.2)',\
org.apache.felix.scr;version='[2.0.2,2.0.3)',\
org.eclipse.equinox.metatype;version='[1.4.100,1.4.101)',\
org.osgi.service.metatype;version='[1.3.0,1.3.1)',\
osgi.enroute.examples.eval.simple.provider;version='[1.0.0,1.0.1)'
now change the runrequires as follows
-runrequires: \
osgi.identity;filter:='(osgi.identity=osgi.enroute.examples.eval.simple.provider)',\
osgi.identity;filter:='(osgi.identity=osgi.enroute.gogo.shell.provider)'
And run mvn install again, you will get
-runbundles: \
org.apache.felix.gogo.runtime;version='[0.16.2,0.16.3)',\
osgi.enroute.gogo.shell.provider;version='[2.0.0,2.0.1)'
If you run mvn install at this stage without making any change then the run
bundles will look like the previous build, i.e.
-runbundles: \
org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
org.apache.felix.log;version='[1.0.1,1.0.2)',\
org.apache.felix.scr;version='[2.0.2,2.0.3)',\
org.eclipse.equinox.metatype;version='[1.4.100,1.4.101)',\
org.osgi.service.metatype;version='[1.3.0,1.3.1)',\
osgi.enroute.examples.eval.simple.provider;version='[1.0.0,1.0.1)'
To get the *union* of resolutions then you need to clean the "-runbundles" and
run mvn install again, i.e.
-runbundles: \
org.apache.felix.configadmin;version='[1.8.8,1.8.9)',\
org.apache.felix.gogo.runtime;version='[0.16.2,0.16.3)',\
org.apache.felix.log;version='[1.0.1,1.0.2)',\
org.apache.felix.scr;version='[2.0.2,2.0.3)',\
org.eclipse.equinox.metatype;version='[1.4.100,1.4.101)',\
org.osgi.service.metatype;version='[1.3.0,1.3.1)',\
osgi.enroute.examples.eval.simple.provider;version='[1.0.0,1.0.1)',\
osgi.enroute.gogo.shell.provider;version='[2.0.0,2.0.1)'
It think this is a bug and quite dangerous since it will break the runtime
aggregation and will make many people lose a lot hours trying to debug the
problem.
Cheers
-Daghan
________________________________
From: [email protected] <[email protected]> on behalf
of Daghan ACAY <[email protected]>
Sent: Sunday, November 13, 2016 6:26 AM
To: OSGi Developer Mail List
Subject: Re: [osgi-dev] OSGi enRoute Maven Testers wanted ...
Hi Christian,
I tried your suggestion inside the bndrun project as follows:
<build>
<plugins>
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-export-maven-plugin</artifactId>
<version>3.4.0-SNAPSHOT</version>
<configuration>
<resolve>true</resolve>
<failOnChanges>false</failOnChanges>
<bndruns>
<bndrun>osgi.enroute.examples.eval.bndrun</bndrun>
</bndruns>
<targetDir>.</targetDir>
</configuration>
<executions>
<execution>
<goals>
<goal>export</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
The following still gives the same error
bndrun $ mvn install
Result:
[INFO] --- bnd-export-maven-plugin:3.4.0-SNAPSHOT:export (default) @
osgi.enroute.examples.eval.bndrun ---
-runbundles: \
org.apache.felix.configadmin; version='[1.8.8,1.8.9)',\
org.apache.felix.log; version='[1.0.1,1.0.2)',\
org.apache.felix.scr; version='[2.0.2,2.0.3)',\
org.eclipse.equinox.metatype; version='[1.4.100,1.4.101)',\
org.osgi.service.metatype; version='[1.3.0,1.3.1)',\
osgi.enroute.examples.eval.simple.provider; version='[1.0.0,1.0.1)'
am I missing something?
Cheers
-Daghan
________________________________
From: [email protected] <[email protected]> on behalf
of Christian Schneider <[email protected]>
Sent: Thursday, October 13, 2016 8:38 AM
To: OSGi Developer Mail List
Subject: Re: [osgi-dev] OSGi enRoute Maven Testers wanted ...
Hi Daghan,
I think I can answer part of your questions.
Christian
On 12.10.2016 23:27, Daghan ACAY wrote:
>
> 2- how is bndtool resolution and hot deploy from eclipse affected?
> Should we still resolve bndrun in eclipse?
>
You can still resolve using the UI. But you can also do a pure maven build.
Hot deploy does not work reliably. You have to at least do mvn install
on the module you changed and restart your OSGi runtime.
>
> 3- as a suggestion breaking a build and copy pasting will not work in
> ci/cd. I think a more automated solution can be beneficial.
>
You can use this configuration to make the resolve completely automated
<configuration>
<resolve>true</resolve>
<failOnChanges>false</failOnChanges>
</configuration>
--
Christian Schneider
http://www.liquid-reality.de
Liquid Reality - Christian Schneider's Blog - Liquid
Reality<http://www.liquid-reality.de/>
www.liquid-reality.de
Apache karaf is an open source OSGi server developed by the Apache foundation.
It provides very convenient management functionality on top of existing OSGi
frameworks.
Open Source Architect
http://www.talend.com
[http://upload.wikimedia.org/wikipedia/en/2/21/Talend_logo.png]<http://www.talend.com/>
Talend Real-Time Open Source Data Integration Software<http://www.talend.com/>
www.talend.com
Talend open source integration software products offer real-time solutions for
all types of data integration. Learn more about the benefits of Hadoop and
Spark.
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev