||This module contains the data structure (context) holding the configuration
from a moz.build. The data emitted by the frontend derives from those contexts.
It also defines the set of variables and functions available in moz.build.
If you are looking for the absolute authority on what moz.build files can
contain, you've come to the right place.
||Data structures representing Mozilla's source tree.
The frontend files are parsed into static data structures. These data
structures are defined in this module.
All data structures of interest are children of the TreeMetadata class.
Logic for populating these data structures is not defined in this class.
Instead, what we have here are dumb container classes. The emitter module
contains the code for converting executed mozbuild files into these data
||Converts the executed mozbuild files into data structures.
This is a bridge between reader.py and data.py. It takes what was read by
reader.BuildReader and converts it into the classes defined in the data
||Specialized Context for use with data extracted from Gyp.
config is the ConfigEnvironment for this context.
relobjdir is the object directory that will be used for this context,
relative to the topobjdir defined in the ConfigEnvironment.
||Represents an error due to an invalid path.
||Read build frontend files into data structures.
In terms of code architecture, the main interface is BuildReader. BuildReader
starts with a root mozbuild file. It creates a new execution environment for
this file, which is represented by the Sandbox class. The Sandbox class is used
to fill a Context, representing the output of an individual mozbuild file. The
The BuildReader contains basic logic for traversing a tree of mozbuild files.
It does this by examining specific variables populated during execution.
||Python sandbox implementation for build files.
This module contains classes for Python sandboxes that execute in a
The main class is `Sandbox`. This provides an execution environment for Python
code and is used to fill a Context instance for the takeaway information from
Code in this module takes a different approach to exception handling compared
to what you'd see elsewhere in Python. Arguments to built-in exceptions like
KeyError are machine parseable. This machine-friendly data is used to present
user-friendly error messages in the case of errors.