Mach is the Mozilla developer’s swiss army knife. It gathers all the important commands you’ll ever
need to run, and puts them in one convenient place. Instead of hunting down documentation, or asking
for help on irc, often a simple |mach help| is all that’s needed to get you started. Mach is great.
But lately, mach is becoming more like the Mozilla developer’s toolbox. It still has everything you
need but it weighs a ton, and it takes a good deal of rummaging around to find anything.
Frankly, a good deal of the mach commands that exist now are either poorly written, confusing to use,
or even have no business being mach commands in the first place. Why is this important? What’s wrong
with having a toolbox?
Read more →Getting Started
tl;dr - It is possible to add more mach to your B2G repo! To get started, install pip:
$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python
Install b2g-commands:
$ pip install b2g-commands
To play around with it, cd to your B2G repo and run:
$ git pull # make sure repo is up to date
$ ./mach help # see all available commands
$ ./mach help <command> # see additional info about a command
Details
Most people who spend the majority of their time working within mozilla-central have probably been
acquainted with mach. In case you aren’t acquainted, mach is a generic command dispatching
tool. It is possible to write scripts called ‘mach targets’ which get registered with mach core and
transformed into commands. Mach targets in mozilla-central have access to all sorts of powerful
hooks into the build and test infrastructure which allow them to do some really cool things, such as
bootstrapping your environment, running builds and tests, and generating diagnostics.
Read more →Mach is an amazing tool which facilitates a large number of common user stories in the mozilla
source tree. You can perform initial setup, execute a build, run tests, examine diagnostics, even
search Google. Many of these things require an object directory. This can potentially lead to some
confusion if you typically have more than one object directory at any given time. How does mach know
which object directory to operate on?
Read more →Before now running ‘classic’ unittests (mochitest, reftest, xpcshell, etc.) on B2G emulators has
been a massive pain. The new recommended way of running them is through mach.
- Update B2G repo if you haven’t already:
git pull
- Configure an emulator:
BRANCH=master ./config.sh emulator
- Build:
./build.sh
- Run:
./mach mochitest-remote
Read more →