Hi,
Having succeeded to use condor flocking to submit (my) batch jobs, I am trying to submit _root_ batch jobs (root -b -q xxx.C) to a remote farm where I do not have a unix account (condor is taking care of this), just an NFS mounted working space. The jobs are running into problems, terminating with the message:
Fatal in <TROOT::InitSystem>: HOME directory not set
Looking in the root source this comes from the snippets enclosed below. If I read them correctly, things are more or less hardcoded to look for the unix user and get the home dir from the passwd file.
My questions are: 1) Is this really needed to run root? 2) Or defining a dir where root can read/write could be enough, and how toachieve this (if needed, modifying the code)?
Thanks, Dimitri
PS Actually if mydir[kMAXPATHLEN] is initialized before calling TUnixSystem::UnixHomedirectory maybe things will behave differently, is this feasible and a viable solution?
// Initialize operating system interface.
if (gSystem == 0) {
#if defined(R__UNIX)
gSystem = new TUnixSystem;
#elif defined(R__WIN32)
gSystem = new TWinNTSystem;
#elif defined(R__VMS)
gSystem = new TVmsSystem;
#else
gSystem = new TSystem;
#endif
if (gSystem->Init()) fprintf(stderr, "Fatal in <TROOT::InitSystem>: can't init operatingsystem layer\n");
if (!gSystem->HomeDirectory()) fprintf(stderr, "Fatal in <TROOT::InitSystem>: HOME directory not set\n");.....
and in TUnixSystem
//______________________________________________________________________________const char *TUnixSystem::HomeDirectory(const char *userName) {
// Return the user's home directory.
return UnixHomedirectory(userName);
}
//---- directories ------------------------------------------------------------- //______________________________________________________________________________const char *TUnixSystem::UnixHomedirectory(const char *name) {
// Returns the user's home directory.
static char path[kMAXPATHLEN], mydir[kMAXPATHLEN]; struct passwd *pw;
if (name) {
pw = getpwnam(name); if (pw) { strncpy(path, pw->pw_dir, kMAXPATHLEN); return path; } } else { if (mydir[0]) return mydir; pw = getpwuid(getuid()); if (pw) { strncpy(mydir, pw->pw_dir, kMAXPATHLEN); return mydir; }
-- _/_/_/ _/_/_/ _/ _/ Dimitri BOURILKOV _/ _/ _/ _/ University of Florida _/_/_/ _/ _/ bourilkov_at_phys.ufl.edu _/ _/ _/_/_/ _/_/_/Received on Sat Aug 25 2007 - 02:19:46 CEST
This archive was generated by hypermail 2.2.0 : Sun Aug 26 2007 - 05:50:02 CEST