Modify LogSource such that adding a child to a LogSource will cause the child to
automatically inherit any LogSinks from the parent. Also prevent duplicate
LogSinks on a given LogSource.
Add an interface for adding LogSinks to LogSources and sending
messages to the LogSinks.
Also updated the setup to depend on Blessings, which is a terminal control
program. This will be used in creating a console log sink in order to
achieve text coloring and cursor positioning.
Added a WorkUnitLogSource that extends LogSource and implements the methods
required to be a WorkUnit change listener. The class converts updates from
a WorkUnit into LogSource log messages.
Also added a string formatting method to the enums package to convert Status
enum values back to string equivalents.
Adds a LogSource class meant to keep track of log messages at different
LogLevels. This initial commit creates a class that will buffer messages
at LogLevels that should be displayed given the LogSource's verbosity
level. Future commits will add the ability for LogSource's to interact
with or be used by LogSinks.
Added listener functionality to the WorkUnit class, allowing for an object to
receive notifications when the WorkUnit's values are updated.
Also finished commenting the WorkUnit class and adding tests for the listener
functionality.
anvil. Updated context.py to use it.
+ Added the build_logging package which will contain components
related to build logging.
+ Added the WorkUnit class to the build_logging package. This class
tracks the progress of work units, along with their status and the
start and end time of a discrete work unit. WorkUnit classes can be
composed into Parent/Child relationships, in which case the parent
classes will try to inherit information from their children.
+ Add cache tests for the RuleContext#_check_if_cached method.
+ Return False from RuleContext#_check_if_cached if there are no src or output files. This is necessary to allow rules such as shell_execute to run even if there are no src or out attributes to the command.
+ Fix test failure with the BuildContext that was occurring because the
stop_on_error flag was not having the intended effect.
+ Removed the BuildContext#_pump method and replaced it with
BuildContext#_chain_rule_execution. The new method instantiates
RuleContexts for each rule as it iterates through the rules that need
to be built. It then uses deferreds to chain rule execution depending
on the resolution of dependencies.