Add .h

The .C that implement the TSelector starts with

#include "../commons/bins/bin_definition.h"

there is no .C. I’ve added the following line to the script that run the proof session:

p->Load("../commons/bins/bin_definition.h+")

It produce the output:

12:44:19  3384 Mst-0 | Info in <TXProofServ::HandleCache>: loading macro bin_definition.h+ ...
12:44:19 29352 Wrk-0.1 | Info in <TXProofServ::HandleCache>: loading macro bin_definition.h+ ...
12:44:19  5771 Wrk-0.0 | Info in <TXProofServ::HandleCache>: loading macro bin_definition.h+ ...
...

but the processing doesn’t start! If I look at the logs I can found:

In file included from /tmp/rootcint_RdL8O1.h:3,
                 from /tmp/OeMCf3_cint.cxx:1:
/proof/workingdirs/turra/session-t2-wn-11-1288176639-3746/worker-0.5-t2-wn-11-1288176642-3764/./twosidebands_dumper.C:9:44: ../commons/bins/bin_definition.h: No such file or directory
Error: external preprocessing failed. :0:
!!!Removing /proof/workingdirs/turra/session-t2-wn-11-1288176639-3746/worker-0.5-t2-wn-11-1288176642-3764/twosidebands_dumper_C_ACLiC_dict.cxx /proof/workingdirs/turra/session-t2-wn-11-1288176639-3746/worker-0.5-t2-wn-11-1288176642-3764/twosidebands_dumper_C_ACLiC_dict.h !!!
Error: /gpfs/storage_4/users/home/proof/root/bin/rootcint: error loading headers...
12:51:07  3764 Wrk-0.5 | Error in <ACLiC>: Dictionary generation failed!
12:51:07  3764 Wrk-0.5 | Info in <ACLiC>: Invoking compiler to check macro's validity
/proof/workingdirs/turra/session-t2-wn-11-1288176639-3746/worker-0.5-t2-wn-11-1288176642-3764/./twosidebands_dumper.C:9:44: ../commons/bins/bin_definition.h: No such file or directory

If it try to compile the TSelector by myselft it compiles well:

g++ -Wall -pthread -m64 -I/gpfs/storage_4/users/home/proof/root/include -c twosidebands_dumper.C

Hi,

You mead that twosidebands_dumper.C is this

#include "../commons/bins/bin_definition.h"

?
The path ‘…/commons/bins’ probably does not make much sense for the worker.
Try with

#include "bin_definition.h"

and adding locally ‘…/commons/bins’ to your include path (or creating a local symlink to …/commons/bins/bin_definition.h).

Gerri

[quote=“ganis”]
Try with

#include "bin_definition.h"

and adding locally ‘…/commons/bins’ to your include path (or creating a local symlink to …/commons/bins/bin_definition.h).

Gerri[/quote]
ok, but:

TProof *p = TProof::Open("localhost");
p->AddIncludePath("../commons/bins");

got:

16:17:36 27022 Mst-0 | Info in <TXProofServ::HandleLibIncPath>: incpath ../commons/bins/ does not exist or cannot be read - not added

but it exists:

ls ../commons/bins 
bin_definition.h  example.cpp

I don’t like to use symlinks (but is works), I have this directory structure:

project1
project2
commons
    bins
utils
    foo

I can’t create symlinks for every files I need. I need to use PAR packages?

Hi,

You have to add LOCALLY the path:

root [] gSystem->AddIncludePath("-I../commons/bins")

On PROOF you do not need it.

On the other hand, if you keep the name of the implementation file and of the header file the same (modulo
the extension, of course) life is much easier, because you can just load the implementation file via TProof::Load and everything should be automatically set.

Gerri

[quote=“ganis”]
On the other hand, if you keep the name of the implementation file and of the header file the same (modulo
the extension, of course) life is much easier, because you can just load the implementation file via TProof::Load and everything should be automatically set.

Gerri[/quote]

Yes, it’s what I’m doing, I’ve created a bin_definition.C with only #include bin_definition.h

And this does not work?
What is the error? It cannot be the same you posted at the beginning …

Gerri

[quote=“ganis”][quote]
Yes, it’s what I’m doing, I’ve created a bin_definition.C with only #include bin_definition.h
[/quote]
And this does not work?
What is the error? It cannot be the same you posted at the beginning …

Gerri[/quote]

Sorry, it works, the problem is that it’s very boring to create tens of symlinks for every headers included.