RPATH, Mac OS X, and how to execute macros from anywhere (part 2)

Hi,

Unfortunately, I let the original thread reach its deadline…

In the meantime, I tested this:

  • I tried to set absolute paths everywhere in my macro.
  • I tried the last version of ROOT, 6.26/04 (installed with brew)

Again, it works fine when I execute the macro from the directory where it is, but I still get the same error when I try to execute it from another directory:


root [0] .x scripts/PKS2155_macro.C 

RooFit v3.60 -- Developed by Wouter Verkerke and David Kirkby 
                Copyright (C) 2000-2013 NIKHEF, University of California & Stanford University
                All rights reserved, please read http://roofit.sourceforge.net/license.txt

libLIVlihoodClasses dictionary payload:5:10: remark: could not acquire lock file for module 'LIVlihoodClasses': failed to create unique file /usr/local/Cellar/root/6.26.04/lib/root/LIVlihoodClasses.pcm.lock-8fead47d: Permission denied [-Rmodule-build]
#include "/Users/bolmont/ownCloud/Boulot/LIV HMV/SOFT/YAML_config_file/LIVlib/inc/Data.h"
         ^
libLIVlihoodClasses dictionary payload:5:10: remark: building module 'LIVlihoodClasses' as '/usr/local/Cellar/root/6.26.04/lib/root/LIVlihoodClasses.pcm' [-Rmodule-build]
error: unable to open output file '/usr/local/Cellar/root/6.26.04/lib/root/LIVlihoodClasses.pcm': 'Permission denied'
libLIVlihoodClasses dictionary payload:5:10: remark: finished building module 'LIVlihoodClasses' [-Rmodule-build]
libLIVlihoodClasses dictionary payload:5:10: fatal error: could not build module 'LIVlihoodClasses'
#include "/Users/bolmont/ownCloud/Boulot/LIV HMV/SOFT/YAML_config_file/LIVlib/inc/Data.h"
 ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error in <TInterpreter::AutoParse>: Error parsing payload code for class SimRunnerMinuitFromFile with content:

#line 1 "libLIVlihoodClasses dictionary payload"
............

I’m still trying to find a workaround, but any help would be really appreciated!
Thanks!

_ROOT Version: 6.26/04
_Platform: Mac OS X 11.6.5
_Compiler: AppleClang 13.0.0.13000029


Hi @bolmont ,

thank you for the ping and sorry for the high latency!

@vvassilev @Axel do we want a GitHub issue for this, or how do we proceed?

Cheers,
Enrico

There are still too many things we don’t understand I’m afraid. Let me try to come up with a list of questions here:

  • what is the content of scripts/PKS2155_macro.C?
  • why does .x scripts/PKS2155_macro.C try to build modules?
  • which files are in the directory /Users/bolmont/ownCloud/Boulot/LIV HMV/SOFT/YAML_config_file/LIVlib/inc/ - is there something that’d cause clang to look for a module for Data.h?
  • Does any Data.h trigger this, even if you have it in $PWD and it’s empty?
  • Content of the file scripts/PK2155_macro.C:

R__ADD_LIBRARY_PATH(/Users/bolmont/ownCloud/Boulot/LIV HMV/SOFT/YAML_config_file/LIVlib-build/lib)
R__LOAD_LIBRARY(libLIV)


void test_runner(bool UseMC=true, bool UseNuisance=false, bool UseTable=false, bool UseAcceptance=true, bool UseMigMatrix=true,  string fname="./ToyData.dat",Bool_t verbose=true){
  int powLIV = 1; //either 1 or 2
  int mod = 1; // either 1 (LIV) or 2 (DSR)
  double shift =0;

  auto runner = new SimRunnerMinuitFromFile(30,200.0,200.0,verbose);
  SourceHandle* source = (SourceHandle*) new PKS2155Handle(powLIV,mod,shift,UseMC,1,8,UseNuisance,UseTable,UseAcceptance,UseMigMatrix);
  if(UseTable && powLIV==1 && mod==1) source->CreateTables2("PKS2155",250,250,250,-950,950);
  if(UseTable && powLIV==1 && mod==2) source->CreateTables2("PKS2155",250,250,250,-1000,1000);
  if(UseTable && powLIV==2 && mod==1) source->CreateTables2("PKS2155",250,250,250,-750,750);
  if(UseTable && powLIV==2 && mod==2) source->CreateTables2("PKS2155",250,250,250,-1000,1000);
  if(UseTable) source->SetTables("PKS2155");
  runner->RegisterHandle(source,"./ToyDataPKS2155.dat","./TemplatePKS2155.dat");
  // runner->RegisterHandle(source,"./PKS2155NOLIV.txt","./Template.dat");
  runner->Run(0.6827,0);
  runner->Draw("s/TeV",true,true,"PKS2155");
  runner->Save();
 }



void PKS2155_macro(){

  test_runner(true,false,false,false,false);

}
  • why does .x scripts/PKS2155_macro.C try to build modules? → when I’m in directory scripts, everything works fine. When I’m not, I see the behavior of my message above. I don’t have any idea why the macro tries to build modules. It’s a bit as if when I change the directory, root cannot find the files anymore and tries to re-generate them?
  • All header files are in directory LIVlib/inc/, including Data.h

the content of the libdirectory:

bolmont@host LIVlib-build % ls lib
libLIV.so			libLIVlihoodClasses.rootmap	libLIVlihoodClasses_rdict.pcm
  • Does any Data.h trigger this, even if you have it in $PWD and it’s empty? → Yes.

Another question: is there a way to tell root where to create the pcm file? It seems the problem is that it tries to create it somewhere it shouldn’t.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

Hi,

Could well be that the space in LIV HMV is causing problems. Can you try without, please?

Cheers, Axel

@vvassilev can you help with this? Why does this try to build a module for user code in ROOTSYS/lib?

Yes, I tried already removing the space in the path, it doesn’t help.
Cheers,
Julien

This topic was automatically closed after 10 days. New replies are no longer allowed.