[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.tools.buckminster] Re: buckminster.prebind: no action, group, or local artifact named manifest

Hi Carsten,
Some answers inline.

On 08/30/2009 02:48 PM, Carsten Reckord wrote:
Hi again,

I'm trying to simplify my build setup a bit. And one thing I'd like to
do is add a prebind action to one of my features that has
org.eclipse.platform:osgi.bunde#manifest as a prerequisite:

<cspecExtension
xmlns:com="http://www.eclipse.org/buckminster/Common-1.0";
xmlns="http://www.eclipse.org/buckminster/CSpec-1.0";>
<actions>
<public name="buckminster.prebind" actor="ant">
<actorProperties>
<property key="buildFile" value="build/patch.ant"/>
<property key="targets" value="remove.signatures"/>
</actorProperties>
<prerequisites>
<attribute component="org.eclipse.platform" componentType="osgi.bundle"
name="manifest" alias="manifest"/>
</prerequisites>
</public>
</actions>
</cspecExtension>

The prebind action works just fine if I call it manually after
everything is materialized. It also works fine if I first materialize
org.eclipse.platform and then separately materialize my feature.
However, if I simply materialize my feature and let buckminster pick up
org.eclipse.platform as a dependency (materializing the source bundle
into my workspace), I end up with this:

org.eclipse.platform:osgi.bundle: Trying provider
eclipse.import(${p2.url.platform}?importType=source)
org.eclipse.platform:osgi.bundle: Found match 3.3.200.v200906111540
org.eclipse.platform:osgi.bundle: Using provider
eclipse.import(${p2.url.platform}?importType=source)
...
my.feature:eclipse.feature: Trying provider
svn(${svn.url.myfeature}/{2}-feature)
my.feature:eclipse.feature: trunk/head will be searched
my.feature:eclipse.feature: Found match 0.2.0.qualifier
my.feature:eclipse.feature: Using provider
svn(${svn.url.myfeature}/{2}-feature)
Reading remote file
svn+ssh://path/to/svn/trunk/my.feature-feature/build.properties#HEAD
Reading remote file
svn+ssh://path/to/svn/trunk/my.feature-feature/umllab.product#HEAD
Listing remote folder svn+ssh://path/to/svn/trunk/my.feature-feature#HEAD
Provider svn(svn+ssh://null:null@path/to/svn/trunk/my.feature-feature):
materializing to C:/Users/creckord/bm/workspace/features/my.feature/
ERROR [0001] : CSpec
org.eclipse.platform:osgi.bundle$3.3.200.v200906111540 has no action,
group, or local artifact named manifest
INFO: TAG-ID 0001 = Query for my.feature:eclipse.feature

Buckminster again happily obliges when I now call the prebind action
manually.

Some of the more advanced build actions are generated by the local reader after the component has been bound to the workspace. This is because the resolver doesn't really care about those actions in order to do the actual resolution and materialization and thus, can skip the explicit remote access to some files (like build.properties). You get hit by that when you use the prebind action.

This should probably be considered a bug since any additions to the cspec that are performed once the component is materialized should be made before the prebind actions are called.

Oh, and one other thing I observed: My feature used to have no direct
dependency to org.eclipse.platform:osgi.bundle, but to
org.eclipse.platform:eclipse.feature. With that setup, the CSpec
Buckminster builds for my feature is missing the
componentType="osgi.bundle" in my prerequisites and my prebind action
triggered the org.eclipse.platform:eclipse.feature#manifest action
instead. This was fixed by adding the org.eclipse.platform:osgi.bundle
directly to my feature.

I can see that happening if the prereuquisite didn't include the component type. Yours do however, so if that happens with the sample cspec, it must be considered a bug. The correct action should be to report the missing prerequisite and give up.

Regards,
Thomas Hallgren