Prerrequisitos para compilar Firefox OS

  • Enlace amigable (slug) de la revisión: Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites
  • Título de la revisión: Prerrequisitos para construir Firefox OS
  • Id de la revisión: 344775
  • Creada:
  • Creador: deimidis
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

Puedes construir Firefox OS, pero antes has de obtener el código fuente. Necesitarás un sistema de construcción apropiadamente configurado. Puedes construirlo actualmente en una distribución Linux de 64 bits.

Necesitas un teléfono móvil compatible o un emulador

Esto es importante. Aunque hay varios teléfonos compatibles, algunos de ellos tienen variantes y es posible que sólo algunas de esas variantes sean compatibles. Además, algunos teléfonos son más compatibles que otros. Ahora mismo, puedes utilizar Firefox OS / B2G en los siguientes teléfonos y aparatos:

Categoría 1

Aparatos de Categoría 1 son aquellos que recomendamos para tareas de desarrollo, porque son los que primero reciben nueva funcionalidad y soluciones a problemas y errores. Los aparatos de Categoría 1 son:

Unagi
Unagi es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Unagi.
Otoro
Otoro es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Otoro.
Pandaboard
Pandaboard es una mini placa base que se usa en el desarrollo de plataformas móviles.  La placa está basada en la arquitectura OMAP 4.
Emulator (ARM and x86)
Hay dos emuladores: uno emula código ARM y el otro ejecuta en código x86.
Ordenador
También puedes construir una versión de Firefox OS para ordenador que ejecuta Gecko en una aplicación XULRunner y utiliza la experiencia de usuario que proporciona Gaia

La versión para ordenador y los emuladores no requieren teléfono.

Categoría 2

Los teléfonos de Categoría 2 en general funcionan, y muchos desarrolladores, especialmente desarrolladores de aplicaciones, los utilizan; pero tienden a recibir cambios y novedades más tarde.

Samsung Nexus S
Los modelos de Nexus S que sabemos funcionan son el GT-I9020A y el GT-I9023. Es posible que otros modelos también funcionen.
Samsung Nexus S 4G
El modelo SPH-D720 es compatible como Categoría 2.

Categoría 3

Se puede construir Firefox OS para estos teléfonos, pero los desarrolladores del equipo de Firefox OS no trabajan en ellos regularmente, así que su funcionamiento y funcionalidad puede que sean significativamente peores que los de Categorías 1 y 2.

Samsung Galaxy S2
El único modelo que funciona es el i9100. Ninguna de las otras variantes es oficialmente compatible. (Es posible que el i9100P también funcione, ya que la única diferencia es la adición del chip NFC).
Samsung Galaxy Nexus
En estos momentos no sabemos de ninguna variante que no sea compatible.
Importante: Sólo son compatibles los teléfonos que utilizan como mínimo Android 4 (alias Ice Cream Sandwich). Si tu teléfono se menciona en esta página pero usa una versión de Android más antigua, actualízalo primero.

Requisitos para Linux

Para construir en Linux, necesitas:

  • Una instalación de GNU/Linux 64 bits (como distribución recomendamos Ubuntu 12.04).
  • Un mínimo de 4 GB de ram / espacio en la partición de intercambio.
  • Un mínimo de 20 GB de espacio libre en disco duro.

Estos requisitos son más que el mínimo indispensable, pero los recomendamos porque la construcción puede fallar debido a falta de recursos.

Puedes utilizar otras distribuciones, pero recomendamos Ubuntu 12.04 porque es el sistema que más gente utiliza sin dar problemas. Distribuciones que quizá no funcionen: distribuciones de 32 bits y distribuciones recientes (Ubuntu 12.10, Fedora 17/18, Arch Linux debido a gcc 4.7).

También necesitas instalar las siguiente utilidades:

  • autoconf 2.13
  • bison
  • bzip2
  • ccache
  • curl
  • flex
  • gawk
  • git
  • gcc / g++ / g++-multilib (4.6.3 or older)
  • make
  • OpenGL headers
  • X11 headers
  • 32-bit ncurses
  • 32-bit zlib

Ejemplos de instalación de 64 bits:

Ubuntu 12.04 / Linux Mint 13 / Debian 6

$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make

Cuando construyas en Ubuntu 64 bits, es posible que necesites crear enlaces simbólicos (symlinks) a las versiones de 32 bits de libX11.so y libGL.so:

