mozilla

Revision 344785 of Compilando Firefox OS

  • Enlace amigable (slug) de la revisión: Mozilla/Firefox_OS/Compilar_Boot_to_Gecko
  • Título de la revisión: Compilar Boot to Gecko
  • Id de la revisión: 344785
  • Creada:
  • Creador: belen
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

{{ B2GMain() }}

Una vez que hayas preparado tu sistema para compilar y hayas realizado la clonación inicial y configurado el código, podrás compilar Boot to Gecko.

Actualizar tu código

Si no es la primera vez que compilas B2G, deberías obtener el código actualizado antes de empezar a compilar. Para hacerlo, debes actualizar tanto las herramientas de B2G como las dependencias, usando los siguientes dos comandos:

git pull
./repo sync

Puedes actualizar partes específicas del repositorio aclarando su nombre:

./repo sync gaia

El comando repo tiene otras opciones disponibles que pueden ser interesantes; repo help te dará mucha información.

Compilar

Nota: Antes de compilar, conviene que prepares un archivo .userconfig para personalizar la compilación. Mira Personalizar el archivo .userconfig para aprender cómo hacerlo.

Para compilar Boot to Gecko, debes usar simplemente la herramienta build.shl:

cd B2G
./build.sh

Es hora de otra pausa para un café, o posiblemente una siesta (especialmente si es tu primera compilación). Así como en el paso de configuración de la página anterior, si usas un directorio de archivos de sistema de Android previamente extraídos, deberás establecer ANDROIDFS_DIR antes de ejecutar build.sh.

Compilar sólo ciertos módulos

Si sólo quieres compilar un módulo en particular, por ejemplo Gecko, puedes hacerlo incluyendo el nombre:

./build.sh gecko

Si sólo quieres actualizar una de las aplicaciones, puedes hacerlo compilando el módulo gaia y usando la variable de entorno BUILD_APP_NAME:

BUILD_APP_NAME=calendar ./build.sh gaia

Para ver una lista de los módulos que puedes compilar, haz:

./build.sh modules

Especificar cuántos núcleos de procesador usar

Por defecto, el compilador de B2G utiliza el número de procesadores que existan en tu ordenador, y establece dos como el número de tareas a ejecutar en paralelo. Puedes cambiar estos números especificando el parámetro -j cuando ejecutes build.sh. Esto es útil si estás usando el ordenador para otras cosas mientras compilas, y necesitas reducir el uso de CPU. También viene bien cuando tienes problemas con la compilación, ya que ejecutar tareas de una en una facilita la lectura de mensajes y registros.

Por ejemplo, para compilar ejecutando 2 tareas en paralelo, usa:

./build.sh -j2

El uso más común de esta opción es configurar la compilación para no ejecutar tareas en paralelo, lo cual facilita la lectura de mensajes y la resolución de errores. Para ello, usa:

./build.sh -j1

Construir para múltiples locales

Para crear un sistema que incluya varios locales, haz lo siguiente:

Gaia

  1. Escoge el archivo de idioma que quieres a usar. Ahora mismo hay dos en Gaia shared/resources/languages-dev.json y shared/resources/languages-all.json
  2. Clona los locales desde http://hg.mozilla.org/gaia-l10n a un directorio; nosotros usamos gaia-l10n/ . Tendrás que clonar un repositorio para cada uno de los locales incluidos en el archivo de idiomas.
  3. En tu systema, configura LOCALE_BASEDIR como la ruta absoluta al directorio que creaste en el paso 2. Configura LOCALES_FILE como la ruta absoluta al archivo que escogiste en el paso 1.

Por ejemplo:

export LOCALE_BASEDIR=$PWD/gaia-l10n
export LOCALES_FILE=$PWD/gecko/gaia/shared/resources/languages-dev.json

