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