Loading libraries into proof-lite

Hi,

I have a plugin, which consists of two files: myPlugin.C and myPlugin.h
In a regular root session, I could add this plugin via:

or

if it’s been already compiled.

Now, how do I add this plugin on the worker nodes when using proof-lite?
I do this to setup my proof:

plite = TProof.Open() #plite.Load("myPlugin.cc+") - does not work #plite.Load("myPlugin_cc.so") - does not work fChain.SetProof() fChain.Process("myAna.C+")

I have read this: root.cern.ch/loading-macro-or-class but it does not work. Do I need .cxx file instead of .C?

Root version: 6.02/13

Dear Andrey,

This

plite = TProof.Open()
plite.Load("myPlugin.cc+")
fChain.SetProof()
fChain.Process("myAna.C+")

should work. The requirements for source file are to have an extension (i.e. a ‘.’ in the path); headers have to be in the same directory with extension .h or .hh .

What is the error that you get?

This also should work:

plite = TProof.Open()
plite.Load("/full/path/to/myPlugin_cc.so") // Workers are in different working directories
fChain.SetProof()
fChain.Process("myAna.C+")

G Ganis

Ok, so to elaborate:

  • the plugin is actually called HistManager.
  • with this in mind, I get the following error when loading it by .cc+ method.

[quote]13:42:22 19513 Wrk-0.0 | Error in TCling::RegisterModule: cannot find dictionary module HistManager_cc_ACLiC_dict_rdict.pcm
[/quote]
However, I just realized that I do get the output file. So in fact it seems to work, despite the error.

Then, for completeness, when I try to load the .so (with full path), I get the same errors as above, but also these:

[quote]Error in TClass::LoadClassInfo: no interpreter information for class TProofChain is available eventhough it has a TClass initialization routine.
Error in TPluginHandler::SetupCallEnv: method TProofChain not found in class TProofChain
Error in TChain::SetProof: creation of TProofChain failed[/quote]
plus these:

[quote]In file included from input_line_52:23:
/cvmfs/cms.cern.ch/slc6_amd64_gcc493/lcg/root/6.02.12-kpegke4/include/TProofLite.h:42:1: error: incomplete type ‘TProofLite’ named in nested name specifier
class TProofLite : public TProof {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cvmfs/cms.cern.ch/slc6_amd64_gcc493/lcg/root/6.02.12-kpegke4/include/TQueryResult.h:50:14: note: forward declaration of 'TProofLite’
friend class TProofLite;
^
In file included from input_line_52:23:
/cvmfs/cms.cern.ch/slc6_amd64_gcc493/lcg/root/6.02.12-kpegke4/include/TProofLite.h:42:1: error: incomplete type ‘TProofLite’ named in nested name specifier
class TProofLite : public TProof {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cvmfs/cms.cern.ch/slc6_amd64_gcc493/lcg/root/6.02.12-kpegke4/include/TQueryResult.h:50:14: note: forward declaration of 'TProofLite’
friend class TProofLite;

… More of the similar …
[/quote]

And then it seqfaults.
But the output tree is still produced!

Hope this helps to improve things.
As far as I’m concerned, the problem is solved: the .cc+ loading works fine.

Thanks

Dear Andrey,

Thanks for the report.
This is something related to the way loading changed with cling and alike. I believe should be already better in the master and fixed once support for modules will be complete. I’ll try to reproduce your messages and see whether there is way to fix or silence.

G Ganis

Just FYI,

root 6.08 on ubuntu 16.04

The error message is still here but the process of TSelector is finished and the result is saved.