Gecko

  1. Determine which Gecko languages file to use. We're currently using b2g/locales/all-locales as our Gecko languages file.
  2. Clone the appropriate locales into a directory; this can be gecko-l10n/ .
  3. Clone compare-locales.
  4. In your environment, set L10NBASEDIR to the absolute path of the directory in step 2. Set MOZ_CHROME_MULTILOCALE to a string of space-delimited locales from step 1.

    Add the compare-locales/scripts dir to your PATH, and compare-locales/lib to your PYTHONPATH.

    For instance,
    export L10NBASEDIR=$PWD/gecko-l10n
    export MOZ_CHROME_MULTILOCALE="ja zh-TW"
    export PATH="$PATH:$PWD/compare-locales/scripts"
    export PYTHONPATH="$PWD/compare-locales/lib"
    

    Once you have the above set up, you can run build.sh .

    It looks like you can use .userconfig as well.

    These instructions may change as we smooth things out.

    Known errors

    • KeyedVector.h:193:31: error: indexOfKey was not declared in this scope

    This error appears when your gcc version is too recent. Install gcc/g++/g++-multilib 4.6.x versions.

    See set up your build system for more information.

    Community Note: It is possible to use gcc 4.7.x with slight modifications to the B2G code (gcc will guide you) but you won't get any help! Neither with modifying the code nor with bugs you encounter.

    • arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)

    If you see this message, it most likely means that are lacking of free memory. Ensure having enough free memory before running ./build.sh. It should run fine if you system has 4GB of ram.

    • If you get build errors while the build system is running tests

    Sometimes (especially after build tool or operating system updates) you'll get weird errors like this when the build system runs its post-build tests:

    Generating permissions.sqlite...
    test -d profile || mkdir -p profile
    run-js-command  permissions
    WARNING: permission unknown:offline-app
    WARNING: permission unknown:indexedDB-unlimited
    build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
    make[1]: *** [permissions] Error 3
    make: *** [gaia/profile.tar.gz] Error 2

    In this situation, try deleting the gaia/xulrunner-sdk directory and re-pulling the code:

    rm -r gaia/xulrunner-sdk
    

    This deletes the downloaded, precompiled copy of XULRunner that the build system retrieves automatically; on your next build, a new copy of XULRunner will be automatically retrieved.

    Next steps

    After building, your next step depends on whether you built Boot to Gecko for the emulator or for a real mobile device; see the following articles for details:

Fuente de la revisión

<div>
  {{ B2GMain() }}</div>
<p>Una vez que hayas <a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites">preparado tu sistema para compilar </a>y hayas realizado <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build" title="en-US/docs/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build">la clonación inicial y configurado</a> el código, podrás compilar Boot to Gecko.</p>
<h2 id="Actualizar_tu_c.C3.B3digo">Actualizar tu código</h2>
<p>Si no es la primera vez que compilas B2G, deberías obtener el código actualizado antes de empezar a compilar. Para hacerlo, debes actualizar tanto las herramientas de B2G como las dependencias, usando los siguientes dos comandos:</p>
<pre>
git pull
./repo sync
</pre>
<p>Puedes actualizar partes específicas del repositorio aclarando su nombre:</p>
<pre>
./repo sync gaia
</pre>
<p>El comando repo tiene otras opciones disponibles que pueden ser interesantes; <code>repo help</code> te dará mucha información.</p>
<h2 id="Compilar">Compilar</h2>
<div class="note">
  <p><strong>Nota:</strong> Antes de compilar, conviene que prepares un archivo <code>.userconfig</code> para personalizar la compilación. Mira <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file" title="/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file">Personalizar el archivo .userconfig</a> para aprender cómo hacerlo.</p>
