Thanks a lot Claus!

Given that we now make no distinction between bundles and standard JARs
through the packaging type, I was having the OSGi MANIFEST generation
triggered for bundles where its irrelevant, e.g. camel-grape,
camel-spring-boot, many examples, etc. So I added a profile which is
activated by default and is disabled through a new POM property
camel.osgi.skip, which I added to the POMs of such modules.

I was also able to upgrade the version of the maven-bundle-plugin to the
latest 3.0.1.

Hopefully I'll be able to finish my tests tomorrow and merge the branch
into master for a full test in JKS.

>From then on... let the lambda fun begin (for features we don't intend to
backport)!

Cheers,

*Raúl Kripalani*
PMC & Committer @ Apache Ignite, Apache Camel | Integration, Big Data and
Messaging Engineer
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
Blog: raul.io | twitter: @raulvk <https://twitter.com/raulvk>

On Sun, Mar 27, 2016 at 5:24 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> I got the OSGi tests to work with karaf 4 and they are all passing now
> for the features tests. There is a few that has been @Ignored because
> of known issues. eg we need a new SMX bundle for them.
>
> You can run these tests reliable using a bash script
>
> cd tests/camel-itest-karaf
> ./run-tests.sh
>
> You can also try running using mvn with
>
> mvn clean install
>
> But the latter tend to break on my computer after 20 or so tests. The
> scripts runs reliable and it also cleanup dangling karaf JVMs. But
> generally its been safer to run one mvn goal per test it seems.
>
> I also fixed the mistakes in karaf features and the tests so they are
> working again.
>
> Raul you should be able to use that on your branch to give the osgi tests
> a go.
>
>
>
>
>
>
> On Sat, Mar 26, 2016 at 5:47 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> > I managed to get the CI jobs to complete now with setting higher memory.
> >
> > The snapshots are now deployed and the CI jobs for osgi is triggered
> >
> > Triggering a new build of Camel.trunk.itest.karaf
> > Triggering a new build of Camel.trunk.itest.osgi
> > Finished: SUCCESS
> >
> >
> >
> > On Sat, Mar 26, 2016 at 12:36 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >> Oh I forgot the CI jobs are here
> >> https://builds.apache.org/view/A-D/view/Camel/
> >>
> >> I got the link from Mueller. Beforehand it was hard/impossible to find
> >> Camel from
> >> https://builds.apache.org/
> >>
> >> So I was for a longer time not able to see all these jobs, and just
> >> got the CI emails to look at.
> >>
> >> But the OSGi jobs rely on the SNAPSHOT of Camel has been built prior
> >> to that, and that job is unreliable. I think we need to look at making
> >> the -notest also publish the SNAPSHOT to the snapshot mvn repo, so the
> >> CI jobs can pickup these new JARs.
> >>
> >> If we get that more reliable then Camel end users can also easier use
> >> SNAPSHOT instead of having to build locally to be sure they get a
> >> clean build of it, otherwise you can end up with mixed builds or
> >> stale/old snapshots.
> >>
> >>
> >>
> >> On Sat, Mar 26, 2016 at 12:33 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >>> On Sat, Mar 26, 2016 at 12:12 PM, Raul Kripalani <ra...@apache.org>
> wrote:
> >>>> Agree with your points.
> >>>>
> >>>> 1. If you use lambdas on 2.18, you can't backport the code.
> >>>>
> >>>> 2. I'll spend some time this weekend installing the bundles on Karaf.
> Karaf
> >>>> 4 is OK, or are we sticking with older versions for 2.x?
> >>>>
> >>>
> >>> Karaf 2.x is dropped. Use Karaf 4.x as the primary karaf version.
> >>> We may want to add a -Pkaraf3 profile to run against older Karaf 3.x
> containers.
> >>>
> >>>
> >>>> 3. I'll also run our OSGi itests, but it may be worth having Jenkins
> do all
> >>>> this. Could you configure a job in JKS to build this branch? I don't
> have
> >>>> job admin rights I believe.
> >>>>
> >>>
> >>> We already have some CI jobs to run 2 osgi based tests
> >>>
> >>> - tests/camel-itest-karaf
> >>> - tests/camel-itest-osgi
> >>>
> >>> The former tests that the Camel component can be installed, it does
> >>> this using pax-exam to bootup karaf and install the camel-xxx feature
> >>> and find the component and then tear down the test.
> >>>
> >>> You can run these tests with the -Pkaraf4 profile.
> >>> But mind I had trouble with these tests may stop after 20 or so tests
> >>> and leave some karaf JVMs dangling. There is a kill-karaf.sh script to
> >>> kill em.
> >>>
> >>> The camel-itest-osgi is likely in some state where some tests would
> >>> fail even for older branches. But these are unit tests that run Camel
> >>> apps in karaf and do some testing stuff like we do in regular
> >>> component tests. This has not yet been migrated to karaf 4, and run on
> >>> karaf 2.x. But you can give it a go and see how bad/good it is. It
> >>> used to be able to run almost all tests and pass. And we had also had
> >>> periods where everything was green.
> >>>
> >>> However people dont write so many osgi tests so this module do not
> >>> have so much love. And there are plenty of components that are not
> >>> being tested.
> >>>
> >>>
> >>>> 4. It's necessary to configure the maven-jar-plugin to explicitly use
> a
> >>>> manifest file, otherwise the plugin generates its own. Originally I
> tried
> >>>> adding the config to the build plugins in the parent POM, but it
> failed for
> >>>> artifacts of type=maven-plugin. Hence I placed it in pluginManagement
> and
> >>>> then incorporated it in those intermediate POMs (components, examples,
> >>>> etc.) whose children built normal JARs. However, I ended up tracing
> the
> >>>> issue to a conflict introduced by the config of the maven-jar-plugin
> that
> >>>> maven-plugin injects, and solved it with a couple
> >>>> of combine.self="override". Hence, I think I might be able to push our
> >>>> maven-jar-plugin config back to the parent POM and to the build
> section.
> >>>>
> >>>
> >>> Ah okay. I am okay with we can do "anything" we need to build all the
> >>> Camel components and whatnot.
> >>>
> >>> Its more what the impact is for end users. If we can make out examples
> >>> and maven archetypes simpler and easier that would be cool. But mind
> >>> that not all examples are osgi examples.
> >>>
> >>> But it looks promising your work - thanks for starting this hard work.
> >>>
> >>>
> >>>
> >>>> Cheers,
> >>>>
> >>>> *Raúl Kripalani*
> >>>> PMC & Committer @ Apache Ignite, Apache Camel | Integration, Big Data
> and
> >>>> Messaging Engineer
> >>>> http://about.me/raulkripalani |
> http://www.linkedin.com/in/raulkripalani
> >>>> Blog: raul.io | twitter: @raulvk <https://twitter.com/raulvk>
> >>>>
> >>>> On Sat, Mar 26, 2016 at 10:12 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >>>>
> >>>>> Hi
> >>>>>
> >>>>> Good to hear that we may drop the <bundle> extension, nice work.
> >>>>>
> >>>>> For camel-core I have thought of build the manifest.mf by hand so we
> >>>>> can better control it. It seems the bundle plugin has its issues with
> >>>>> different versions to build it, as you say.
> >>>>>
> >>>>> Have you tried testing any of these JARs in OSGi? It would be good if
> >>>>> you try that and install some of the examples in a karaf 4 container
> >>>>> and see how it runs.
> >>>>>
> >>>>> For lambda code in the existing source code then we cannot do that
> for
> >>>>> code that need to be backported to 2.17 and 2.16 branches. We can
> only
> >>>>> use lambdas in new code that is not to be backported.
> >>>>>
> >>>>> For Camel 3.0 we can then covert the code to use lambads all over
> >>>>> where applicable. There is likely some tools in IDEA or Eclipse etc
> >>>>> that can assist with that.
> >>>>>
> >>>>>
> >>>>> And Camel end users can use lamdas today with their own code, also
> >>>>> with older Camel versions on java 8.
> >>>>>
> >>>>> It may be that those people are using a new bundle plugin, or more
> >>>>> likely not using OSGi at all.
> >>>>>
> >>>>>
> >>>>> I would like to see more OSGi testing on this branch before any
> merge.
> >>>>> OSGi is complex and pain to maintain and build modules. So we need to
> >>>>> be sure we are on a path that we can do this. There is 250+ maven
> >>>>> modules that are build as OSGi so it better have to work for us.
> >>>>>
> >>>>> But I really like that the bundle plugin is just generating a
> >>>>> MANIFEST.MF file that the JAR plugin just slurps in. Can it not be
> >>>>> configured somehow so the generated MANIFEST.MF is not replace so end
> >>>>> users do not need to do anything with a JAR plugin?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Sat, Mar 26, 2016 at 1:09 AM, Raul Kripalani <ra...@apache.org>
> wrote:
> >>>>> > There is good news, bad news, and good news again ;-)
> >>>>> >
> >>>>> > *Good news:* Now that Camel 2.18 is officially on JDK8, we can use
> >>>>> lambdas
> >>>>> > in our code. Woohoo!
> >>>>> >
> >>>>> > *Bad news:* Our current Maven build breaks when doing so.
> >>>>> >
> >>>>> > This is what happens:
> >>>>> >
> >>>>> >    1. maven-bundle-plugin version 2.3.x cannot parse JDK8 lambdas.
> [1]
> >>>>> >
> >>>>> >    2. Upgrading it to the latest version (3.0.1) makes the plugin
> fail
> >>>>> > miserably (at least on camel-core).
> >>>>> >
> >>>>> >    3. Using the latest 2.x version of the maven-bundle-plugin
> (2.5.4)
> >>>>> makes
> >>>>> > the maven-shade-plugin fail with this error in turn:
> >>>>> >
> >>>>> > [ERROR] The project main artifact does not exist. This could have
> the
> >>>>> > following
> >>>>> > [ERROR] reasons:
> >>>>> > [ERROR] - You have invoked the goal directly from the command
> line. This
> >>>>> is
> >>>>> > not
> >>>>> > [ERROR]   supported. Please add the goal to the default lifecycle
> via an
> >>>>> > [ERROR]   <execution> element in your POM and use "mvn package" to
> have
> >>>>> it
> >>>>> > run.
> >>>>> > [ERROR] - You have bound the goal to a lifecycle phase before
> "package".
> >>>>> > Please
> >>>>> > [ERROR]   remove this binding from your POM such that the goal
> will be
> >>>>> run
> >>>>> > in
> >>>>> > [ERROR]   the proper phase.
> >>>>> >
> >>>>> >    4. Upgrading the shade plugin doesn't help.
> >>>>> >
> >>>>> >    5. The situation is dirty :P
> >>>>> >
> >>>>> > The problem is the usage of the 'bundle' custom packaging type
> enabled by
> >>>>> > extensions='true' in the maven-bundle-plugin.
> >>>>> >
> >>>>> > *Good news again:*
> >>>>> >
> >>>>> > We can avoid the problem by reverting back to the standard 'jar'
> >>>>> packaging
> >>>>> > type, which even puts us in a less brittle situation wrt. to
> future Maven
> >>>>> > plugins we may want to add/upgrade. This implies:
> >>>>> >
> >>>>> >    1. Calling the maven-bundle-plugin:manifest goal (instead of the
> >>>>> bundle
> >>>>> > goal) to only generate the MANIFEST.MF.
> >>>>> >
> >>>>> >    2. Adding it to the JAR via an option in the the
> maven-jar-plugin:
> >>>>> >
> >>>>> >     <plugin>
> >>>>> >         <groupId>org.apache.maven.plugins</groupId>
> >>>>> >         <artifactId>maven-jar-plugin</artifactId>
> >>>>> >         <version>${maven-jar-plugin-version}</version>
> >>>>> >         <configuration>
> >>>>> >           <archive>
> >>>>> >
> >>>>> >
> >>>>>
> <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
> >>>>> >           </archive>
> >>>>> >         </configuration>
> >>>>> >       </plugin>
> >>>>> >
> >>>>> > I've made the change. But since it's a big one, I didn't push to
> master
> >>>>> but
> >>>>> > to a branch for us to review first: jdk8-lambdas.
> >>>>> >
> >>>>> > The build passes (yay!) but OSGi battle testing is a must to
> ensure there
> >>>>> > are no regressions.
> >>>>> >
> >>>>> > Could you have a quick look? If no feedback is received until
> Monday EOD,
> >>>>> > I'll merge to master. If feedback is positive, we can merge
> earlier to
> >>>>> > enable people to develop with lambdas finally.
> >>>>> >
> >>>>> > ---
> >>>>> >
> >>>>> > Just in case you're not aware, the OSGi legend Neil Bartlett has
> just
> >>>>> > released a new bnd-maven-plugin [2] that claims to overcome such
> >>>>> > dysfunctions, as well as others, of the Felix plugin. He
> complained about
> >>>>> > how the custom packaging type breaks integration with other plugins
> >>>>> > downstream (what we're experiencing).
> >>>>> >
> >>>>> > I see no reason to migrate to his bnd-maven-plugin, but we should
> keep it
> >>>>> > in mind for the future.
> >>>>> >
> >>>>> > [1] https://issues.apache.org/jira/browse/FELIX-4005
> >>>>> > [2]
> http://njbartlett.name/2015/03/27/announcing-bnd-maven-plugin.html
> >>>>> >
> >>>>> > Cheers,
> >>>>> >
> >>>>> > *Raúl Kripalani*
> >>>>> > PMC & Committer @ Apache Ignite, Apache Camel | Integration, Big
> Data and
> >>>>> > Messaging Engineer
> >>>>> > http://about.me/raulkripalani |
> http://www.linkedin.com/in/raulkripalani
> >>>>> > Blog: raul.io | twitter: @raulvk <https://twitter.com/raulvk>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Claus Ibsen
> >>>>> -----------------
> >>>>> http://davsclaus.com @davsclaus
> >>>>> Camel in Action 2: https://www.manning.com/ibsen2
> >>>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> -----------------
> >>> http://davsclaus.com @davsclaus
> >>> Camel in Action 2: https://www.manning.com/ibsen2
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> http://davsclaus.com @davsclaus
> >> Camel in Action 2: https://www.manning.com/ibsen2
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Reply via email to