diffplug / goomph

IDE as build artifact
Apache License 2.0
130 stars 30 forks source link

Improvements to `bndmanifest` to support parallel usage with PDE #187

Open jmini opened 2 years ago

jmini commented 2 years ago

We would like to generate our manifests with the bndmanifest plugin.

Our idea is to generate the MANIFEST.MF file, but in a way that it stays compatible with the PDE tooling running inside the IDE. In this setup we would have the MANIFEST.MF file present in our Git Repo.


What already exists:

copyTo from the osgiBndManifest can be used like this:

osgiBndManifest {
    copyTo 'META-INF/MANIFEST.MF'
}

A first limitation is that ManifestUtil from bnd is formatting the MANIFEST according to the spec (line should not exceed 72 bytes and so on).

For us this creates an artificial change in Service-Component: because the org.eclipse.pde.ds.annotations tooling in Eclipse creates one line per xml file in the OSGI-INF/ folder.

We would like both tools bndmanifest and PDE tooling to have the same formatting (the Eclipse one).


A second feature we would like to have:

We consider that the generated MANIFEST created by the bndmanifest should win over a manual change in the Eclipse IDE. But we would like to be able to detect those mismatch by having a build failure if the generated manifest does not match the current version.

So instead of copyTo this should be something like a compareTo option that fails the build if the MANIFEST file is not correct. Maybe with a possibility to copy instead of compare (think spotlessCheck vs spotlessApply).


Have you some opinion about this topic? Would you accept a PR for features in this direction?

nedtwigg commented 2 years ago

We have abandoned OSGi at DiffPlug. I'm happy to merge and release PRs for this. I'd like to preserve backward-compatibility for existing users, so if you need to break something please gate with a flag or we can do bndManifestEclipse or something like that.

jmini commented 1 year ago

Related to this topic: https://stackoverflow.com/questions/36545272/bnd-make-resulted-manifest-mf-to-have-one-line-per-bundle-classpath-and-requir