$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Ubuntu 12.10

$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make

Además del paso ya explicado para solucionar el problema con las versiones 32 bits de libX11.so y libGL.so, también necesitas especificar GCC 4.6 como el compilador del host por defecto antes de empezar a construir. Una vez que te hayas descargado el código, lee nuestras instrucciones al respecto.

Fedora 16:

$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686

Arch Linux (distribución aún incompatible):

$ sudo pacman -S --needed alsa-lib autoconf2.13 bison ccache curl firefox flex gcc-multilib git gperf libnotify libxt libx11 mesa multilib-devel wireless_tools yasm lib32-mesa lib32-ncurses lib32-readline lib32-zlib

Por defecto, Arch Linux utiliza Python3. Necesitas forzar el uso del antiguo python2:

$ cd /usr/bin

$ sudo ln -fs python2 python

Requisitos para Mac OS X

Para construir Firefox OS con Mac OS X, necesitas instalar Xcode, que está disponible en el Mac App Store.

Instalar las Utilidades de Línea de Comandos (XCode 4.3.1 y versiones más recientes)

Xcode 4.3.1 (OS X 10.7 "Lion") y versiones más recientes como 4.4.1+ (Mac OS X10.8 "Mountain Lion") no incluyen necesariamente las Utilidades de Línea de Comandos. Cuando instales Xcode, abre las Preferencias, luego el Panel de Descargas, e instala las Utilidades de Línea de Comandos. Además, asegúrate de que tienes como mínimo 20 GB de espacio libre en el disco duro.

Atención: El emulador de Firefox OS necesita un procesador Core 2 Duo o más reciente, es decir, un sistema compatible con Mac OS X 10.7 "Lion". No tienes por qué utilizar Lion, pero tu sistema debe ser compatible con Lion. Esto es sólo para el emulador: puedes construir Firefox OS en Macs más antiguos.

Cómo iniciar Firefox OS en Mac

Abre un terminal y ejecuta el comando siguiente:

curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash

Este comando obtiene y ejecuta un programa de inicio que se asegura de que tienes todo lo necesario para construir el emulador. También solicitará permiso para instalar cualquier cosa que falte. El programa buscará e instalará lo siguiente:

  • git
  • gpg
  • ccache
  • yasm
  • autoconf-213
  • gcc-4.6
  • homebrew

Xcode

Si ya has actualizado Xcode a la versión 4.4+ pero recibes un mensaje diciendo que Xcode necesita actualización, revisa la ruta de Xcode con este comando:

xcode-select -print-path
Si la ruta todavía apunta a /Developer puedes actualizarla haciendo:
sudo xcode-select -switch /Applications/Xcode.app
Asegúrate también de que el SDK de Mac OS X 10.6 existe en:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

Si no existe, tendrás que extraerlo y copiarlo del archivo DMG de Xcode 4.3, que está disponible en el Portal para desarrolladores de Apple. Puedes usar una utilidad que se llama Pacifist para extraer el SDK 10.6. Asegúrate de crear un enlace simbólico (symlink) entre el SDK y el directorio /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

Mountain Lion

Si construyendo en OS X 10.8 "Mountain Lion" (Xcode 4.4.1 o más reciente) te encuentras un error como éste:

external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)
Edita el archivo: B2G/external/qemu/makefile.android y añade en la línea 78:
MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288   #/* B2G_fix: not finding M_PI constant */
Si usando Mountain Lion, y durante la instalación de las dependencias vía homebrew, te encuentras un error como éste:
clang: error: unable to execute command: Segmentation fault: 11

... prueba a reinstalar las dependencias manualmente añadiendo la opción --use-gcc como se muestra en el ejemplo:

brew install mpfr --use-gcc

Samsung Galaxy S2

Si tu intención es construir para el Samsung Galaxy S2, también necesitarás instalar heimdall. Para más información, visita {{ anch("Instalación de heimdall") }}. ¡El programa de inicio no ejecuta este paso!

