On Tue, Mar 29, 2016 at 1:04 AM, Raul Kripalani <ra...@apache.org> wrote:
> 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.
>

Can we flip the switch so you have to enable it on the maven modules
that you want to be an osgi bundle. I am asking because people who are
not using OSGi should really not see camel.osgi.skip=true in the
examples / camel-spring-boot-starter etc.

They should be clean and without any osgi stuff.

Also I would rather make it explicit that this maven module is built
as an osgi bundle if it has camel.osgi=true.




> 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
>>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to