Sunday, February 13, 2011

Bioclipse upgraded to CDK 1.3.8 and CDK-JChemPaint 17: builds broken

Yesterday I did some boring plumbing: I upgraded our GC/MS machines with new hardware. Well, the cheminformatics equivalent of it anyway. I upgraded the Bioclipse bundles in org.openscience.cdk for CDK 1.3.8 and CDK-JChemPaint 17. This is typically a painful process, and now even more because a lot is changing with how Bioclipse is build, which is with Buckminster on Bioclipse' Hudson server. I am happy that Arvid is doing the digging into Buckminster, as automatic building of Eclipse-RCP tools is straightforward. Each part is describes by, seemingly, at least five configurations files. For each plugin we have plugin dependencies, plugins are wrapped into features, where you can get dependencies wrong too, and update sites, which need to be in shape too. And on the Buckminster-side there are .rmap and .cquery files pointing to the right git repositories, each of which you can get wrong too.

Well, and I got them wrong. A few things had to happen. First of all, I had to revert the JNI-InChI library to a plugin, as I have no experience with making OSGi bundles out of random jars (there is this bnd tool which exists for that task, but never used it before). But, the upgrade brought in version 0.7 which should solve the InChI library loading issue, as well as bring InChI to various more platforms. So, the JNI-InChI jar was pulled from the target platform, and the rebuild worked out of the box.

The second thing I did was upgrade the org.openscience.cdk bundles. This repository had three branches, one for pure CDK, now updated to CDK 1.3.8, a CDK-JChemPaint branch updated to version 17, and a bioclipse2.4 branch for Bioclipse 2.x (we now and then patch things to make it work, so that we do not have to wait for them to be applied upstream, with the CDK itself). I thought it would be good to create a separate bioclipse2.6 branch for Bioclipse master, but that was a mistake. This branch information is scattered over the .rmap and .cquery files, and they are not all in one single git repository, and those that are, are not synchronized with the versions on Hudson either. It's normal in prototyping, but not helping me. After a couple of hours fiddling, I got this one compiling too.

Right now, I'm stuck with getting bioclipse.cheminformatics compiling again, and looking for ERRORs in an enormous log file. If only ERROR messages were a bit more descriptive, something like "Hej, you said to look for org.openscience.cdk.sinchi in file, but I cannot find it anywhere.", then I'd have some clue where to look.

That makes me wonder if anyone actually ever wrote up best practices for error messages...

BTW, I also still have another, independent dependency issue to solve: the one for Google's Guava, so that everyone can play with the Bioclipse-Google interaction.