| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

RootMap.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 import os
00004 import sys
00005 
00006 
00007 def _getPath(pathstring = ""):
00008   pthlist = []
00009   if pathstring == "":
00010     if sys.platform == "linux2":
00011       pathstring = os.environ["LD_LIBRARY_PATH"]
00012     else:
00013       pathstring = os.environ["PATH"]
00014   pthlist += pathstring.split(os.pathsep)
00015   return pthlist
00016 
00017 
00018 def _getEntry(line):
00019   ll=line.split()
00020   entry = ll[0]
00021   entry=entry.replace("Library.","")
00022   entry=entry.replace(":","")
00023   entry=entry.replace("@",":")
00024   entry=entry.replace("-"," ")
00025   lib = ll[1]
00026   return entry,lib
00027 
00028 def _getBlock(line):
00029   if line.find("Begin"):
00030     block=line.split()[-1]
00031   return block
00032 
00033 
00034 def _procRootMap(rtmpfile,rtmapdict):
00035   block = ""
00036   for line in open(rtmpfile,'r'):
00037     line = line[:-1]
00038     if line:
00039       if line[0] != '#':
00040         entry,lib=_getEntry(line)
00041         if not rtmapdict.has_key(entry):
00042           rtmapdict[entry] = []
00043         rtmapdict[entry].append((os.path.join(os.path.dirname(rtmpfile),lib),block))
00044       else:
00045         block=_getBlock(line)
00046 
00047 def _procSysRootMap(rtmapdict):
00048   if os.environ.has_key("ROOTSYS"):
00049     rtmpfile = os.path.join(os.environ["ROOTSYS"],"etc","system.rootmap")
00050     block = ""
00051     for line in open(rtmpfile,'r'):
00052       line = line[:-1]
00053       if line:
00054         if line[0] != '#':
00055           entry,lib=_getEntry(line)
00056           if not rtmapdict.has_key(entry):
00057             rtmapdict[entry] = []
00058           rtmapdict[entry].append((os.path.join(os.environ["ROOTSYS"],"lib",lib),block))
00059         else:
00060           block=_getBlock(line)
00061   else:
00062     print "WARNING: No ROOTSYS defined!" 
00063 
00064 def _isRootMap(filename):
00065   # The file must begin with "rootmap"
00066   if (filename.find("rootmap")==0) :
00067     return True
00068   return False
00069 
00070 def getMaps(pathstring = "",sysrtmap=False):
00071   rtmapdict = dict()
00072   pthlist = _getPath(pathstring)
00073   if sysrtmap :
00074     _procSysRootMap(rtmapdict)
00075   for p in pthlist:
00076     try:
00077       for f in filter(_isRootMap,os.listdir(p)):
00078         rtmpfile = os.path.join(p,f) 
00079         if (os.path.exists(rtmpfile)):
00080           _procRootMap(rtmpfile,rtmapdict)
00081     except: pass
00082   return rtmapdict
00083 
00084 def _getLongestEntry(maps):
00085   sz = 0
00086   for k in maps.keys():
00087     if len(k)>sz:
00088       sz = len(k)
00089   return sz
00090 
00091 
00092 def printMaps(maps,recomp=None):
00093   linelen = _getLongestEntry(maps)
00094   frmat = r"%-" + str(linelen) + "s\t"
00095   kys = maps.keys()
00096   kys.sort()
00097   if recomp: kys = filter(recomp.search,kys)
00098   for k in kys:
00099     if len(maps[k])>1:
00100       print "!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!"
00101     for l in maps[k]:
00102       print frmat%k,
00103       for m in l:
00104         print m,
00105       print " "
00106   return
00107 
00108 def shortPrintMaps(maps,recomp=None):
00109   kys = maps.keys()
00110   kys.sort()
00111   if recomp: kys = filter(recomp.search,kys)
00112   for k in kys:
00113     if len(maps[k])>1:
00114       print k,"!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!"
00115     else:
00116       print k
00117     for l in maps[k]:
00118       for m in l:
00119         print "\t%s"%m,
00120       print " "  
00121   return
00122 
00123 def printKeys(maps,recomp=None):
00124   kys = maps.keys()
00125   kys.sort()
00126   if recomp: kys = filter(recomp.search,kys)
00127   for k in kys:
00128     if len(maps[k])>1:
00129       print "!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!"
00130     for l in maps[k]:
00131       print k
00132   return
00133 
00134 def checkDict(maps,recomp=None):
00135   kys = maps.keys()
00136   kys.sort()
00137   if recomp: kys = filter(recomp.search,kys)
00138   for k in kys:
00139     if len(maps[k])>1:
00140       print "!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!"
00141       print k
00142       for l in maps[k]:
00143         for m in l:
00144           print "\t%s"%m,
00145         print " "  
00146   return
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:56:58 2011 for GaudiKernel by doxygen 1.4.7