The Gaudi Framework  v36r16 (ea80daf8)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
gaudirun Namespace Reference

Classes

class  ArgProcessor
 
class  FakeModule
 

Functions

def getArgsWithoutProfilerInfo (args)
 
def setLibraryPreload (newpreload)
 
def rationalizepath (path)
 
def getArgsFromQmt (qmtfile)
 
def option_cb (option, opt, value, parser)
 

Variables

list _qmt_tmp_opt_files = []
 
 parser = OptionParser(usage="%prog [options] <opts_file|function_id> ...")
 
 action
 
 help
 
 type
 
 metavar
 
 default
 
 callback
 
 nargs
 
 dest
 
 options = ["process({!r})".format(arg) for arg in args]
 
 tcmalloc
 
 profilerName = opts.profilerName
 
 profilerOutput = opts.profilerOutput or (profilerName + ".output")
 
 profilerExtraOptions = opts.profilerExtraOptions
 
 preload = os.environ.get("LD_PRELOAD", "")
 
 ncpus
 
 old_conf_user_apply
 
 run_info_file
 
 application
 
list argv = []
 
 opts
 
 args = [a for a in sys.argv if a != "-T" and not "--tcmalloc".startswith(a)]
 
 sys_cpus = cpu_count()
 
string s = "Invalid value : --ncpus : only %i cpus available" % sys_cpus
 
string prefix = "// "
 
 level = logging.INFO
 
 with_time
 
 root_logger = logging.getLogger()
 
 sanitizers = os.environ.get("PRELOAD_SANITIZER_LIB", "")
 
list to_load = [libname for libname in opts.preload if libname not in set(preload)]
 
string profilerExecName = ""
 
string igprofPerfOptions = "-d -pp -z -o igprof.pp.gz".split()
 
string profilerOptions = ""
 
 toolname = profilerName.replace("valgrind", "")
 
string outoption = "--log-file"
 
 profilerPath = distutils.spawn.find_executable(profilerExecName)
 
list to_reload = []
 
list arglist = [profilerPath] + profilerOptions.split() + args
 
 output
 
 c = gaudimain()
 
 process
 
 optlines = list(opts.options)
 
dictionary g = {"process": process}
 
dictionary l = {}
 
 _appliedConfigurableUsers_
 
 use_temp_opts
 
 instances
 
 fd
 
 tmpfile
 
 printsequence
 
 retcode = c.run(opts.gdb, opts.ncpus)
 
dictionary run_info = {}
 

Function Documentation

◆ getArgsFromQmt()

def gaudirun.getArgsFromQmt (   qmtfile)
Given a .qmt file, return the command line arguments of the corresponding
test.

Definition at line 90 of file gaudirun.py.

90 def getArgsFromQmt(qmtfile):
91  """
92  Given a .qmt file, return the command line arguments of the corresponding
93  test.
94  """
95  from xml.etree import ElementTree as ET
96 
97  global _qmt_tmp_opt_files
98  # parse the .qmt file and extract args and options
99  qmt = ET.parse(qmtfile)
100  args = [a.text for a in qmt.findall("argument[@name='args']//text")]
101  options = qmt.find("argument[@name='options']/text")
102 
103  if (
104  options is not None and options.text is not None
105  ): # options need to be dumped in a temporary file
106  import re
107  from tempfile import NamedTemporaryFile
108 
109  if re.search(
110  r"from\s+Gaudi.Configuration\s+import\s+\*"
111  r"|from\s+Configurables\s+import",
112  options.text,
113  ):
114  tmp_opts = NamedTemporaryFile(suffix=".py")
115  else:
116  tmp_opts = NamedTemporaryFile(suffix=".opts")
117  tmp_opts.write(options.text.encode("ascii"))
118  tmp_opts.flush()
119  args.append(tmp_opts.name)
120  _qmt_tmp_opt_files.append(tmp_opts)
121 
122  # relative paths in a .qmt are rooted in the qmtest directory, so
123  # - find where the .qmt lives
124  qmtfile = os.path.abspath(qmtfile)
125  if "qmtest" in qmtfile.split(os.path.sep):
126  # this return the path up to the 'qmtest' entry in qmtfile
127  testdir = qmtfile
128  while os.path.basename(testdir) != "qmtest":
129  testdir = os.path.dirname(testdir)
130  else:
131  testdir = "."
132  # - temporarily switch to that directory and rationalize the paths
133  old_cwd = os.getcwd()
134  os.chdir(testdir)
135  args = [rationalizepath(arg) for arg in args]
136  os.chdir(old_cwd)
137 
138  return args
139 
140 
141 # ---------------------------------------------------------------------

◆ getArgsWithoutProfilerInfo()

def gaudirun.getArgsWithoutProfilerInfo (   args)
Remove from the arguments the presence of the profiler and its output in
order to relaunch the script w/o infinite loops.

>>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', 'myopts.py'])
['myopts.py']