</div>
<p>Para compilar Boot to Gecko, debes usar simplemente la herramienta <code>build.sh</code>l:</p>
<pre>
cd B2G
./build.sh
</pre>
<p>Es hora de otra pausa para un café, o posiblemente una siesta (especialmente si es tu primera compilación). Así como en el paso de configuración de la página anterior, si usas un directorio de archivos de sistema de Android previamente extraídos, deberás establecer ANDROIDFS_DIR antes de ejecutar build.sh.</p>
<h3 id="Compilar_s.C3.B3lo_ciertos_m.C3.B3dulos">Compilar sólo ciertos módulos</h3>
<p>Si sólo quieres compilar un módulo en particular, por ejemplo Gecko, puedes hacerlo incluyendo el nombre:</p>
<pre>
./build.sh gecko
</pre>
<p>Si sólo quieres actualizar una de las aplicaciones, puedes hacerlo compilando el módulo <code>gaia</code> y usando la variable de entorno <code>BUILD_APP_NAME</code>:</p>
<pre>
BUILD_APP_NAME=calendar ./build.sh gaia</pre>
<p>Para ver una lista de los módulos que puedes compilar, haz:</p>
<pre>
./build.sh modules
</pre>
<h3 id="Especificar_cu.C3.A1ntos_n.C3.BAcleos_de_procesador_usar">Especificar cuántos núcleos de procesador usar</h3>
<p>Por defecto, el compilador de B2G utiliza el número de procesadores que existan en tu ordenador, y establece dos como el número de tareas a ejecutar en paralelo. Puedes cambiar estos números especificando el parámetro <code>-j</code> cuando ejecutes <code>build.sh</code>. Esto es útil si estás usando el ordenador para otras cosas mientras compilas, y necesitas reducir el uso de CPU. También viene bien cuando tienes problemas con la compilación, ya que ejecutar tareas de una en una facilita la lectura de mensajes y registros.</p>
<p>Por ejemplo, para compilar ejecutando 2 tareas en paralelo, usa:</p>
<pre>
./build.sh -j2
</pre>
<p>El uso más común de esta opción es configurar la compilación para no ejecutar tareas en paralelo, lo cual facilita la lectura de mensajes y la resolución de errores. Para ello, usa:</p>
<pre>
./build.sh -j1
</pre>
<h3 id="Construir_para_varios_idiomas_(.22multilocale.22)">Construir para múltiples locales</h3>
<p>Para crear un sistema que incluya varios locales, haz lo siguiente:</p>
<h4 id="Gaia">Gaia</h4>
<ol>
  <li>Escoge el archivo de idioma que quieres a usar. Ahora mismo hay dos en Gaia <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-dev.json"><code>shared/resources/languages-dev.json</code></a> y <a href="http://hg.mozilla.org/integration/gaia-nightly/file/e2eed5263e77/shared/resources/languages-all.json"><code>shared/resources/languages-all.json</code></a></li>
  <li>Clona los locales desde <a href="http://hg.mozilla.org/gaia-l10n">http://hg.mozilla.org/gaia-l10n</a> a un directorio; nosotros usamos <code>gaia-l10n/</code> . Tendrás que clonar un repositorio para cada uno de los locales incluidos en el archivo de idiomas.</li>
  <li>En tu systema, configura <code>LOCALE_BASEDIR</code> como la ruta absoluta al directorio que creaste en el paso 2. Configura <code>LOCALES_FILE</code> como la ruta absoluta al archivo que escogiste en el paso 1.</li>
</ol>
<p>Por ejemplo:</p>
<pre>
export LOCALE_BASEDIR=$PWD/gaia-l10n
export LOCALES_FILE=$PWD/gecko/gaia/shared/resources/languages-dev.json
</pre>
<h4 id="Gecko">Gecko</h4>
<ol>
  <li>Determine which Gecko languages file to use. We're currently using <a href="http://hg.mozilla.org/releases/mozilla-b2g18/file/default/b2g/locales/all-locales">b2g/locales/all-locales</a> as our Gecko languages file.</li>
  <li>Clone the appropriate locales into a directory; this can be <code>gecko-l10n/</code> .
    <ul>
      <li>For mozilla-central, use <a href="http://hg.mozilla.org/l10n-central/">http://hg.mozilla.org/l10n-central/</a></li>
      <li>For mozilla-aurora, use <a href="http://hg.mozilla.org/releases/l10n/mozilla-aurora/">http://hg.mozilla.org/releases/l10n/mozilla-aurora/</a></li>
      <li>For mozilla-beta or mozilla-b2g18, use <a href="http://hg.mozilla.org/releases/l10n/mozilla-beta/">http://hg.mozilla.org/releases/l10n/mozilla-beta/</a></li>
    </ul>
  </li>
  <li>Clone <a href="http://hg.mozilla.org/build/compare-locales">compare-locales</a>.</li>
  <li>
    <p>In your environment, set <code>L10NBASEDIR</code> to the absolute path of the directory in step 2. Set <code>MOZ_CHROME_MULTILOCALE</code> to a string of space-delimited locales from step 1.</p>
    <p>Add the <code>compare-locales/scripts</code> dir to your <code>PATH</code>, and <code>compare-locales/lib</code> to your <code>PYTHONPATH</code>.</p>
    For instance,
    <pre>
