Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Plugin Development Environment (PDE) » Re: Building an Epsilon product is, well, hum...
Re: Building an Epsilon product is, well, hum... [message #42710] Tue, 27 January 2009 07:52
Nicolas Rouquette is currently offline Nicolas RouquetteFriend
Messages: 157
Registered: July 2009
Senior Member
Rafael,

I've cross-posted to the PDE group where I hope someone can shed some
light on this issue which seems to be more general to me than just
building the Epsilon plugins/features in a continuous build environment.

Rafael Chaves wrote:
> I am too surprised that the order required bundles appear matter at all.

It is indeed surprising.

> It sounds to me like a bug in PDE-build, as I don't think the OSGi spec
> attributes any semantics to the order required bundles are listed.

Compare how we specify dependencies for plugins vs. features:

plugins => we can change the order of dependencies with up/down buttons
features => there is no support for editing the order of dependencies

If the ordering didn't matter, why would the PDE team bother to provide
the capability to edit it for plugins but not for features?

> Nicolas, do you have any idea why PDE Build seems to care about order?

Based on my experience, I can say 2 things for sure:

1) out-of-order plugin dependencies can trigger ClassNotFoundExceptions
when OSGi starts the plugin bundle.

2) in a fresh build, incompletely specified feature dependencies can
fail a build with the appearance of being some kind of out-of-order
dependency problem when in fact it is really a missing dependency problem.

3) these problems become more subtle to figure out with various idioms
for inversion of control (e.g., dependency injection, plugin extensions,
....)

-- Nicolas.

