LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
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 237 of file builders.py.

Constructor & Destructor Documentation

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

Definition at line 239 of file builders.py.

240  def __init__(self, **kw):
241  self.__dict__.update(kw)
242  self.results = []
243  self.sources = []
244  self.targets = []
245  self.useTags = list(SCons.Script.File(item).abspath for item in self.useTags)
246  self.inputs = list(SCons.Script.Entry(item).abspath for item in self.inputs)
247  self.excludes = list(SCons.Script.Entry(item).abspath for item in self.excludes)
248  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 249 of file builders.py.

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

Definition at line 310 of file builders.py.

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

Definition at line 271 of file builders.py.

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

Definition at line 306 of file builders.py.

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

Member Data Documentation

lsst.sconsUtils.builders.DoxygenBuilder.excludes

Definition at line 246 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.inputs

Definition at line 245 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.makeTag

Definition at line 257 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.outputPaths

Definition at line 247 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.results

Definition at line 241 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.sources

Definition at line 242 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.targets

Definition at line 243 of file builders.py.

lsst.sconsUtils.builders.DoxygenBuilder.useTags

Definition at line 244 of file builders.py.


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