Module Main

Architecturally, this is the scons script, and will likely only be
called from the external "scons" wrapper. Consequently, anything here
should not be, or be considered, part of the build engine. If it's
something that we expect other software to want to use, it should go in
some other module. If it's specific to the "scons" script invocation,
it goes here.

_scons_user_error(e)
Handle user errors. Print out a message and a description of the
error, along with the line number and routine where it occured.
The file and line number will be the deepest stack frame that is
not part of SCons itself.

_scons_user_warning(e)
Handle user warnings. Print out a message and a description of
the warning, along with the line number and routine where it occured.
The file and line number will be the deepest stack frame that is
not part of SCons itself.

_scons_internal_warning(e)
Slightly different from _scons_user_warning in that we use the
current call stack rather than sys.exc_info() to get our stack trace.
This is used by the warnings framework to print warnings.

_SConstruct_exists(dirname='',
repositories=[],
filelist=None)
This function checks that an SConstruct file exists in a directory.
If so, it returns the path of the file. By default, it checks the
current directory.

_load_all_site_scons_dirs(topdir,
verbose=None)
Load all of the predefined site_scons dir.
Order is significant; we load them in order from most generic
(machine-wide) to most specific (topdir).
The verbose argument is only for testing.