Atención: Si has instalado la utilidad Samsung Kies, que se utiliza para administrar los contenidos de muchos teléfonos Samsung, tienes que eliminarla antes de instalar Firefox OS en el teléfono. En Windows, puedes utilizar el procedimiento estándar para remover aplicaciones; en Mac, la imagen de Kies incluye una utilidad para desinstalar Kies completamente. La instalación de Firefox OS fallará si tienes Kies instalado. Si se te olvida eliminar Kies, el sistema de construcción lo detectará y te recordará que debes desinstalarlo. Ten en cuenta que la utilidad de desinstalación no elimina correctamente el directorio ~/Library/Application Support/.FUS, y deja una referencia a cierta utilidad en ese directorio en la lista de programas a ejecutar en inicio. Necesitas eleminar el directorio y la refencia manualmente.
Atención: Mac OS X utiliza un sistema de archivos que ignora las mayúsculas, lo que no te permitirá construir Firefox OS en el futuro (NOTA DEL EDITOR: yo nunca he tenido problemas con esto).  Te recomendamos que generes una imagen de disco "sparse" sensible a las mayúsculas y que trabajes desde ese directorio. Para construir una imagen de disco "sparse" sensible a las mayúsculas ejecuta:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.dmg

Monta la imagen ejecutando:

open ~/firefoxos.dmg

Navega al directorio de la imagen montada con:

cd /Volumes/untitled/

Cómo arreglar la dependencia de libmpc si no funciona

gcc 4.6 fue creado con libmpc 0.9; si utilizas homebrew para actualizar paquetes, libmpc se actualiza a la versión 1.0, pero homebrew no reconstruye gcc 4.6 tras el cambio de versión. Por ello debes crear un enlace simbólico (symlink) para asegurarte de que todo funciona correctamente. Creas el enlace así:

cd /usr/local/lib/
ln -s libmpc.3.dylib libmpc.2.dylib

Opcional: Instalación de HAX

Intel proporciona un "driver" especial que permite al emulador x86 de B2G ejecutar código nativamente en el Mac en lugar de emularlo. Si quieres utilizar esta opción, puedes bajártela e instalarla. No es obligatorio, pero puede mejorar la estabilidad y velocidad de la emulación.

Instalación de adb

El proceso de construcción necesita obtener bloques binarios de la instalación de Android en el teléfono antes de construir B2G (a menos, claro, que estés construyendo el emulador). Para ello necesitas adb, el "Android Debug Bridge".

Para obtenerlo, debes instalar el paquete básico del Android SDK (Android SDK starter package) para tu versión de Android. Luego, ejecuta el gestor de paquetes haciendo $SDK_HOME/tools/android, y usa la interfaz gráfica para instalar las herramientas de sistema del Android SDK (Android SDK Platform-tools).

adb será instalado en $SDK_HOME/platform_tools. Asegúrate de añadir este directorio a tu PATH. Para ello, añade esta línea:

PATH=$SDK_HOME/platform_tools:$PATH

a tu ~/.bashrc o equivalente, sustituyendo $SDK_HOME con el directorio del Android SDK. También es recomendable ejecutar:

adb pull /system <backup target dir>/system

para hacer una copia de seguridad de la partición de Android en tu teléfono. Así tendrás una copia de todos los bloques binarios para Android en caso de que quieras eliminar los archivos de B2G. Dependiendo del teléfono, también necesitas hacer copia de seguridad de los directorios /data y/o /vendor:

adb pull /data <backup target dir>/data
adb pull /vendor <backup target dir>/vendor

Instalación de heimdall

Heimdall es una utilidad para hacer instalaciones en el Samsung Galaxy S2. El instalador de B2G la utiliza para reemplazar los contenidos del teléfono con Firefox OS, y para instalar versiones nuevas de B2G y Gaia. Necesitas Heimdall para instalar Firefox OS sólo en el Galaxy S2; no es necesaria para ningún otro teléfono. Para otros móviles, se construye y utiliza la utilidad fastboot.

Atención: Recuerda que heimdall se necesita sólo para instalar Firefox OS en el Samsung Galaxy S2.

Hay dos maneras de instalar heimdall:

  • Bajándote el código de GitHub y construyéndolo tú.
  • Utilizando un gestor de paquetes para la instalación:
    • En Linux: sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
    • Para Mac, te puedes bajar una imagen.

Configuración de ccache

El tamaño estándar de ccache es 1GB; la construcción de B2G enseguida agota esta capacidad. Puedes cambiar el tamaño de tu cache con este comando:

$ ccache --max-size 2GB

