Skip to content

Instantly share code, notes, and snippets.

@zaach
Forked from jedp/gist:3778932
Created September 27, 2012 18:04
Show Gist options
  • Save zaach/3795452 to your computer and use it in GitHub Desktop.
Save zaach/3795452 to your computer and use it in GitHub Desktop.
B2G repo setup and build quickstart

B2G Quickstart for Payments and Identity

This sets you up to make two separate targets:

  • One for a desktop [simulator] 1
  • One for the ZTE [device] 2

These are the moving parts:

  • [mozilla-inbound repo] 3 clone (hg)
  • [gaia repo] 4 fork (git)
  • [B2G project clone] 5 (git)

Basic organization

I've structured my directories like so:

b2g-src/
  gaia/       # git clone of my gaia fork
  mi/         # hg clone of my mozilla-inbound user repo
  build/      # build dir that mi will create

b2g/          # git clone of mozilla-b2g/B2G

Prep steps: Setting up Mercurial Queues

Follow the steps in the [introduction to Mercurial queues] 6.

Read the [Mercurial queue workflow] 7 documentation.

Setting up the mozilla-inbound repo

This is where we will be working on navigator.id and friends.

First, cd b2g-src; mkdir mi; cd mi

In the mi directory:

hg init .
hg qinit -c    # initializes mercurial queues

Create and edit .hg/hgrc, filling in your LDAP username correctly:

[paths]
default = ssh://<LDAP_username>@mozilla.com@hg.mozilla.org/users/jparsons_mozilla.com/b2g-payments-identity/
mozilla-inbound = https://hg.mozilla.org/integration/mozilla-inbound/

Create and edit .hg/patches/.hg/hgrc

[paths]
default = http://hg.mozilla.org/users/jparsons_mozilla.com/b2g-payments-identity
default-push = ssh://hg.mozilla.org/users/jparsons_mozilla.com/b2g-payments-identity

Now you should be able to pull and build:

hg pull
hg update
make -f client.mk

Whoever is managing the shared user repo (me, in this case), would regularly do:

hg pull mozilla-inbound
hg update
make -f client.mk

You have to regularly blow away the ../build directory. Try that first if make crashes.

While that runs, set up Gaia.

Setting up gaia

cd b2g-src

Update with a git pull.

We need to create a default profile that will toggle the native identity features on.

Create the file custom-prefs.js in the root of the gaia directory. Put these lines in it:

pref("dom.identity.enabled", true);
pref("toolkit.identity.debug", true);

Build with:

DEBUG=1 make

You need network to build, since packages will be downloaded from nightly.

If you want to update the custom prefs at any time, you will need to re-build the profile (but not the whole project) with make profile.

Building for desktop or the device

Desktop builds

Create a .mozconfig file containing:

mk_add_options MOZ_OBJDIR=../build
mk_add_options MOZ_MAKE_FLAGS="-j8 -s"   # adjust -j for your number of cores

ac_add_options --enable-application=b2g
ac_add_options --disable-libjpeg-turbo
 
# This option is required if you want to be able to run Gaia's tests
ac_add_options --enable-tests

# turn on mozTelephony/mozSms interfaces
# Only turn this line on if you actually have a dev phone
# you want to forward to. If you get crashes at startup,
# make sure this line is commented.
#ac_add_options --enable-b2g-ril

If it crashes, try blowing away the build dir and makeing again.

Great! You've already built Gaia, so you can just run b2g like so:

build/dist/bin/b2g -profile gaia/profile --no-remote

You should see the emulator appear in all its glory.

Hotkeys:

  • ESC for "back" button
  • Home for to go to home screen. On the Mac, use Fn + left-arrow

MDN has more about [using the B2G desktop client] 8.

Building for the device

We clone the b2g project, but we will not use the repo sync script in it. Instead, we will make it use our own mozilla-inbound and gaia code.

git clone git clone https://github.com/mozilla-b2g/B2G b2g
cd b2g

Create .userconfig and add these lines (adjusting paths accordingly):

# Configuration for custom device builds;  Desktop builds ignore this.

GAIA_PATH=/path/to/b2g-src/gaia
GECKO_PATH=/path/to/b2g-src/mi

VARIANT=user  # 'user' strangely means 'production'
              # this option omits the test apps from the phone

Follow the [B2G Otoro setup instructions] 2. I can't summarize those steps here, because there are downloads and passwords involved. It's a short document that will take you through:

  • setting up udev (on Linux)
  • downloading the Adreno driver
  • installing busybox on the phone

I honestly can't recall which of those steps I had to follow and which were already simplified somehow. But it was pretty straightforward.

Now configure, build, and flash:

./config.sh otoro   # assuming otoro is the correct target
./build.sh
./flash.sh

Running config.sh will download a ton of stuff the first time.

That's that. Time to go play with the phone.

Testing

We have notes about running xpshell tests in our [native identity warroom notes] 10.

Mochitests will not work in the b2g environment. For example:

# This will fail
TEST_PATH=browser/modules/test make -C ../build mochitest-browser-chrome

To test UI components that require mochi tests, either [push to the try server] 9 or apply your patch in your copy of the pine branch and run your tests there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment