site.p2 action does not generate all bundles correctly for create.product - SOLVED [message #651733] |
Tue, 01 February 2011 13:13 |
Matthew Webber Messages: 198 Registered: December 2010 |
Senior Member |
|
|
I have seen a few references to this problem, here is my solution:
Background:
I am following the standard method of building an RCP product (http://www.ralfebert.de/blog/eclipsercp/rcp_builds/). So:
I have a myproduct.feature project, which lists a number of plugins.
I have a myproduct.site feature project, the site feature.xml just includes the myproduct.feature, and has a cspecx which includes two new actions, create.product and create.product.zip.
I then run
clean
build
perform -D target.os=linux -D target.ws=gtk -D target.arch=x86 -D qualifier.replacement.*=generator:lastRevision myproduct.site#site.p2
perform -D target.os=linux -D target.ws=gtk -D target.arch=x86 myproduct.site#create.product
My problem was that the create.product action failed with one plugin missing. The plugin is correctly listed in the myproduct.feature feature.xml. This failure occurred both with headless Buckminster, and when running from the Eclipse IDE.
If I looked in the buckminster.output.root directory, there was a directory for the "missing" plugin: buckminster.output.root/problematic.plugin_1.0.0-osgi.bundle. However, when I looked in buckminster.output.root/myproduct.site_1.0.0-eclipse.feature /site.p2/plugins, I could see all the plugins I expected except the plugin that the create.product action reported as missing.
A bit more digging showed a problem in the buckminster.output.root/problematic.plugin_1.0.0-osgi.bundle directory. This contains a sub-directory called jar/ which should contain problematic.plugin_1.0.0.version.jar but instead contained a file called ${bundle.id}_${bundle.version}.jar (literally that, with the variables not substituted).
Solution:
After some considerable experimentation, I found the problem: the MANIFEST.MF for the plugin that I had problems with did not specify any Manifest-Version. When I added a line "Manifest-Version: 1.0" at the top of the manifest, everything worked properly. Note that the manifest had "Bundle-ManifestVersion: 2", but it turns out this was not enough.
Matthew Webber
|
|
|
Powered by
FUDForum. Page generated in 0.03293 seconds