Configuración de la regla udev en tu móvil

Llegado a este punto, puedes obtener el código de identificación del fabricante del USB ejecutando lsusb, pero por lo general es Google (código 18d1) o Samsung (código 04e8). Por tanto, añadir la línea siguiente:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

al archivo /etc/udev/rules.d/51-android.rules debería funcionar.

Guarda los cambios, cierra el archivo, y hazlo legible:

$ sudo chmod a+r /etc/udev/rules.d/51-android.rules

Configurar el teléfono

Antes de conectar tu teléfono al puerto USB, pon el USB en modo desarrollo, lo que te permitirá acceder al teléfono para depurar e instalar. Para ello, abre la aplicación de Ajustes, accede a la sección de Aplicaciones > Desarrollo, y selecciona la opción "Depuración USB".

Siguiente paso

Llegado a este punto, ¡ya estás listo para bajarte el código de Firefox OS!

Fuente de la revisión

<p>Puedes construir Firefox OS, pero antes has de obtener el código fuente. Necesitarás un sistema de construcción apropiadamente configurado. Puedes construirlo actualmente en una distribución Linux de 64 bits.</p>
<h2 id="Necesitas_un_tel.C3.A9fono_m.C3.B3vil_compatible_o_un_emulador">Necesitas un teléfono móvil compatible o un emulador</h2>
<p>Esto es importante. Aunque hay varios teléfonos compatibles, algunos de ellos tienen variantes y es posible que sólo algunas de esas variantes sean compatibles. Además, algunos teléfonos son más compatibles que otros. Ahora mismo, puedes utilizar Firefox OS / B2G en los siguientes teléfonos y aparatos:</p>
<h3 id="Categor.C3.ADa_1">Categoría 1</h3>
<p>Aparatos de Categoría 1 son aquellos que recomendamos para tareas de desarrollo, porque son los que primero reciben nueva funcionalidad y soluciones a problemas y errores. Los aparatos de Categoría 1 son:</p>
<dl>
  <dt>
    Unagi</dt>
  <dd>
    Unagi es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Unagi.</dd>
  <dt>
    Otoro</dt>
  <dd>
    Otoro es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Otoro.</dd>
  <dt>
    <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard" title="/en-US/docs/Mozilla/Boot_to_Gecko/Pandaboard">Pandaboard</a></dt>
  <dd>
    Pandaboard es una mini placa base que se usa en el desarrollo de plataformas móviles.&nbsp; La placa está basada en la arquitectura OMAP 4.</dd>
  <dt>
    <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">Emulator (ARM and x86)</a></dt>
  <dd>
    Hay dos emuladores: uno emula código ARM y el otro ejecuta en código x86.</dd>
  <dt>
    <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">Ordenador</a></dt>
  <dd>
    También puedes construir una versión de Firefox OS para ordenador que ejecuta <a href="/en-US/docs/Gecko" title="/en-US/docs/Gecko">Gecko</a> en una aplicación <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> y utiliza la experiencia de usuario que proporciona <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a></dd>
</dl>
<p><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">La versión para ordenador</a> y los <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">emuladores</a> no requieren teléfono.</p>
<h3 id="Categor.C3.ADa_2">Categoría 2</h3>
<p>Los teléfonos de Categoría 2 en general funcionan, y muchos desarrolladores, especialmente desarrolladores de aplicaciones, los utilizan; pero tienden a recibir cambios y novedades más tarde.</p>
<dl>
  <dt>
    <a class="link-https" href="https://en.wikipedia.org/wiki/Nexus_S#Variants" title="https://en.wikipedia.org/wiki/Nexus_S#Variants">Samsung Nexus S</a></dt>
  <dd>
    Los modelos de Nexus S que sabemos funcionan son el GT-I9020A y el GT-I9023. Es posible que otros modelos también funcionen.</dd>
  <dt>
    Samsung Nexus S 4G</dt>
  <dd>
    El modelo SPH-D720 es compatible como Categoría 2.</dd>
