The Gaudi Framework  v32r2 (46d42edc)
RootMap.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 from __future__ import print_function
4 import os
5 import sys
6 
7 
8 def _getPath(pathstring=""):
9  pthlist = []
10  if pathstring == "":
11  if sys.platform == "linux2":
12  pathstring = os.environ["LD_LIBRARY_PATH"]
13  else:
14  pathstring = os.environ["PATH"]
15  pthlist += pathstring.split(os.pathsep)
16  return pthlist
17 
18 
19 def _getEntry(line):
20  ll = line.split()
21  entry = ll[0]
22  entry = entry.replace("Library.", "")
23  entry = entry.replace(":", "")
24  entry = entry.replace("@", ":")
25  entry = entry.replace("-", " ")
26  lib = ll[1]
27  return entry, lib
28 
29 
30 def _getBlock(line):
31  if line.find("Begin"):
32  block = line.split()[-1]
33  return block
34 
35 
36 def _procRootMap(rtmpfile, rtmapdict):
37  block = ""
38  for line in open(rtmpfile, 'r'):
39  line = line[:-1]
40  if line:
41  if line[0] != '#':
42  entry, lib = _getEntry(line)
43  if entry not in rtmapdict:
44  rtmapdict[entry] = []
45  rtmapdict[entry].append((os.path.join(
46  os.path.dirname(rtmpfile), lib), block))
47  else:
48  block = _getBlock(line)
49 
50 
51 def _procSysRootMap(rtmapdict):
52  if "ROOTSYS" in os.environ:
53  rtmpfile = os.path.join(os.environ["ROOTSYS"], "etc", "system.rootmap")
54  block = ""
55  for line in open(rtmpfile, 'r'):
56  line = line[:-1]
57  if line:
58  if line[0] != '#':
59  entry, lib = _getEntry(line)
60  if entry not in rtmapdict:
61  rtmapdict[entry] = []
62  rtmapdict[entry].append((os.path.join(
63  os.environ["ROOTSYS"], "lib", lib), block))
64  else:
65  block = _getBlock(line)
66  else:
67  print("WARNING: No ROOTSYS defined!")
68 
69 
70 def _isRootMap(filename):
71  # The file must begin with "rootmap"
72  if (filename.find("rootmap") == 0):
73  return True
74  return False
75 
76 
77 def getMaps(pathstring="", sysrtmap=False):
78  rtmapdict = dict()
79  pthlist = _getPath(pathstring)
80  if sysrtmap:
81  _procSysRootMap(rtmapdict)
82  for p in pthlist:
83  try:
84  for f in filter(_isRootMap, os.listdir(p)):
85  rtmpfile = os.path.join(p, f)
86  if (os.path.exists(rtmpfile)):
87  _procRootMap(rtmpfile, rtmapdict)
88  except:
89  pass
90  return rtmapdict
91 
92 
93 def _getLongestEntry(maps):
94  sz = 0
95  for k in maps.keys():
96  if len(k) > sz:
97  sz = len(k)
98  return sz
99 
100 
101 def printMaps(maps, recomp=None):
102  linelen = _getLongestEntry(maps)
103  frmat = r"%-" + str(linelen) + "s\t"
104  kys = maps.keys()
105  kys.sort()
106  if recomp:
107  kys = filter(recomp.search, kys)
108  for k in kys:
109  if len(maps[k]) > 1:
110  print("!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!")
111  for l in maps[k]:
112  print(frmat % k, end=' ')
113  for m in l:
114  print(m, end=' ')
115  print(" ")
116  return
117 
118 
119 def shortPrintMaps(maps, recomp=None):
120  kys = maps.keys()
121  kys.sort()
122  if recomp:
123  kys = filter(recomp.search, kys)
124  for k in kys:
125  if len(maps[k]) > 1:
126  print(k, "!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!")
127  else:
128  print(k)
129  for l in maps[k]:
130  for m in l:
131  print("\t%s" % m, end=' ')
132  print(" ")
133  return
134 
135 
136 def printKeys(maps, recomp=None):
137  kys = maps.keys()
138  kys.sort()
139  if recomp:
140  kys = filter(recomp.search, kys)
141  for k in kys:
142  if len(maps[k]) > 1:
143  print("!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!")
144  for l in maps[k]:
145  print(k)
146  return
147 
148 
149 def checkDict(maps, recomp=None):
150  kys = maps.keys()
151  kys.sort()
152  if recomp:
153  kys = filter(recomp.search, kys)
154  for k in kys:
155  if len(maps[k]) > 1:
156  print("!!!!!!!!!!!! WARNING - More than one entry !!!!!!!!!!")
157  print(k)
158  for l in maps[k]:
159  for m in l:
160  print("\t%s" % m, end=' ')
161  print(" ")
162  return
def checkDict(maps, recomp=None)
Definition: RootMap.py:149
def shortPrintMaps(maps, recomp=None)
Definition: RootMap.py:119
def _getPath(pathstring="")
Definition: RootMap.py:8
def getMaps(pathstring="", sysrtmap=False)
Definition: RootMap.py:77
def _isRootMap(filename)
Definition: RootMap.py:70
def _getEntry(line)
Definition: RootMap.py:19
def _getLongestEntry(maps)
Definition: RootMap.py:93
def printKeys(maps, recomp=None)
Definition: RootMap.py:136
def _getBlock(line)
Definition: RootMap.py:30
def _procRootMap(rtmpfile, rtmapdict)
Definition: RootMap.py:36
def _procSysRootMap(rtmapdict)
Definition: RootMap.py:51
def printMaps(maps, recomp=None)
Definition: RootMap.py:101