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 actualizar el código 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.sh
:
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 configuraciones regionales
Para crear un sistema que incluya varias configuraciones regionales, haz lo siguiente:
Gaia
- Escoge el archivo de idioma que quieres usar. Ahora mismo hay dos en Gaia
shared/resources/languages-dev.json
yshared/resources/languages-all.json
- Clona las configuraciones regionales que necesitas desde https://hg.mozilla.org/gaia-l10n a un directorio; nosotros usamos
gaia-l10n/
. Tendrás que clonar un repositorio para cada uno de las configuraciones regionales incluidas en el archivo de idiomas. - En tu sistema, configura
LOCALE_BASEDIR
como la ruta absoluta al directorio que creaste en el paso 2. ConfiguraLOCALES_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
- Escoge el archivo de idioma que quieres usar. En Gecko, ahora mismo utilizamos b2g/locales/all-locales
- Clona las configuraciones regionales que necesitas a un directorio; por ejemplo
gecko-l10n/
.- Para mozilla-central, clona desde https://hg.mozilla.org/l10n-central/
- Para mozilla-aurora, clona desde https://hg.mozilla.org/releases/l10n/mozilla-aurora/
- Para mozilla-beta o mozilla-b2g18, clona desde https://hg.mozilla.org/releases/l10n/mozilla-beta/
- Clona compare-locales.
-
En tu sistema, configura
L10NBASEDIR
como la ruta absoluta al directorio que creaste en el paso 2. ConfiguraMOZ_CHROME_MULTILOCALE
como una lista de las configuraciones regionales que clonaste, separadas con espacios.Añade el directorio
Por ejemplo,compare-locales/scripts
a tuPATH
, ycompare-locales/lib
a tuPYTHONPATH
.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"
Una vez hayas completado estos pasos, puedes ejecutar build.sh .
Al parecer, también es posible usar .userconfig.
Es posible que estas instrucciones cambien a medida de que avanza el proyecto.
Errores conocidos
-
KeyedVector.h:193:31: error: indexOfKey was not declared in this scope
Este error aparece cuando tu versión de gcc es demasiado reciente. Instala una versión 4.6.x de gcc/g++/g++-multilib.
Visita Prerrequisitos para compilar Firefox OS para más información.
Aviso de la comunidad: Es posible utilizar gcc 4.7.x si modificas ligeramente el código de B2G (gcc te proporcionará instrucciones), pero no te podemos ayudar, ni a modificar el código ni con los errores que te puedas encontrar.
-
arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)
Si ves este mensaje, lo más probable es que no tengas suficiente memoria libre. Asegúrate de tener suficiente memoria libre antes de ejecutar
./build.sh
. Normalmente, 4GB de ram son suficientes para compilar sin problemas.-
Si encuentras errores mientras el compilador está haciendo tests
A veces (especialmente después de actualizar el compilador o el sistema operativo) puedes encontrarte con errores extraños mientras el compilador está haciendo test tras acabar de compilar. Algo como esto:
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
En estos casos, prueba a eliminar el directorio
gaia/xulrunner-sdk
y haz "pull" para bajarte el código de nuevo:rm -r gaia/xulrunner-sdk
Este comando elimina la copia precompilada de XULRunner que el compilador se baja automáticamente. Cuando compiles de nuevo, el compilador obtendrá una nueva copia de XULRunner automáticamente.
Próximos pasos
Tras compilar, los pasos siguientes dependen de si has compilado Boot to Gecko para el emulador o para un teléfono móvil; lee los artículos siguientes para más información:
-