</dl>
<h3 id="Categor.C3.ADa_3">Categoría 3</h3>
<p>Se puede construir Firefox OS para estos teléfonos, pero los desarrolladores del equipo de Firefox OS no trabajan en ellos regularmente, así que su funcionamiento y funcionalidad puede que sean significativamente peores que los de Categorías 1 y 2.</p>
<dl>
  <dt>
    Samsung Galaxy S2</dt>
  <dd>
    El único modelo que funciona es el i9100. Ninguna de las otras variantes es oficialmente compatible. (Es posible que el i9100P también funcione, ya que la única diferencia es la adición del chip NFC).</dd>
  <dt>
    Samsung Galaxy Nexus</dt>
  <dd>
    En estos momentos no sabemos de ninguna variante que no sea compatible.</dd>
</dl>
<div class="warning">
  <strong>Importante</strong>: Sólo son compatibles los teléfonos que utilizan como mínimo <strong>Android 4</strong> (alias <strong>Ice Cream Sandwich</strong>). Si tu teléfono se menciona en esta página pero usa una versión de Android más antigua, actualízalo primero.</div>
<h2 id="Requisitos_para_Linux">Requisitos para Linux</h2>
<p>Para construir en Linux, necesitas:</p>
<ul>
  <li>Una instalación de <strong>GNU/Linux </strong><strong>64 bits </strong> (como distribución recomendamos Ubuntu 12.04).</li>
  <li>Un mínimo de <strong>4 GB</strong> de ram / espacio en la partición de intercambio.</li>
  <li>Un mínimo de <strong>20 GB</strong> de espacio libre en disco duro.</li>
</ul>
<p>Estos requisitos son más que el mínimo indispensable, pero los recomendamos porque la construcción puede fallar debido a falta de recursos.</p>
<p>Puedes utilizar otras distribuciones, pero recomendamos Ubuntu 12.04 porque es el sistema que más gente utiliza sin dar problemas. Distribuciones que quizá no funcionen: <strong>distribuciones de 32 bits</strong> y distribuciones recientes (<strong>Ubuntu 12.10, Fedora 17/18, Arch Linux</strong> debido a <strong>gcc 4.7</strong>).</p>
<p>También necesitas instalar las siguiente utilidades:</p>
<ul>
  <li><strong>autoconf 2.13</strong></li>
  <li><strong>bison</strong></li>
  <li><strong>bzip2</strong></li>
  <li><strong>ccache</strong></li>
  <li><strong>curl</strong></li>
  <li><strong>flex</strong></li>
  <li><strong>gawk</strong></li>
  <li><strong>git</strong></li>
  <li><strong>gcc / g++ / g++-multilib</strong> <strong>(4.6.3 or older)</strong></li>
  <li><strong>make</strong></li>
  <li><strong>OpenGL headers</strong></li>
  <li><strong>X11 headers</strong></li>
  <li><strong>32-bit ncurses</strong></li>
  <li><strong>32-bit zlib</strong></li>
</ul>
<h3 id="Ejemplos_de_instalaci.C3.B3n_de_64_bits.3A"><strong>Ejemplos de instalación de 64 bits:</strong></h3>
<p><strong>Ubuntu 12.04 / Linux Mint 13 / Debian 6</strong></p>
<pre>
$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make</pre>
<p class="note">Cuando construyas en Ubuntu 64 bits, es posible que necesites crear enlaces simbólicos (symlinks) a las versiones de 32 bits de <code>libX11.so</code> y <code>libGL.so</code>:</p>
<pre class="note">
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</pre>
<p><strong>Ubuntu 12.10</strong></p>
<pre>
$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make</pre>
<p class="note">Además del paso ya explicado para solucionar el problema con las versiones 32 bits de <code>libX11.so</code> y <code>libGL.so</code>, también necesitas especificar GCC 4.6 como el compilador del host por defecto antes de empezar a construir. Una vez que te hayas descargado el código, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler" title="en-US/docs/Mozilla/Boot_to_Gecko/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">lee nuestras instrucciones</a> al respecto.</p>
<p><strong>Fedora 16:</strong></p>
<pre class="note">
$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686</pre>
<p><strong>Arch Linux (distribución aún incompatible):</strong></p>
<pre class="note">
$ sudo <span style=""><span style="">pacman -S --needed </span></span><span style=""><span style="">alsa-lib </span></span><span style=""><span style="">autoconf2.13</span></span><span style=""><span style=""> bison</span></span><span style=""><span style=""> ccache</span></span><span style=""><span style=""> </span></span><span style=""><span style="">curl firefox </span></span><span style=""><span style="">flex </span></span><span style=""><span style="">gcc-multilib </span></span><span style=""><span style="">git </span></span><span style=""><span style="">gperf </span></span><span style=""><span style="">libnotify </span></span><span style=""><span style="">libxt </span></span><span style=""><span style="">libx11 mesa multilib-devel </span></span><span style=""><span style="">wireless_tools </span></span><span style=""><span style="">yasm</span></span><span style=""><span style=""> </span></span><span style=""><span style="">lib32-mesa </span></span><span style=""><span style="">lib32-ncurses lib32-readline</span></span><span style=""><span style=""> </span></span><span style=""><span style="">lib32-zlib</span></span></pre>
<p>Por defecto, Arch Linux utiliza Python3. Necesitas forzar el uso del antiguo python2:</p>
<pre>
<span style=""><span style="">$ cd /usr/bin</span></span>

