LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | List of all members
lsst.sconsUtils.builders.DoxygenBuilder Class Reference

A callable to be used as an SCons Action to run Doxygen. More...

Inheritance diagram for lsst.sconsUtils.builders.DoxygenBuilder:

Public Member Functions

def __init__
 
def __call__
 
def findSources
 
def findTargets
 
def buildConfig
 

Public Attributes

 results
 
 sources
 
 targets
 
 useTags
 
 inputs
 
 excludes
 
 outputPaths
 
 makeTag
 

Detailed Description

A callable to be used as an SCons Action to run Doxygen.

This should only be used by the env.Doxygen pseudo-builder method.

Definition at line 238 of file builders.py.

Constructor & Destructor Documentation

def lsst.sconsUtils.builders.DoxygenBuilder.__init__ (   self,
  kw 
)

Definition at line 240 of file builders.py.

241  def __init__(self, **kw):
242  self.__dict__.update(kw)
243  self.results = []
244  self.sources = []
245  self.targets = []
246  self.useTags = list(SCons.Script.File(item).abspath for item in self.useTags)
247  self.inputs = list(SCons.Script.Entry(item).abspath for item in self.inputs)
248  self.excludes = list(SCons.Script.Entry(item).abspath for item in self.excludes)
249  self.outputPaths = list(SCons.Script.Dir(item) for item in self.outputs)

Member Function Documentation

def lsst.sconsUtils.builders.DoxygenBuilder.__call__ (   self,
  env,
  config 
)

Definition at line 250 of file builders.py.

251  def __call__(self, env, config):
252  self.findSources()
253  self.findTargets()
254  inConfigNode = SCons.Script.File(config)
255  outConfigName, ext = os.path.splitext(inConfigNode.abspath)
256  outConfigNode = SCons.Script.File(outConfigName)
257  if self.makeTag:
258  tagNode = SCons.Script.File(self.makeTag)
259  self.makeTag = tagNode.abspath
260  self.targets.append(tagNode)
261  config = env.Command(target=outConfigNode, source=inConfigNode if os.path.exists(config) else None,
262  action=self.buildConfig)
263  env.AlwaysBuild(config)
264  doc = env.Command(target=self.targets, source=self.sources,
265  action="doxygen %s" % outConfigNode.abspath)
266  for path in self.outputPaths:
267  env.Clean(doc, path)
268  env.Depends(doc, config)
269  self.results.extend(config)
270  self.results.extend(doc)
271  return self.results
def lsst.sconsUtils.builders.DoxygenBuilder.buildConfig (   self,
  target,
  source,
  env 
)

Definition at line 311 of file builders.py.

312  def buildConfig(self, target, source, env):
313  outConfigFile = open(target[0].abspath, "w")
314  for tagPath in self.useTags:
315  docDir, tagFile = os.path.split(tagPath)
316  htmlDir = os.path.join(docDir, "html")
317  outConfigFile.write('TAGFILES += "%s=%s"\n' % (tagPath, htmlDir))
318  self.sources.append(SCons.Script.Dir(docDir))
319  docPaths = []
320  incFiles = []
321  for incPath in self.includes:
322  docDir, incFile = os.path.split(incPath)
323  docPaths.append('"%s"' % docDir)
324  incFiles.append('"%s"' % incFile)
325  self.sources.append(SCons.Script.File(incPath))
326  if docPaths:
327  outConfigFile.write('@INCLUDE_PATH = %s\n' % " ".join(docPaths))
328  for incFile in incFiles:
329  outConfigFile.write('@INCLUDE = %s\n' % incFile)
330  if self.projectName is not None:
331  outConfigFile.write("PROJECT_NAME = %s\n" % self.projectName)
332  if self.projectNumber is not None:
333  outConfigFile.write("PROJECT_NUMBER = %s\n" % self.projectNumber)
334  outConfigFile.write("INPUT = %s\n" % " ".join(self.inputs))
335  outConfigFile.write("EXCLUDE = %s\n" % " ".join(self.excludes))
336  outConfigFile.write("FILE_PATTERNS = %s\n" % " ".join(self.patterns))
337  outConfigFile.write("RECURSIVE = YES\n" if self.recursive else "RECURSIVE = NO\n")
338  allOutputs = set(("html", "latex", "man", "rtf", "xml"))
339  for output, path in zip(self.outputs, self.outputPaths):
340  try:
341  allOutputs.remove(output.lower())
342  except:
343  state.log.fail("Unknown Doxygen output format '%s'." % output)
344  state.log.finish()
345  outConfigFile.write("GENERATE_%s = YES\n" % output.upper())
346  outConfigFile.write("%s_OUTPUT = %s\n" % (output.upper(), path.abspath))
347  for output in allOutputs:
348  outConfigFile.write("GENERATE_%s = NO\n" % output.upper())
349  if self.makeTag is not None:
350  outConfigFile.write("GENERATE_TAGFILE = %s\n" % self.makeTag)
351  #
352  # Append the local overrides (usually doxygen.conf.in)
353  #
354  if len(source) > 0:
355  with open(source[0].abspath, "r") as inConfigFile:
356  outConfigFile.write(inConfigFile.read())
357 
358  outConfigFile.close()
def lsst.sconsUtils.builders.DoxygenBuilder.findSources (   self)

Definition at line 272 of file builders.py.

273  def findSources(self):
274  for path in self.inputs:
275  if os.path.isdir(path):
276  for root, dirs, files in os.walk(path):
277  if os.path.abspath(root) in self.excludes:
278  dirs[:] = []
279  continue
280  if not self.recursive:
281  dirs[:] = []
282  else:
283  toKeep = []
284  for relDir in dirs:
285  if relDir.startswith("."):
286  continue
287  absDir = os.path.abspath(os.path.join(root, relDir))
288  if absDir not in self.excludes:
289  toKeep.append(relDir)
290  dirs[:] = toKeep
291  if self.excludeSwig:
292  for relFile in files:
293  base, ext = os.path.splitext(relFile)
294  if ext == ".i":
295  self.excludes.append(os.path.join(root, base + ".py"))
296  self.excludes.append(os.path.join(root, base + "_wrap.cc"))
297  for relFile in files:
298  absFile = os.path.abspath(os.path.join(root, relFile))
299  if absFile in self.excludes:
300  continue
301  for pattern in self.patterns:
302  if fnmatch.fnmatch(relFile, pattern):
303  self.sources.append(SCons.Script.File(absFile))
304  break
305  elif os.path.isfile(path):
306  self.sources.append(SCons.Script.File(path))
def lsst.sconsUtils.builders.DoxygenBuilder.findTargets (   self)

Definition at line 307 of file builders.py.

308  def findTargets(self):
309  for item in self.outputs:
310  self.targets.append(SCons.Script.Dir(item))

Member Data Documentation

lsst.sconsUtils.builders.DoxygenBuilder.excludes

Definition at line 247 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.inputs

Definition at line 246 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.makeTag

Definition at line 258 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.outputPaths

Definition at line 248 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.results

Definition at line 242 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.sources

Definition at line 243 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.targets

Definition at line 244 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.useTags

Definition at line 245 of file builders.py.


The documentation for this class was generated from the following file: