A type can be registered as inheriting from a base type, however,
due to lazy loading, it's possible for that base type to not have
been registered yet. Originally, calling type.register() with an
unregistered base type would have registered the base type. Later,
when the base type itself was registered, an error would have been
raised saying that the base type was already registered.
This change allows for lazy loading to occur such that a base type
can be registered after a subtype is has already inherited from it.
The generator methods referred to `bypassed` and `consumed`. `bypassed`
is no longer present in Jam and so any reference to that variable has been
removed.
In Jam, the language itself would raise an error when the sources list
was empty. In the Python port, it was assumed that sources was never
empty and would run into an IndexError when the empty sources list
tried to access the first element. This change checks sources first
and provides an error message in the event that sources is empty.
An empty source list can be passed in when the best alternative
evalutates to an empty list of sources. This target is then added
to a typed target, e.g. lib, which requires sources.
Run pep8.
BaseException is a builtin class. This renames BaseException to
BaseBoostBuildException. All other custom exceptions that deal
with the Boost.Build framework should inherit from this class.
This makes "catching" all Boost.Build specific exceptions much
easier.
We ensure that we don't have tests with subdirectories in the name to
avoid a log processing defficiency (and not easily resolved) of not
supporting subdirs for individual tests.
The old testing.time feature was horribly broken in the face of the
current b2 virtual target design. This redoes the feature in a friendly
manner to the virtual targets. This also adds the clock (aka wall clock)
timing value to __TIMING_RULE__ invocations.
This matches the policy of many open-source projects. On GitHub and
similar hosting services, this will provide the user some guidance when
creating issues or pull requests.
This change adds a toolset requirement that sets the python version
feature of the first configured python for a given target OS (usually
the host OS). This allows to correctly configure different python
interpreters for different target OSes.