>>> getArgsWithoutProfilerInfo(['--profilerName=igprof', 'myopts.py'])
['myopts.py']

>>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', '--profilerExtraOptions', 'a b c', 'myopts.py'])
['myopts.py']

>>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', '--options', 'a b c', 'myopts.py'])
['--options', 'a b c', 'myopts.py']

Definition at line 20 of file gaudirun.py.

21  """
22  Remove from the arguments the presence of the profiler and its output in
23  order to relaunch the script w/o infinite loops.
24 
25  >>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', 'myopts.py'])
26  ['myopts.py']
27 
28  >>> getArgsWithoutProfilerInfo(['--profilerName=igprof', 'myopts.py'])
29  ['myopts.py']
30 
31  >>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', '--profilerExtraOptions', 'a b c', 'myopts.py'])
32  ['myopts.py']
33 
34  >>> getArgsWithoutProfilerInfo(['--profilerName', 'igprof', '--options', 'a b c', 'myopts.py'])
35  ['--options', 'a b c', 'myopts.py']
36  """
37  newargs = []
38  args = list(args) # make a temp copy
39  while args:
40  o = args.pop(0)
41  if o.startswith("--profile"):
42  if "=" not in o:
43  args.pop(0)
44  else:
45  newargs.append(o)
46  return newargs
47 
48 

◆ option_cb()

def gaudirun.option_cb (   option,
  opt,
  value,
  parser 
)
Add the option line to a list together with its position in the
argument list.

Definition at line 195 of file gaudirun.py.

195  def option_cb(option, opt, value, parser):
196  """Add the option line to a list together with its position in the
197  argument list.
198  """
199  parser.values.options.append((len(parser.largs), value))
200 

◆ rationalizepath()

def gaudirun.rationalizepath (   path)
Convert the given path to a real path if the pointed file exists, otherwise
just normalize it.

Definition at line 74 of file gaudirun.py.

74 def rationalizepath(path):
75  """
76  Convert the given path to a real path if the pointed file exists, otherwise
77  just normalize it.
78  """
79  path = os.path.normpath(os.path.expandvars(path))
80  if os.path.exists(path):
81  path = os.path.realpath(path)
82  return path
83 
84 
85 # variable used to keep alive the temporary option files extracted
86 # from the .qmt

◆ setLibraryPreload()

def gaudirun.setLibraryPreload (   newpreload)
Adds  a list of libraries to LD_PRELOAD

Definition at line 49 of file gaudirun.py.

49 def setLibraryPreload(newpreload):
50  """Adds a list of libraries to LD_PRELOAD"""
51  preload = os.environ.get("LD_PRELOAD", "")
52  if preload:
53  preload = preload.replace(" ", ":").split(":")
54  else:
55  preload = []
56 
57  for libname in set(preload).intersection(newpreload):
58  logging.warning(
59  "Ignoring preload of library %s because it is " "already in LD_PRELOAD.",
60  libname,
61  )
62 
63  to_load = [libname for libname in newpreload if libname not in set(preload)]
64 
65  if to_load:
66  preload += to_load
67  preload = ":".join(preload)
68  os.environ["LD_PRELOAD"] = preload
69  logging.info("Setting LD_PRELOAD='%s'", preload)
70 
71  return to_load
72 
73 

Variable Documentation

◆ _appliedConfigurableUsers_

gaudirun._appliedConfigurableUsers_
private

Definition at line 593 of file gaudirun.py.

◆ _qmt_tmp_opt_files

list gaudirun._qmt_tmp_opt_files = []
private

Definition at line 87 of file gaudirun.py.

◆ action

gaudirun.action

Definition at line 155 of file gaudirun.py.

◆ application

gaudirun.application

Definition at line 325 of file gaudirun.py.

◆ arglist

list gaudirun.arglist = [profilerPath] + profilerOptions.split() + args

Definition at line 503 of file gaudirun.py.

◆ args

def gaudirun.args = [a for a in sys.argv if a != "-T" and not "--tcmalloc".startswith(a)]

Definition at line 338 of file gaudirun.py.

◆ argv

list gaudirun.argv = []

Definition at line 329 of file gaudirun.py.

◆ c

gaudirun.c = gaudimain()

Definition at line 527 of file gaudirun.py.

◆ callback

gaudirun.callback

Definition at line 204 of file gaudirun.py.

◆ default

gaudirun.default

Definition at line 190 of file gaudirun.py.

◆ dest

gaudirun.dest

Definition at line 226 of file gaudirun.py.

◆ fd

gaudirun.fd

Definition at line 629 of file gaudirun.py.

◆ g

dictionary gaudirun.g = {"process": process}

Definition at line 581 of file gaudirun.py.

◆ help

gaudirun.help

Definition at line 156 of file gaudirun.py.

◆ igprofPerfOptions

string gaudirun.igprofPerfOptions = "-d -pp -z -o igprof.pp.gz".split()

Definition at line 431 of file gaudirun.py.

◆ instances

