Condor Compiling ROOT Applications

This is a recipe for getting ROOT libraries to be compatible with Condor Standard Universe (ie condor_compile). Once this is done, the application automatically makes use of Condor's remote system call and checkpointing features.

Obtain the ROOT source from root.cern.ch.

The first requirement is to remove multithreading:

./configure linux --disable-thread

The second is to get rid of explicit calls to dlopen() and family. Edit config/Makefile.linux. Remove all instances of -ldl and -DG__SHAREDLIB.

Then you are free to do:

make
make static

One additional complication is that 'make static' produces a single static library libRoot.a, instead of one static library for each dynamic library that would normally be produced. This means that existing makefiles for applications that link with Root will have to be modified to use -lRoot in place of all the individual libraries. Also, get rid of -lpthread, -ldl, and -rdynamic. (The alternative is to edit root/bin/root-config and make it insert -lRoot in place of the others.)

Note that the root.exe produced by the above process is not functional, because it tries to load dynamic libraries at runtime and fails.

Also note that any dynamically loaded plugins will fail to work. With some additional work, these can be statically compiled into the application as well.