export L10NBASEDIR=$PWD/gecko-l10n
export MOZ_CHROME_MULTILOCALE="ja zh-TW"
export PATH="$PATH:$PWD/compare-locales/scripts"
export PYTHONPATH="$PWD/compare-locales/lib"
</pre>
    <p>Once you have the above set up, you can run build.sh .</p>
    <p>It looks like you can <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818560#c9/">use .userconfig</a> as well.</p>
    <p>These instructions may change as we smooth things out.</p>
    <h2 id="Known_errors">Known errors</h2>
    <ul>
      <li>
        <h3 id="KeyedVector.h.3A193.3A31.3A_error.3A_indexOfKey_was_not_declared_in_this_scope">KeyedVector.h:193:31: error: indexOfKey was not declared in this scope</h3>
      </li>
    </ul>
    <p>This error appears when your gcc version is too recent. Install gcc/g++/g++-multilib 4.6.x versions.</p>
    <p>See <a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites">set up your build system</a> for more information.</p>
    <div class="note">
      <p><strong>Community Note:</strong> It is possible to use gcc 4.7.x with slight modifications to the B2G code (gcc will guide you) but you won't get any help! Neither with modifying the code nor with bugs you encounter.</p>
    </div>
    <ul>
      <li>
        <h3 id="arm-linux-androideabi-g.2B.2B.3A_Internal_error.3A_Killed_(program_cc1plus)">arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)</h3>
      </li>
    </ul>
    <p>If you see this message, it most likely means that are lacking of free memory. Ensure having enough free memory before running <code>./build.sh</code>. It should run fine if you system has 4GB of ram.</p>
    <ul>
      <li>
        <h3 id="If_you_get_build_errors_while_the_build_system_is_running_tests">If you get build errors while the build system is running tests</h3>
      </li>
    </ul>
    <p>Sometimes (especially after build tool or operating system updates) you'll get weird errors like this when the build system runs its post-build tests:</p>
    <pre>
Generating permissions.sqlite...
test -d profile || mkdir -p profile
run-js-command  permissions
WARNING: permission unknown:offline-app
WARNING: permission unknown:indexedDB-unlimited
build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
make[1]: *** [permissions] Error 3
make: *** [gaia/profile.tar.gz] Error 2</pre>
    <p>In this situation, try deleting the <code>gaia/xulrunner-sdk</code> directory and re-pulling the code:</p>
    <pre>
rm -r gaia/xulrunner-sdk
</pre>
    <p>This deletes the downloaded, precompiled copy of <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> that the build system retrieves automatically; on your next build, a new copy of XULRunner will be automatically retrieved.</p>
    <h2 id="Next_steps">Next steps</h2>
    <p>After building, your next step depends on whether you built Boot to Gecko for the emulator or for a real mobile device; see the following articles for details:</p>
    <ul>
      <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators">Using the B2G emulators</a></li>
      <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">Using the B2G desktop client</a></li>
      <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Installing_Boot_to_Gecko_on_a_mobile_device" title="en-US/docs/Mozilla/Boot_to_Gecko/Installing_Boot_to_Gecko_on_a_mobile_device">Installing Boot to Gecko on a mobile device</a></li>
      <li><a href="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard" title="en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard">Installing Boot to Gecko on a pandaboard</a></li>
    </ul>
  </li>
</ol>
Revertir a esta revisión