gaudirun.instances

Definition at line 621 of file gaudirun.py.

◆ l

dictionary gaudirun.l = {}

Definition at line 582 of file gaudirun.py.

◆ level

gaudirun.level = logging.INFO

Definition at line 366 of file gaudirun.py.

◆ metavar

gaudirun.metavar

Definition at line 163 of file gaudirun.py.

◆ nargs

gaudirun.nargs

Definition at line 206 of file gaudirun.py.

◆ ncpus

gaudirun.ncpus

Definition at line 321 of file gaudirun.py.

◆ old_conf_user_apply

gaudirun.old_conf_user_apply

Definition at line 323 of file gaudirun.py.

◆ options

list gaudirun.options = ["process({!r})".format(arg) for arg in args]

Definition at line 315 of file gaudirun.py.

◆ optlines

gaudirun.optlines = list(opts.options)

Definition at line 555 of file gaudirun.py.

◆ opts

gaudirun.opts

Definition at line 338 of file gaudirun.py.

◆ outoption

string gaudirun.outoption = "--log-file"

Definition at line 457 of file gaudirun.py.

◆ output

gaudirun.output

Definition at line 523 of file gaudirun.py.

◆ parser

gaudirun.parser = OptionParser(usage="%prog [options] <opts_file|function_id> ...")

Definition at line 151 of file gaudirun.py.

◆ prefix

string gaudirun.prefix = "// "

Definition at line 363 of file gaudirun.py.

◆ preload

string gaudirun.preload = os.environ.get("LD_PRELOAD", "")

Definition at line 320 of file gaudirun.py.

◆ printsequence

gaudirun.printsequence

Definition at line 636 of file gaudirun.py.

◆ process

gaudirun.process

Definition at line 547 of file gaudirun.py.

◆ profilerExecName

string gaudirun.profilerExecName = ""

Definition at line 425 of file gaudirun.py.

◆ profilerExtraOptions

gaudirun.profilerExtraOptions = opts.profilerExtraOptions

Definition at line 319 of file gaudirun.py.

◆ profilerName

gaudirun.profilerName = opts.profilerName

Definition at line 317 of file gaudirun.py.

◆ profilerOptions

string gaudirun.profilerOptions = ""

Definition at line 433 of file gaudirun.py.

◆ profilerOutput

gaudirun.profilerOutput = opts.profilerOutput or (profilerName + ".output")

Definition at line 318 of file gaudirun.py.

◆ profilerPath

gaudirun.profilerPath = distutils.spawn.find_executable(profilerExecName)

Definition at line 479 of file gaudirun.py.

◆ retcode

gaudirun.retcode = c.run(opts.gdb, opts.ncpus)

Definition at line 650 of file gaudirun.py.

◆ root_logger

gaudirun.root_logger = logging.getLogger()

Definition at line 370 of file gaudirun.py.

◆ run_info

dictionary gaudirun.run_info = {}

Definition at line 658 of file gaudirun.py.

◆ run_info_file

gaudirun.run_info_file

Definition at line 324 of file gaudirun.py.

◆ s

string gaudirun.s = "Invalid value : --ncpus : only %i cpus available" % sys_cpus

Definition at line 348 of file gaudirun.py.

◆ sanitizers

gaudirun.sanitizers = os.environ.get("PRELOAD_SANITIZER_LIB", "")

Definition at line 373 of file gaudirun.py.

◆ sys_cpus

gaudirun.sys_cpus = cpu_count()

Definition at line 346 of file gaudirun.py.

◆ tcmalloc

gaudirun.tcmalloc

Definition at line 316 of file gaudirun.py.

◆ tmpfile

gaudirun.tmpfile

Definition at line 629 of file gaudirun.py.

◆ to_load

list gaudirun.to_load = [libname for libname in opts.preload if libname not in set(preload)]

Definition at line 411 of file gaudirun.py.

◆ to_reload

def gaudirun.to_reload = []

Definition at line 494 of file gaudirun.py.

◆ toolname

gaudirun.toolname = profilerName.replace("valgrind", "")

Definition at line 456 of file gaudirun.py.

◆ type

gaudirun.type

Definition at line 162 of file gaudirun.py.

◆ use_temp_opts

gaudirun.use_temp_opts

Definition at line 615 of file gaudirun.py.

◆ with_time

gaudirun.with_time

Definition at line 369 of file gaudirun.py.

gaudirun.getArgsFromQmt
def getArgsFromQmt(qmtfile)
Definition: gaudirun.py:90
gaudirun.getArgsWithoutProfilerInfo
def getArgsWithoutProfilerInfo(args)
Definition: gaudirun.py:20
gaudirun.option_cb
def option_cb(option, opt, value, parser)
Definition: gaudirun.py:195
gaudirun.setLibraryPreload
def setLibraryPreload(newpreload)
Definition: gaudirun.py:49
gaudirun.rationalizepath
def rationalizepath(path)
Definition: gaudirun.py:74