Previously we were tighly coupled with MozbuildObject. This was not in
the spirit of mach being a generic tool. Now, instead of passing multiple
arguments to __init__ of the class providing the mach command we either
pass 0 or 1. The number of arguments is detected when processing the
@CommandProvider decorator. The optional argument is a named tuple
containing mach run-time state.
Capturing of mach command provider information is now captured in a
class (as opposed to an anoymous tuple). We also capture these in a rich
data structure which is passed as part of the run-time data to the
command provider class. This allows mach commands to inspect the mach
environment.
Mach decorators have been moved to mach.decorators. mach.base is
reserved for generic mach data/container classes.
Existing mach command classes derived from MozbuildObject have been
replaced with either object or mozbuild.base.MachCommandBase. This
latter class translates the mach context instance passed to __init__
into the constructor arguments for MozbuildObject.__init__.
Support for registering function handlers with mach has been removed.
All handlers must be inside classes.
--HG--
rename : python/mach/mach/base.py => python/mach/mach/decorators.py
Python 2.6.1 is what ships on OS X 10.6 and we want to support mozboot
there.
We include 3 fixes:
1) optparse doesn't like unicode as its initial argument
2) __init__(**kwargs) doesn't like unicode keys
3) subprocess does not have check_output
We took the easy solution of removing unicode_literals. This should have
no significant consequences.
This implements the OS X backend for the bootstrapper. It ensures that
the system is in the proper state to build Firefox by installing
required packages.
This was tested with a fresh install of OS X 10.8. Basic support for OS
X 10.6 and 10.7 is implemented, but not thorougly tested.