mozilla

Revision 315059 of Customization with the .userconfig file

  • Revision slug: Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file
  • Revision title: Customization with the .userconfig file
  • Revision id: 315059
  • Created:
  • Creator: Sheppy
  • Is current revision? No
  • Comment fixing errors I introduced

Revision Content

You can customize certain aspects of the build process by putting some bash code into your .userconfig file. The .userconfig file isn't checked into source code control, so your changes won't be overwritten when you update your source tree. It needs to be created in the root of your B2G tree; that is, in the same directory as flash.sh, build.sh, and so forth.

The .userconfig file, if it exists, is sourced by the load-config.sh script, which is in turn sourced by these scripts: flash.sh, build.sh (through setup.sh), run-gdb.sh, and run-emulator.sh. The run-X.sh scripts use it to determine where Gecko is for your build.

Changing the Gecko source tree

By default, the build uses the gecko tree, which is cloned from a tree in github. Some people like to use mozilla-inbound, or mozilla-central. To do this create your clone whereever you like and add a line to your .userconfig which sets GECKO_PATH, for example:

GECKO_PATH=/home/work/B2G/mozilla-inbound

Create a debug build

To build a debug build, put the following line in your .userconfig file:

B2G_DEBUG=1

Disable the optimizer

To disable the optimizer (which may create builds that are easier to debug), add the following to your .userconfig file then rebuild:

B2G_NOOPT=1

Specify a custom Gecko object tree location

There may be times that you want or need to build Boot to Gecko to use a different version of Gecko than the one that's used by default (as specified in the manifest). You can do so by editing the file .userconfig. For example, if you want to use Gecko from mozilla-central:

GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk

Note: if building against a custom Gecko in Mac OS X, the mozilla-central directory must be in a case sensitive file system.

Keeping both debug and non-debug objects

You can use your .userconfig file to switch back and forth between debug and release builds without having to rebuild everything each time!

GECKO_PATH=/home/work/B2G-profiler/mozilla-inbound
echo "GECKO_PATH = ${GECKO_PATH}"

B2G_DEBUG=1
echo "B2G_DEBUG = ${B2G_DEBUG}"

ECKO_OBJDIR=$PWD/objdir-gecko
if [ "${B2G_DEBUG}" != "0" ]; then
  GECKO_OBJDIR=${GECKO_OBJDIR}-debug
fi
if [ "${GECKO_PATH/*mozilla-inbound*/mozilla-inbound}" = "mozilla-inbound" ]; then
  GECKO_OBJDIR=${GECKO_OBJDIR}-m-i
fi
echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"

The echo commands help remind you what your current settings are. To switch between debug and release builds, simply change the value of B2G_DEBUG on line 4.

Revision Source

<p>You can customize certain aspects of the build process by putting some bash code into your <code>.userconfig</code> file. The <code>.userconfig</code> file isn't checked into source code control, so your changes won't be overwritten when you update your source tree. It needs to be created in the root of your B2G tree; that is, in the same directory as <code>flash.sh</code>, <code>build.sh</code>, and so forth.</p>
<p>The <code>.userconfig</code> file, if it exists, is sourced by the <code>load-config.sh</code> script, which is in turn sourced by these scripts: <code>flash.sh</code>, <code>build.sh</code> (through <code>setup.sh</code>), <code>run-gdb.sh</code>, and <code>run-emulator.sh</code>. The <code>run-<em>X</em>.sh</code> scripts use it to determine where Gecko is for your build.</p>
<h2 id="Changing_the_Gecko_source_tree">Changing the Gecko source tree</h2>
<p>By default, the build uses the gecko tree, which is cloned from a tree in github. Some people like to use <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-inbound_%28used_for_landing_your_patches%29" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-inbound_%28used_for_landing_your_patches%29">mozilla-inbound</a>, or <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-central_%28main_development_tree%29" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial#mozilla-central_%28main_development_tree%29">mozilla-central</a>. To do this create your clone whereever you like and add a line to your <code>.userconfig</code> which sets <code>GECKO_PATH</code>, for example:</p>
<pre>
GECKO_PATH=/home/work/B2G/mozilla-inbound
</pre>
<h2 id="Create_a_debug_build">Create a debug build</h2>
<p>To build a debug build, put the following line in your <code>.userconfig</code> file:</p>
<pre>
B2G_DEBUG=1</pre>
<h2 id="Disable_the_optimizer">Disable the optimizer</h2>
<p>To disable the optimizer (which may create builds that are easier to debug), add the following to your <code>.userconfig</code> file then rebuild:</p>
<pre>
B2G_NOOPT=1</pre>
<h2 id="Specify_a_custom_Gecko_object_tree_location">Specify a custom Gecko object tree location</h2>
<p>There may be times that you want or need to build Boot to Gecko to use a different version of Gecko than the one that's used by default (as specified in the manifest). You can do so by editing the file <code>.userconfig</code>. For example, if you want to use Gecko from mozilla-central:</p>
<pre>
GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk
</pre>
<div class="note">
  <p><strong>Note</strong>: if building against a custom Gecko in Mac OS X, the mozilla-central directory must be in a case sensitive file system.</p>
</div>
<h2 id="Keeping_both_debug_and_non-debug_objects">Keeping both debug and non-debug objects</h2>
<p>You can use your <code>.userconfig</code> file to switch back and forth between debug and release builds without having to rebuild everything each time!</p>
<dl>
</dl>
<pre class="brush:bash;">
GECKO_PATH=/home/work/B2G-profiler/mozilla-inbound
echo "GECKO_PATH = ${GECKO_PATH}"

B2G_DEBUG=1
echo "B2G_DEBUG = ${B2G_DEBUG}"

ECKO_OBJDIR=$PWD/objdir-gecko
if [ "${B2G_DEBUG}" != "0" ]; then
&nbsp; GECKO_OBJDIR=${GECKO_OBJDIR}-debug
fi
if [ "${GECKO_PATH/*mozilla-inbound*/mozilla-inbound}" = "mozilla-inbound" ]; then
&nbsp; GECKO_OBJDIR=${GECKO_OBJDIR}-m-i
fi
echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"</pre>
<p>The <code>echo</code> commands help remind you what your current settings are. To switch between debug and release builds, simply change the value of <code>B2G_DEBUG</code> on line 4.</p>
Revert to this revision