BasicSConscript¶
- class lsst.sconsUtils.scripts.BasicSConscript¶
Bases:
object
A scope-only class for SConscript-replacement convenience functions.
All methods of
BasicSConscript
are static. All of these functions update thetargets
dictionary of targets used to set default targets and fix build dependencies; if you build anything without using BasicSConscript methods, be sure to manually add it to thetargets
dict
.Methods Summary
doc
([config, projectName, projectNumber])Convenience function to replace standard doc/SConscript boilerplate.
examples
([ccList, swigNameList, swigSrc])Convenience function to replace standard examples/SConscript boilerplate.
lib
([libName, src, libs, noBuildList])Convenience function to replace standard lib/SConscript boilerplate.
pybind11
([nameList, libs, extraSrc, ...])Convenience function to replace standard
python/*/SConscript
boilerplate.python
([module, src, extra, libs])Convenience function to replace standard
python/*/SConscript
boilerplate.shebang
([src])Handles shebang rewriting.
tests
([pyList, ccList, swigNameList, ...])Convenience function to replace standard tests/SConscript boilerplate.
Methods Documentation
- static doc(config='doxygen.conf.in', projectName=None, projectNumber=None, **kwargs)¶
Convenience function to replace standard doc/SConscript boilerplate.
With no arguments, this will generate a Doxygen config file and run Doxygen with
lsst.sconsUtils.env.Doxygen
, using the projectName and projectNumber fromenv["packageName"]
andenv["version"]
, respectively.This essentially just forwards all arguments (which should be passed as keyword arguments) to
lsst.sconsUtils.env.Doxygen()`
.
- static examples(ccList=None, swigNameList=None, swigSrc=None)¶
Convenience function to replace standard examples/SConscript boilerplate.
- Parameters:
- ccList
list
, optional A sequence of C++ examples to build (including .cc extensions). Defaults to a
*.cc
glob of the examples directory, minus any files that end with*_wrap.cc
and files present in swigSrc.- swigNameList
list
, optional A sequence of SWIG modules to build (NOT including .i extensions).
- swigSrc
list
, optional Additional source files to be compiled into SWIG modules, as a dictionary; each key must be an entry in swigNameList, and each value a list of additional source files.
- ccList
- Returns:
- result???
???
- static lib(libName=None, src=None, libs='self', noBuildList=None)¶
Convenience function to replace standard lib/SConscript boilerplate.
With no arguments, this will build a shared library with the same name as the package. This uses
lsst.sconsUtils.env.SourcesForSharedLibrary
to support theoptFiles
/noOptFiles
command-line variables.- Parameters:
- libName
str
Name of the shared libray to be built (defaults to
env["packageName"]
).- src
str
orGlob
Source to compile into the library. Defaults to a 4-directory deep glob of all
*.cc
files in#src
.- libs
str
orlist
Libraries to link against, either as a string argument to be passed to
lsst.sconsUtils.env.getLibs
or a sequence of actual libraries to pass in.- noBuildList
list
List of source files to exclude from building.
- libName
- Returns:
- result???
???
- static pybind11(nameList=[], libs='main python', extraSrc=None, addUnderscore=True)¶
Convenience function to replace standard
python/*/SConscript
boilerplate.Note
Deprecated
Use
lsst.sconsUtils.scripts.BasicSConscript.python
for new code with all source compiled into a single module. Will be removed once all LSST code has been converted to use the new approach.- Parameters:
- nameList
list
, optional Sequence of pybind11 modules to be built (does not include the file extensions).
- libs
str
orlist
, optional Libraries to link against, either as a string argument to be passed to
lsst.sconsUtils.env.getLibs
or a sequence of actual libraries to pass in.- extraSrc
dict
, optional A dictionary of additional source files that go into the modules. Each key should be an entry in nameList, and each value should be a list of additional C++ source files.
- addUnderscore
bool
, optional Add an underscore to each library name (if the source file name does not already start with underscore)? If False the library name is always the same as the source file name DEPRECATED: always use
False
for new code.
- nameList
- Returns:
- result
lsst.sconsUtils.env.Pybind11LoadableModule
A Pybind11LoadableModule instance.
- result
- static python(module=None, src=None, extra=(), libs='main python')¶
Convenience function to replace standard
python/*/SConscript
boilerplate.With no arguments, this will build a pybind11 module with the name determined according to our current pseudo-convention: last part of
env["packageName"]
(split by underscores), with an underscore prepended. All .cc files in the same directory will be linked into a single module.- Parameters:
- module
str
, optional Name of the module to build (does not include the file extension). Defaults to
"_" + env["packageName"].split("_")[-1]
.- src
list
, optional A list of source files to build the module from; defaults to all .cc files in the directory.
- extra
list
, optional A list of additional source files to add to
src
; should only be used ifsrc
is defaulted.- libs
str
orlist
, optional Libraries to link against, either as a string argument to be passed to
lsst.sconsUtils.env.getLibs
or a sequence of actual libraries to pass in.
- module
- Returns:
- result
lsst.sconsUtils.env.Pybind11LoadableModule
A Pybind11LoadableModule instance.
- result
- static shebang(src=None)¶
Handles shebang rewriting.
With no arguments looks in
bin.src/
and copies tobin/
IfneedShebangRewrite()
isFalse
the shebang will not be modified.Only Python files requiring a shebang rewrite should be placed in
bin.src/
. Do not place executable binaries in this directory.- Parameters:
- src
str
orGlob
, optional Glob to use to search for files.
- src
- static tests(pyList=None, ccList=None, swigNameList=None, swigSrc=None, ignoreList=None, noBuildList=None, pySingles=None, args=None)¶
Convenience function to replace standard tests/SConscript boilerplate.
With no arguments, will attempt to figure out which files should be run as tests and which are support code (like SWIG modules).
Python tests will be marked as dependent on the entire
#python
directory and any SWIG modules built in the tests directory. This should ensure tests are always run when their results might have changed, but may result in them being re-run more often than necessary.- Parameters:
- pyList
list
, optional A sequence of Python tests to run (including .py extensions). Defaults to a
*.py
glob of the tests directory, minus any files corresponding to the SWIG modules in swigFileList. An empty list will enable automated test discovery.- ccList
list
, optional A sequence of C++ unit tests to run (including .cc extensions). Defaults to a
*.cc
glob of the tests directory, minus any files that end with*_wrap.cc
and files present in swigSrc.- swigNameList
list
, optional A sequence of SWIG modules to build (NOT including .i extensions).
- swigSrc
dict
, optional Additional source files to be compiled into SWIG modules, as a dictionary; each key must be an entry in swigNameList, and each value a list of additional source files.
- ignoreList
list
, optional List of ignored tests to be passed to
lsst.sconsUtils.tests.Control
(note that ignored tests will be built, but not run).- noBuildList
list
, optional List of tests that should not even be built.
- pySingles
list
, optional A sequence of Python tests to run (including .py extensions) as independent single tests. By default this list is empty and all tests are run in a single pytest call. Items specified here will not appear in the default pyList and should not start with
test_
(such that they will not be auto-discoverable by pytest).- args
dict
, optional A dictionary of program arguments for tests, passed directly to
lsst.sconsUtils.tests.Control
.
- pyList
- Returns:
- result???
???