>
> Thanks,
>
> Rafael
>
> Nicolas Rouquette wrote:
>> I managed to fix all problems which, roughly, fall into 3 categories.
>>
>> 1) out-of-order dependencies
>>
>> e,g, org.eclipse.epsilon.emc.emf.dt's MANIFEST.MF shows:
>>
>> Require-Bundle: org.eclipse.epsilon.common.dt,
>> org.eclipse.jface,
>> org.eclipse.epsilon.commons,
>> org.eclipse.emf,
>> org.eclipse.emf.ecore,
>> org.eclipse.epsilon.emc.emf,
>> org.eclipse.epsilon.emc.emf.virtual,
>> org.eclipse.ui,
>> org.eclipse.core.runtime,
>> org.eclipse.epsilon.util.emf
>>
>> fixed:
>>
>> Require-Bundle: org.eclipse.core.runtime,
>> org.eclipse.jface,
>> org.eclipse.ui,
>> org.eclipse.emf,
>> org.eclipse.emf.ecore,
>> org.eclipse.epsilon.commons,
>> org.eclipse.epsilon.common.dt,
>> org.eclipse.epsilon.emc.emf,
>> org.eclipse.epsilon.emc.emf.virtual,
>> org.eclipse.epsilon.util.emf
>>
>> 2) missing indirect dependencies
>>
>> e.g., org.eclipse.epsilon.antlr
>>
>> This threw me off initially. I think that we can reduce the number of
>> indirect dependencies the plugins need once there the order of the
>> bundles is consistent with the dependencies for all epsilon plugins.
>>
>> 3) missing feature dependencies
>>
>> the continuous build failed because epsilon.eugenia.feature is missing
>> a dependency on epsilon.feature.
>>
>> see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=260107
>>
>> -- Nicolas.
>>
>> -- Nicolas.
>>
>> Nicolas Rouquette wrote:
>>> At JPL, I use a Bamboo continuous build server to build a toolkit
>>> based on Ganymede SR1 with the UML2Tools components. So far so good.
>>>
>>> I checked out the full Epsilon enchilada from SVN because it provides
>>> a really nice scripting mechanism I can use with UML2Tools diagrams.
>>> In my development workspace, I can launch a runtime environment with
>>> epsilon plugins or with a product which includes the epsilon features
>>> and everything works fine. Then, I tried to update my Bamboo product
>>> configuration to build Epsilon. That's when I got an endless string
>>> of compilation problems...
>>>
>>> 05-Jan-2009 20:43:49 [java] [mkdir] Created dir:
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/temp.folder/@dot.bin
>>>
>>> 05-Jan-2009 20:43:49 [java] [javac] Compiling 5 source
>>> files to
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/temp.folder/@dot.bin
>>>
>>> 05-Jan-2009 20:43:49 [java] [javac] ----------
>>> 05-Jan-2009 20:43:49 [java] [javac] 1. ERROR in
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/src/org/eclipse/epsilon/eugenia/EolTransformationAc tionDelegate.java
>>> (at line 21)
>>> 05-Jan-2009 20:43:49 [java] [javac] import
>>> org.eclipse.epsilon.common.dt.console.EpsilonConsole;
>>> 05-Jan-2009 20:43:49 [java] [javac]
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 05-Jan-2009 20:43:49 [java] [javac] The import
>>> org.eclipse.epsilon.common cannot be resolved
>>> 05-Jan-2009 20:43:49 [java] [javac] ----------
>>> 05-Jan-2009 20:43:49 [java] [javac] 2. ERROR in
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/src/org/eclipse/epsilon/eugenia/EolTransformationAc tionDelegate.java
>>> (at line 22)
>>> 05-Jan-2009 20:43:49 [java] [javac] import
>>> org.eclipse.epsilon.common.dt.util.EclipseUtil;
>>> 05-Jan-2009 20:43:49 [java] [javac]
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 05-Jan-2009 20:43:49 [java] [javac] The import
>>> org.eclipse.epsilon.common cannot be resolved
>>> 05-Jan-2009 20:43:49 [java] [javac] ----------
>>> 05-Jan-2009 20:43:49 [java] [javac] 3. ERROR in
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/src/org/eclipse/epsilon/eugenia/EolTransformationAc tionDelegate.java
>>> (at line 23)
>>> 05-Jan-2009 20:43:49 [java] [javac] import
>>> org.eclipse.epsilon.common.dt.util.LogUtil;
>>> 05-Jan-2009 20:43:49 [java] [javac]
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 05-Jan-2009 20:43:49 [java] [javac] The import
>>> org.eclipse.epsilon.common cannot be resolved
>>> 05-Jan-2009 20:43:49 [java] [javac] ----------
>>> 05-Jan-2009 20:43:49 [java] [javac] 4. ERROR in
>>> /ramdisk/bamboo/TRUNK-MSTE/build/plugins/org.eclipse.epsilon .eugenia/src/org/eclipse/epsilon/eugenia/EolTransformationAc tionDelegate.java
>>> (at line 24)
>>> 05-Jan-2009 20:43:49 [java] [javac] import
>>> org.eclipse.epsilon.commons.util.StringProperties;
>>> 05-Jan-2009 20:43:49 [java] [javac]
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 05-Jan-2009 20:43:49 [java] [javac] The import
>>> org.eclipse.epsilon.commons cannot be resolved
>>>
>>> To get a better clue about what's going on, I switched the PDE
>>> settings to full paranoia mode, i.e., flag errors on the slightest
>>> whiff of anything suspicious. In my experience, this is a really
>>> useful thing to do because it helps weed out problems that can mask
>>> bigger problems later on.
>>>
>>> In this mode, I found that most Epsilon plugins fail to compile
>>> because of the org.eclipse.epsilon.antlr plugin.
>>>
>>> Other plugins have out-of-order plugin dependencies in their
>>> MANIFEST.MF files. I have fixed some of these but it's hard to do
>>> this without some information about the Epsilon plugin architecture,
>>> i.e., are there layers? e.g.:
>>>
>>> org.eclipse.epsilon.common.*
>>> org.eclipse.epsilon.eol.*
>>> org.eclipse.epsilon.????
>>> org.eclipse.epsilon.????
>>>
>>> Layering the dependencies helps resolve compilation problems.
>>>
>>> I'm on a very tight schedule but I can help clean some of this.
>>> It would be a shame to loose the Epsilon wizard capability for
>>> unresolved compilation issues.
>>>
>>> Suggestions?
>>>
>>> -- Nicolas.
Previous Topic:HELP: Adding files to RCP product root.
Next Topic:Re: Building an Epsilon product is, well, hum...
Goto Forum:
  


Current Time: Mon Aug 02 05:38:31 GMT 2021

Powered by FUDForum. Page generated in 0.02117 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top