<span style=""><span style="">$ sudo ln -fs python2 python</span></span></pre>
<h2 id="Requisitos_para_Mac_OS_X">Requisitos para Mac OS X</h2>
<p>Para construir Firefox OS con Mac OS X, necesitas <a class="external" href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12" title="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">instalar Xcode</a>, que está disponible en el Mac App Store.</p>
<p><strong>Instalar las Utilidades de Línea de Comandos (XCode 4.3.1 y versiones más recientes)</strong></p>
<p>Xcode 4.3.1 (OS X 10.7 "Lion") y versiones más recientes como 4.4.1+ (Mac OS X10.8 "Mountain Lion") no incluyen necesariamente las Utilidades de Línea de Comandos. Cuando instales Xcode, abre las Preferencias, luego el Panel de Descargas, e instala las Utilidades de Línea de Comandos. Además, asegúrate de que tienes como mínimo 20 GB de espacio libre en el disco duro.</p>
<div class="note">
  <strong>Atención:</strong> El emulador de Firefox OS necesita un procesador Core 2 Duo o más reciente, es decir, un sistema compatible con Mac OS X 10.7 "Lion". No tienes por qué utilizar Lion, pero tu sistema debe ser compatible con Lion. Esto es sólo para el emulador: puedes construir Firefox OS en Macs más antiguos.</div>
<p><font face="Georgia, Times, Times New Roman, serif"><span style="font-size: 20px; line-height: 31px;"><b>Cómo iniciar Firefox OS en Mac</b></span></font></p>
<p>Abre un terminal y ejecuta el comando siguiente:</p>
<pre class="brush: bash">
curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash</pre>
<p>Este comando obtiene y ejecuta un programa de inicio que se asegura de que tienes todo lo necesario para construir el emulador. También solicitará permiso para instalar cualquier cosa que falte. El programa buscará e instalará lo siguiente:</p>
<ul>
  <li><code>git</code></li>
  <li><code>gpg</code></li>
  <li><code>ccache</code></li>
  <li><code>yasm</code></li>
  <li><code>autoconf-213</code></li>
  <li><code>gcc-4.6</code></li>
  <li><code>homebrew</code></li>
</ul>
<div>
  <p>Xcode</p>
  <p>Si ya has actualizado Xcode a la versión 4.4+ pero recibes un mensaje diciendo que Xcode necesita actualización, revisa la ruta de Xcode con este comando:</p>
  <pre>
xcode-select -print-path</pre>
  Si la ruta todavía apunta a <code>/Developer</code> puedes actualizarla haciendo:
  <pre>
sudo xcode-select -switch /Applications/Xcode.app</pre>
  Asegúrate también de que el SDK de Mac OS X 10.6 existe en:
  <pre>
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre>
  <p>Si no existe, tendrás que extraerlo y copiarlo del archivo DMG de Xcode 4.3, que está disponible en el <a class="external" href="https://developer.apple.com/downloads/index.action">Portal para desarrolladores de Apple</a>. Puedes usar una utilidad que se llama Pacifist para extraer el SDK 10.6. Asegúrate de crear un enlace simbólico (symlink) entre el SDK y el directorio <code>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</code></p>
  <h3 id="Mountain_Lion">Mountain Lion</h3>
  <div>
    <p>Si construyendo en OS X 10.8 "Mountain Lion" (Xcode 4.4.1 o más reciente) te encuentras un error como éste:</p>
    <pre style="font-size: 14px; ">
