I am trying to use the attached rootlogon.C macro which is supposed
to load a bunch of shared libraries, but it stops with the following
output:
phns86: /home/crash4/anciant/CLAS/packages/clasroot/macro <307> root
*******************************************
* *
* W E L C O M E to R O O T *
* *
* Version 2.21/01 14 January 1999 *
* *
* You are welcome to visit our Web site *
* http://root.cern.ch *
* *
*******************************************
CINT/ROOT C/C++ Interpreter version 5.13.83, Dec 2 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
Welcome to the Root CLAS analysis framework
Fortran shared libraries loaded for SunOS
Local Path :/home/crash4/anciant/CLAS/slib/SunOS
Def Path :/home/crash4/thauger/CLAS/builds/LATEST/slib/SunOS
TObjString = /libbosio.so
TObjString = /libROOTclasbos.so
TObjString = /libROOTbosbank.so
TObjString = /libROOTclasana.so
TObjString = /libROOTclasevent.so
TObjString = /libROOTgenbod.so
TObjString = /libROOTkinfit.so
/home/crash4/anciant/CLAS/slib/SunOS/libbosio.so
/home/crash4/thauger/CLAS/builds/LATEST/slib/SunOS/libbosio.so
/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasbos.so
/home/crash4/thauger/CLAS/builds/LATEST/slib/SunOS/libROOTclasbos.so
Error: Array index out of range __MAKECINT__ -> [0] valid upto EOF
FILE:/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasbos.so LINE:1
*** Interpreter error recovered ***
root [0] .file
0 fp=0xfe4362a4 lines=409 file="iostream.h"
1 fp=0xfe4362b4 lines=39 file="iosenum.h"
2 fp=0xfe4362c4 lines=12 file="bool.h"
3 fp=0x 0 lines=0 file="/opt/SUNWspro/lib/libF77.so"
4 fp=0x 0 lines=0 file="/opt/SUNWspro/lib/libM77.so"
5 fp=0x 0 lines=0
file="/home/crash4/anciant/CLAS/slib/SunOS/libbosio.so"
6 fp=0x 0 lines=0
file="/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasbos.so"
G__MAXFILE = 500
if I try to load the libraries one by one by hand, everything works
fine:
root [0] TIter
next(&c);
root [1] objs =
(TObjString*)next()
(class TObjString*)0x48e0a8
root [2] locallib = localpath +
objs->String();
root [3] cout << locallib.Data() <<
endl;
/home/crash4/anciant/CLAS/slib/SunOS/libbosio.so
root [4]
gSystem->Load(locallib.Data());
Warning: File "/home/crash4/anciant/CLAS/slib/SunOS/libbosio.so" already
loaded
root [5] objs = (TObjString*)next()
(class TObjString*)0x48e0d0
root [6] locallib = localpath + objs->String();
root [7] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasbos.so
root [8] gSystem->Load(locallib.Data());
Warning: File "/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasbos.so"
already loaded
root [9] objs = (TObjString*)next()
(class TObjString*)0x48e0f8
root [10] locallib = localpath + objs->String();
root [11] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTbosbank.so
root [12] gSystem->Load(locallib.Data());
root [13] objs = (TObjString*)next()
(class TObjString*)0x48e120
root [14] locallib = localpath + objs->String();
root [15] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasana.so
root [16] gSystem->Load(locallib.Data());
root [17] objs = (TObjString*)next()
(class TObjString*)0x48e148
root [18] locallib = localpath + objs->String();
root [19] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTclasevent.so
root [20] gSystem->Load(locallib.Data());
root [21] objs = (TObjString*)next()
(class TObjString*)0x48e170
root [22] locallib = localpath + objs->String();
root [23] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTgenbod.so
root [24] gSystem->Load(locallib.Data());
root [25] objs = (TObjString*)next()
(class TObjString*)0x48e198
root [26] locallib = localpath + objs->String();
root [27] cout << locallib.Data() << endl;
/home/crash4/anciant/CLAS/slib/SunOS/libROOTkinfit.so
root [28] gSystem->Load(locallib.Data());
root [29] objs = (TObjString*)next()
(class TObjString*)0x0
Is this a bug, or did I missed something ?
eric
rootlogon.C:
{
gROOT->Reset();
G__loadfile("iostream.h");
//G__loadfile("string.h");
cerr<<"Welcome to the Root CLAS analysis framework\n\n";
if (gSystem->Getenv("OSCLAS")) {
if (!(strcmp(gSystem->Getenv("OSCLAS"),"SunOS"))) {
gSystem->Load("/opt/SUNWspro/lib/libF77.so");
gSystem->Load("/opt/SUNWspro/lib/libM77.so");
cout << "Fortran shared libraries loaded for SunOS" << endl;
} elseif(.false.) {
} else {
cout << "WARNING : fortran shared libraries unknown for OS: "<<
gSystem->Getenv("OSCLAS") << endl;
}
} else {
cout << "WARNING: The environement variable OSNAME is not defined"
<<endl;
cout << " No fortran shared library loaded !!!" << endl;
}
if (gSystem->Getenv("CLAS_BUILD") && gSystem->Getenv("TOP_DIR")) {
TString defpath(gSystem->Getenv("CLAS_BUILD"));
TString localpath(gSystem->Getenv("TOP_DIR"));
TString slibpath("/slib/");
slibpath += gSystem->Getenv("OSCLAS");
defpath += slibpath;
localpath += slibpath;
TOrdCollection c; // list of libraries to load:
c.Add(new TObjString("/libbosio.so"));
c.Add(new TObjString("/libROOTclasbos.so"));
c.Add(new TObjString("/libROOTbosbank.so"));
c.Add(new TObjString("/libROOTclasana.so"));
c.Add(new TObjString("/libROOTclasevent.so"));
c.Add(new TObjString("/libROOTgenbod.so"));
c.Add(new TObjString("/libROOTkinfit.so"));
cout << "Local Path :" << localpath << endl;
cout << "Def Path :" << defpath << endl;
TString locallib;
TString deflib;
c.Print();
TObjString *objs;
TIter next(&c);
while (objs = (TObjString*)next()) {
locallib = localpath + objs->String();
deflib = defpath + objs->String();
cout << locallib.Data() << endl;
cout << deflib.Data() << endl;
gSystem->Load(locallib.Data());
/*
if (gSystem->Load(locallib.Data()) == -1) {
if (gSystem->Load(deflib.Data()) == -1)
cout << "Root Ana ERROR: Could not load " << deflib << " Library "
<<endl;
else
cout << deflib << " loaded instead" << endl;
}
else
cout << locallib << " loaded" << endl;
*/
}
//G__loadfile("clasbanks.h");
//G__loadfile("TBOSBank.cc");
}
else {
cout << "ERROR: CLAS environement variables not defined - No shared
libraries loaded ";
cout <<endl;
}
}