external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)</pre>
    Edita el archivo:&nbsp;<code style="font-size: 14px; ">B2G/external/qemu/makefile.android</code> y añade en la línea 78:<br />
    <pre style="font-size: 14px; ">
MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288&nbsp;&nbsp; #/* B2G_fix: not finding M_PI constant */
</pre>
    <div>
      Si usando Mountain Lion, y durante la instalación de las dependencias vía homebrew, te encuentras un error como éste:</div>
  </div>
</div>
<div>
  <pre>
clang: error: unable to execute command: Segmentation fault: 11</pre>
  <p>... prueba a reinstalar las dependencias manualmente añadiendo la opción --use-gcc como se muestra en el ejemplo:</p>
  <pre>
brew install mpfr --use-gcc</pre>
</div>
<h3 id="Samsung_Galaxy_S2">Samsung Galaxy S2</h3>
<p>Si tu intención es construir para el Samsung Galaxy S2, también necesitarás instalar heimdall. Para más información, visita {{ anch("Instalación de heimdall") }}. ¡El programa de inicio <strong>no</strong> ejecuta este paso!</p>
<div class="note">
  <strong>Atención:</strong> Si has instalado la utilidad <a class="external" href="http://www.samsung.com/us/kies/" title="http://www.samsung.com/us/kies/">Samsung Kies</a>, que se utiliza para administrar los contenidos de muchos teléfonos Samsung, tienes que eliminarla antes de instalar Firefox OS en el teléfono. En Windows, puedes utilizar el procedimiento estándar para remover aplicaciones; en Mac, la imagen de Kies incluye una utilidad para desinstalar Kies completamente. La instalación de Firefox OS <strong>fallará</strong> si tienes Kies instalado. Si se te olvida eliminar Kies, el sistema de construcción lo detectará y te recordará que debes desinstalarlo. Ten en cuenta que la utilidad de desinstalación no elimina correctamente el directorio <code>~/Library/Application Support/.FUS</code>, y deja una referencia a cierta utilidad en ese directorio en la lista de programas a ejecutar en inicio. Necesitas eleminar el directorio y la refencia manualmente.</div>
<div class="note">
  <strong>Atención:</strong> Mac OS X utiliza un sistema de archivos que ignora las mayúsculas, lo que no te permitirá construir Firefox OS en el futuro (<strong>NOTA DEL EDITOR: yo nunca he tenido problemas con esto)</strong>.&nbsp; Te recomendamos que generes una imagen de disco "sparse" sensible a las mayúsculas y que trabajes desde ese directorio. Para construir una imagen de disco "sparse" sensible a las mayúsculas ejecuta:</div>
<pre>
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.dmg</pre>
<p>Monta la imagen ejecutando:</p>
<pre>
open ~/firefoxos.dmg</pre>
<p>Navega al directorio de la imagen montada con:</p>
<pre>
cd /Volumes/untitled/</pre>
<h3 class="note" id="C.C3.B3mo_arreglar_la_dependencia_de_libmpc_si_no_funciona">Cómo arreglar la dependencia de libmpc si no funciona</h3>
<p>gcc 4.6 fue creado con libmpc 0.9; si utilizas homebrew para actualizar paquetes, libmpc se actualiza a la versión 1.0, pero homebrew no reconstruye gcc 4.6 tras el cambio de versión. Por ello debes crear un enlace simbólico (symlink) para asegurarte de que todo funciona correctamente. Creas el enlace así:</p>
<pre>
cd /usr/local/lib/
ln -s libmpc.3.dylib libmpc.2.dylib</pre>
<h3 id="Opcional.3A_Instalaci.C3.B3n_de_HAX">Opcional: Instalación de HAX</h3>
<p>Intel proporciona un "driver" especial que permite al emulador x86 de B2G ejecutar código nativamente en el Mac en lugar de emularlo. Si quieres utilizar esta opción, puedes <a class="external" href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/" title="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">bajártela e instalarla</a>. No es obligatorio, pero puede mejorar la estabilidad y velocidad de la emulación.</p>
<h2 class="note" id="Instalaci.C3.B3n_de_adb">Instalación de adb</h2>
<p>El proceso de construcción necesita obtener bloques binarios de la instalación de Android en el teléfono antes de construir B2G (a menos, claro, que estés construyendo el emulador). Para ello necesitas <code>adb</code>, el "Android Debug Bridge".</p>
<p>Para obtenerlo, debes instalar el paquete básico del Android SDK (<a class="external" href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK starter package</a>) para tu versión de Android. Luego, ejecuta el gestor de paquetes haciendo <code>$SDK_HOME/tools/android</code>, y usa la interfaz gráfica para instalar las herramientas de sistema del Android SDK (Android SDK Platform-tools).</p>
<p><code>adb</code> será instalado en <code>$SDK_HOME/platform_tools</code>. Asegúrate de añadir este directorio a tu <code>PATH</code>. Para ello, añade esta línea:</p>
<pre>
PATH=$SDK_HOME/platform_tools:$PATH</pre>
<p>a tu ~/.bashrc o equivalente, sustituyendo $SDK_HOME con el directorio del Android SDK. También es recomendable ejecutar:</p>
<pre>
adb pull /system &lt;backup target dir&gt;/system
</pre>
<p>para hacer una copia de seguridad de la partición de Android en tu teléfono. Así tendrás una copia de todos los bloques binarios para Android en caso de que quieras eliminar los archivos de B2G. Dependiendo del teléfono, también necesitas hacer copia de seguridad de los directorios /data y/o /vendor:</p>
<pre>
adb pull /data &lt;backup target dir&gt;/data
adb pull /vendor &lt;backup target dir&gt;/vendor
</pre>
<h2 class="note" id="Instalaci.C3.B3n_de_heimdall">Instalación de heimdall</h2>
<p>Heimdall es una utilidad para hacer instalaciones en el Samsung Galaxy S2. El instalador de B2G la utiliza para reemplazar los contenidos del teléfono con Firefox OS, y para instalar versiones nuevas de B2G y Gaia. Necesitas Heimdall para instalar Firefox OS sólo en el Galaxy S2; <strong>no</strong> es necesaria para ningún otro teléfono. Para otros móviles, se construye y utiliza la utilidad fastboot.</p>
<div class="note">
  <strong>Atención:</strong> Recuerda que heimdall se necesita <strong>sólo para instalar Firefox OS en el Samsung Galaxy S2</strong>.</div>
<p>Hay dos maneras de instalar heimdall:</p>
<ul>
  <li><a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">Bajándote el código de</a> GitHub y construyéndolo tú.</li>
  <li>Utilizando un gestor de paquetes para la instalación:
    <ul>
      <li>En Linux: <code>sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev</code></li>
      <li>Para Mac, te puedes <a class="link-https" href="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg" title="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg">bajar una imagen</a>.</li>
    </ul>
  </li>
</ul>
<h2 id="Configuraci.C3.B3n_de_ccache">Configuración de ccache</h2>
<p>El tamaño estándar de ccache es 1GB; la construcción de B2G enseguida agota esta capacidad. Puedes cambiar el tamaño de tu cache con este comando:</p>
<pre>
<code>$ ccache --max-size 2GB</code></pre>
<h2 id="Configuraci.C3.B3n_de_la_regla_udev_en_tu_m.C3.B3vil">Configuración de la regla udev en tu móvil</h2>
<p>Llegado a este punto, puedes obtener el código de identificación del fabricante del USB ejecutando <code>lsusb</code>, pero por lo general es Google (código 18d1) o Samsung (código 04e8). Por tanto, añadir la línea siguiente:</p>
<pre>
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"</pre>
<p>al archivo <code>/etc/udev/rules.d/51-android.rules</code> debería funcionar.</p>
<p>Guarda los cambios, cierra el archivo, y hazlo legible:</p>
<pre>
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
</pre>
<h2 id="Configurar_el_tel.C3.A9fono">Configurar el teléfono</h2>
<p>Antes de conectar tu teléfono al puerto USB, pon el USB en modo desarrollo, lo que te permitirá acceder al teléfono para depurar e instalar. Para ello, abre la aplicación de Ajustes, accede a la sección de Aplicaciones &gt; Desarrollo, y selecciona la opción "Depuración USB".</p>
<h2 id="Siguiente_paso">Siguiente paso</h2>
<p>Llegado a este punto, ¡ya estás listo para <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">bajarte el código de Firefox OS</a>!</p>
Revertir a esta revisión