Avant d'obtenir le code source pour compiler B2G OS, même si c'est juste pour essayer de construire Gaia, vous aurez besoin d'un système de compilation correctement configuré — cette page vous montre comment faire. Pour l'instant, vous pouvez compiler sur des distributions Linux 64 bits et sous OS X.

Cibles de compilation compatibles

Vous avez besoin d'un appareil compatible pour lequel effectuer la compilation, ou alors vous pouvez utiliser un émulateur.

Note : Le code source de B2G de Mozilla constitue l'implémentation de référence de B2G OS, bien que les vendeurs de téléphones effectuent souvent des modifications. Lorsque vous achetez un appareil dans le commerce, il intègre la version spécifique au fabricant. Cela n'affecte pas les applications installées, mais cela peut différer au niveau de la plate-forme. Le portage pour Nexus 5 est maintenu directement par Mozilla ; il possède une meilleure compatibilité avec notre version de Gecko comparé à d'autres appareils.

Émulateur

Deux émulateurs sont disponibles : l'un émule du code ARM tandis que l'autre exécute tout en code x86. Apprenez comment les installer et les utiliser. N'utilisez pas l'émulateur x86 — il est difficile à installer et n'est pas si compatible.

Bureau

Vous pouvez construire une version de B2G OS pour ordinateur de bureau ; elle fait fonctionner Gecko au sein d'une application XULRunner, et vous utilisez ensuite l'interface utilisateur Gaia à l'intérieur de celle-ci.

Appareils

Plusieurs appareils sont compatibles avec B2G OS, mais certains sont plus compatibles que d'autres, et la compatibilité d'un appareil peut se restreindre à des variantes spécifiques. Vérifiez la page des appareils compatibles pour plus de détails.

Important : Seuls les appareils qui font fonctionner au minimum Android 4.3 (c'est-à-dire Jellybean, Kitkat ou Lollipop) sont compatibles. Si votre appareil est listé ci-dessus mais fonctionne avec une version d'Android plus ancienne, mettez-le à jour.

Prérequis pour GNU/Linux

Pour compiler sur Linux, vous aurez besoin de :

  • Une distribution GNU/Linux 64 bits (Ubuntu 14.04 LTS est conseillée).
  • Au moins 4 Go de RAM.
  • Au moins 40 Go d'espace disque disponible.

Vous aurez aussi besoin de la présence des outils suivants :

  • autoconf 2.13
  • bison
  • bzip2
  • ccache
  • curl
  • flex
  • gawk
  • git
  • gcc
  • nodejs
  • python
  • g++ / g++-multilib
  • java sdk (jdk)
  • lzop
  • make
  • OpenGL shared libraries
  • patch
  • X11 headers
  • 32-bit ncurses
  • 32-bit zlib
  • unzip

Ubuntu 12.04 LTS / Debian 6 / Linux Mint 13

Exécutez la commande suivante dans un Terminal :

sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libasound-dev libgconf2-dev libgl1-mesa-dev libx11-dev lzop make zip libxml2-utils nodejs unzip python

vous pouvez installer le jdk via ce ppa.

Ubuntu 14.04 LTS / Debian 7

Tout d'abord, lancez les commandes suivantes pour définir les architectures requises :

sudo dpkg --add-architecture i386
sudo dpkg --add-architecture amd64

Ensuite, exécutez la commande suivante dans un Terminal :

sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-7-jdk nodejs unzip python

Ubuntu 16.04

Ubuntu 16.04, juin 2016, la version de make est 4.1, ce qui empêche la construction d'android ; si vous rencontrez ce cas, vous devrez ajouter le dépôt trusty (14.04) et revenir à la version 3.81 en exécutant cette commande :

sudo apt-get install make=3.81-8.2ubuntu3

ensuite, pour éviter toute mise à jour automatique, vous pouvez marquer le paquet make avec hold pour le conserver

sudo apt-mark hold make 

Premièrement, lancez les commandes suivantes pour définir les architectures requises :

sudo dpkg --add-architecture i386
sudo dpkg --add-architecture amd64

Ensuite, exécutez la commande suivanre dans un Terminal :

sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-8-jdk nodejs unzip python

Ubuntu 16.10

Sur ubuntu 16.10, la version par défaut de make est la 4.1 ce qui empêche la compilation d'android ; pour résoudre ce problème, entrez les commandes suivantes dans la console :

wget http://ftp.us.debian.org/debian/pool/main/m/make-dfsg/make_3.81-8.2_amd64.deb

sudo dpkg -i make_3.81-8.2_amd64.deb

Ensuite, pour éviter les mises à jour automatiques, vous pouvez marquer le paquet make comme étant à conserver :

sudo apt-mark hold make

Vous devez ansuite ajouter les architectures requises :

sudo dpkg --add-architecture i386

sudo dpkg --add-architecture amd64 

Puis, lancez la commande suivante dans un Terminal :

sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-8-jdk nodejs unzip python 

 

Configurer l'accès USB

Sur les systèmes Linux, par défaut, les utilisateurs classiques ne peuvent pas accéder directement aux périphériques USB. Il faut configurer des règles udev. Créez un fichier appelé /etc/udev/rules.d/51-android.rules avec la commande suivante :

À FAIRE : Fusionner avec le bogue 1230463

wget -S -O - https://raw.githubusercontent.com/cm-b2g/B2G/1230463/tools/51-android.rules | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

wget -S -O - https://raw.githubusercontent.com/mozilla-b2g/B2G/master/tools/51-android.rules | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Les nouvelles règles prendront effet au prochain branchement d'un périphérique.

Configurer ccache

Une tonne de code est compilée mais une grande quantité ne change pas d'une version à l'autre. Nous pouvons considérablement accélérer la construction avec l'outil de compilation ccache. Attribuez-lui un cache de 50 Go avec la commande suivante :

ccache -M 50G

Note : Si vous avez peu d'espace disque, vous pouvez néanmoins définir un cache inférieur à 50 Go.

Distributions alternatives

Fedora 22

Lancez la commande suivante dans un Terminal :

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 zip perl-Digest-SHA wget lzop libxml2-utils

Arch Linux

Lancez la commande suivante dans un Terminal :

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

Pour installer les paquets lib32-*, vous devrez activer le dépôt multilib.

Par défaut, Arch Linux utilise Python 3. Vous allez devoir le forcer à utiliser l'ancien Python 2. C'est possible en faisant un lien depuis l'exécutable python2 vers python mais cela est déconseillé et considéré comme source d'erreurs. Cela va également casser Python 3 s'il est installlé sur votre système. Une meilleure méthode consiste à utiliser virtualenv/virtualenvwrapper :

sudo pacman -S python-virtualenvwrapper
source /usr/bin/virtualenvwrapper.sh
mkvirtualenv -p `which python2` firefoxos
workon firefoxos

Ainsi, l'exécution de

python --version

Donne comme résultat "Python 2.7.12".

Gentoo Linux

Installation de ccache

Vous aurez besoin d'installer ccache, un outil pour mettre en cache des constructions partielles.

# emerge -av ccache

Comme ccache est connu pour souvent provoquer des problèmes, Gentoo encourage les personnes à l'utiliser de manière explicite et avec parcimonie.

Pour activer l'utilisation nécessaire de ccache, lors de l'étape suivante de ce guide où le script ./build.sh script est appelé, les utilisateurs de Gentoo doivent à la place lancer la commande avec un chemin explicite étendu, c'est-à-dire :

PATH=/usr/lib64/ccache/bin:$PATH ./build.sh

Génération des images de partitions

Si vous compilez B2G pour un véritable appareil physique, alors vous serez amené à un certain moment à générer certaines images de partitions pour les envoyer sur votre appareil. (Par exemple, pour restaurer des fichiers sauvegardés vers l'appareil via l'utilitaire fastboot)

Le format utilisé pour l'image du système de fichiers dans ce cas est YAFFS2 (Yet Another Filesystem 2). Gentoo intègre le support de la toute dernière version (ie. git HEAD) du paquet yaffs2-utils en espace utilisateur dans le portage. (Note : Vous aurez aussi besoin de correctifs noyau si vous souhaitez monter des images YAFFS2, mais ce n'est pas vraiment obligatoire car à la place vous pouvez les déconstruire puis les reconstruire.)

# emerge --autounmask-write yaffs2-utils; etc-update; emerge -av yaffs2-utils

Afin de générer une telle image, placez-vous simplement dans le répertoire parent de l'arborescence du système de fichiers de la partition que vous voulez empaqueter, puis envoyez  une commande comme ceci :

mkyaffs2image system/ system.img

Branches anciennes

Si vous souhaitez compiler une ancienne branche de B2G OS, des erreurs de compilation peuvent survenir. Voir la page Construire d'anciennes branches.

Prérequis pour OS X

Note : La configuration et la compilation de B2G pour Keon ne fonctionne pas sur Mac. Il vous faut utiliser Linux pour construire B2G pour cet appareil.

Note : La compilation de B2G pour Fairphone2 ne fonctionne pas sur Mac. Il vous faudra utiliser Linux pour construire B2G pour cet appareil. La cause est l'échec de la vérification MD5 des blobs ; pour plus d'informations, voir : Lien

La construction de B2G OS sur OS X est possible, mais elle n'est ni facile ni très bien supportée. Il sera nécessaire d'installer une ancienne version de Xcode qui pourrait interférer avec la version actuelle si vous l'utilisez déjà. Pour une meilleure expérience, vous devriez compiler sur Ubuntu 14.04 LTS. Cependant, si vous insistez, essayez ces étapes :

OS X 10.11 El Capitan et OS X 10.10 Yosemite

Important : La construction sur OS X 10.11 El Capitan est expérimentale et peut ne pas se terminer ! Restez sur OS X 10.10 Yosemite jusqu'à ce que les instructions ci-dessous soient améliorées et que cet avertissement soit supprimé.

Système de fichiers sensible à la casse

L'installation par défaut d'OS X ne convient pas pour la compilation de B2G OS. Il vous faut réinstaller OS X sur un système de fichiers sensible à la casse.

Xcode 7.2

  1. Installez la dernière version de Xcode à partir de l'Apple Store.
  2. Acceptez la licence avec la commande suivante :
sudo xcodebuild -license

Xcode Command Line Tools

Installez Xcode Command Line Tools avec la commande suivante :

xcode-select --install

Xcode 5.1.1

Important : Veuillez installer Homebrew et ses outils (voir la section ci-dessous) avant de passer à celle du SDK de Xcode 5.1.1 - l'installation d'Homebrew sur le SDK Xcode 5.1.1 va échouer !

AOSP, et par conséquent B2G OS, n'est pas compatible avec la dernière version du SDK d'Xcode. Nous avons besoin d'installer une version plus ancienne à côté de la plus récente.

  1. Téléchargez Xcode 5.1.1 depuis developer.apple.com et installez-le dans /Applications/Xcode-5.1.1
  2. Basculez vers l'utilisation du SDK Xcode 5.1.1 avec la commande suivante :
sudo xcode-select --switch "/Applications/Xcode-5.1.1/Xcode.app/Contents/Developer"

Java SE Development Kit 7

AOSP, et par conséquent B2G OS, n'est pas compatible avec le JDK Java v8, il est donc nécessaire d'installer le JDK Java v7. Vous pouvez le télécharger depuis http://www.oracle.com/.

Profil Bash

Ajouter les lignes suivantes à votre fichier ~/.bash_profile :

export PATH=~/bin:$PATH
export PATH=/usr/local/bin:$PATH
export BUILD_MAC_SDK_EXPERIMENTAL=1
export LC_CTYPE=C
export LANG=C
export USE_CCACHE=1

Homebrew

Nous devons installer certains outils en ligne de commande en plus car ils ne sont pas fournis par Apple. Installez Homebrew :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ensuite, installez les outils avec la commande suivante :

brew install ccache coreutils cmake findutils git gnu-tar gnu-sed gpg lzop yasm

Il faut une version spécifique d'autoconf, la version 2.13 :

brew install homebrew/versions/autoconf213

Configurer ccache

Beaucoup de code est compilé mais une grande partie de change pas selon les versions. La vitesse de compilation peut être considérablement accélérée avec l'outil de compilation ccache. Attribuez-lui un cache de 50 Go avec la commande suivante :

prebuilts/misc/darwin-x86/ccache/ccache -M 50G

Anciennes instructions pour OS X

Exécutez B2G OS Mac Bootstrap

Ensuite, ouvrez un terminal et lancez la commande suivante :

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

Cela va récupérer et lancer un script de bootstrap qui va s'assurer que vous disposez de tous les éléments requis pour construire l'émulateur. Il vous demandera aussi la permission d'installer ce qui pourrait manquer et fournir des avertissements et des suggestions de correction en cas de problème.

Pour développer avec B2G, vous allez avoir besoin de récupérer une branche particulière. Cette dernière est à télécharger depuis Mercurial. (en apprendre plus) Comme OSX ne dispose pas de Mercurial par défaut, vous devez l'installer avec ce code :

$ brew install mercurial

Tenez compte de la sensibilité à la casse du système de fichiers Mac

Par défaut, OS X est installé sur un système de fichiers insensible à la casse. Cela pose problème car le noyau Linux contient un certain nombre de fichiers avec des noms identiques, mais avec des casses différentes. Par exemple, les fichiers d'en-tête xt_CONNMARK.h et xt_connmark.h Cela a pour conséquence de faire paraître un certain nombre de fichiers comme ayant été modifiés dans /kernel après un tout récent ./config.sh.

Dans de nombreux cas, vous pouvez lancer la compilation sans problème ; sur certaines plateformes par contre, vous pouvez rencontrer l'erreur suivante :

ERROR: You have uncommited changes in kernel
You may force overwriting these changes
with |source build/envsetup.sh force|

ERROR: Patching of kernel/ failed.

Veuillez vous référer au bogue 867259 pour plus de détails et des correctifs éventuels pour ce problème.

Sinon, ce sera toujours plus sûr de compiler sur un système de fichiers sensible à la casse. La méthode la plus simple pour cela consiste à créer une image disque montable, distincte, avec la sensibilité à la casse activée. Faîtes attention à ne pas utiliser de lettres en capitale si vous changez le nom spécifié par -volname. L'image peut être créée avec l'application d'Apple Disk Utility ou en ligne de commande :

hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/firefoxos.sparseimage

Montez le lecteur avec :

open ~/firefoxos.sparseimage

Changez de répertoire vers le lecteur monté avec :

cd /Volumes/firefoxos/

Vous pouvez ensuite récupérer le code et le compiler depuis cet emplacement sans vous préoccuper des problèmes de sensibilité à la casse.

Optionnel : Installer HAX

Intel fournit un pilote spécial qui permet à l'émulateur B2G d'exécuter son code en natif sur votre Mac au lieu de l'émuler lorsque vous utilisez l'émulateur x86. Si vous souhaitez l'utiliser, vous pouvez le télécharger et l'installer. Ce n'est pas obligatoire, mais cela peut améliorer les performances et la stabilité de l'émulation.

Avant que vous ne puissiez installer HAX, vous devez installer le SDK d'Android.

Installer adb

Le processus de construction a besoin d'extraire les blobs binaires de l'installation d'Android présente sur le téléphone avant de compiler B2G (sauf si vous construisez l'émulateur bien sûr). Dans ce but, il sera nécessaire d'avoir adb (Android Debug Bridge). Notre article Installer ADB explique comment faire.

Note pour plus tard lorsque vous commencerez à utiliser adb : l'écran de verrouillage du téléphone doit être déverrouillé pour qu'adb puisse voir votre téléphone (au moins dans les dernières versions de B2G OS). Vous préférerez sans doute désactiver l'écran de verrouillage (nous verrons comment plus loin dans les instructions de compilation).

Étapes additionnelles pour le Samsung Galaxy S2

Si vous envisagez de compiler pour le Samsung Galaxy S2, il vous sera aussi nécessaire d'avoir installé heimdall. Voir Installer heimdall pour les détails. Le script de bootstrap ne le fera pas à votre place !

De plus, vous devez garder à l'esprit les points suivants :

  1. Lorsqu'éventuellement vous êtes sur le point d'installer votre build sur un appareil S2, avant de lancer le script flash.sh, vous devez remplacer toutes les occurences de factoryfs par FACTORYFS, ainsi que kernel par KERNEL (vérifiez la sortie de pit pour confirmation), sinon cela ne fonctionnera pas.
  2. La ROM de Recovery Siyah-s2 est celle qui fonctionne le mieux. CWM fonctionne bien aussi, mais présente quelques soucis.
  3. Flasher votre S2 avec flash.sh va permettre de faire fonctionner l'OS de base mais la version de Gaia incluse peut avoir des problèmes. La rafraîchir avec make reset-gaia PRODUCTION=1 devrait les résoudre.
Note : Si vous avez installé l'outil Samsung Kies, lequel est utilisé pour gérer le contenu de nombreux téléphones Samsung, vous aller devoir le supprimer avant de pouvoir flasher B2G OS sur votre appareil. Vous pouvez employer le procédé classique de Windows pour désinstaller l'application ; sur Mac, le disque d'installation de Kies contient un utilitaire pour complétement supprimer Kies du système. Le flashage ne fonctionnera pas si Kies est installé. Si vous oubliez de le supprimer, le système de compilation va le détecter et vous rappeler de le désinstaller. Remarquez aussi que l'outil de désinstallation ne supprime pas correctement le dossier ~/Library/Application Support/.FUS, et y laisse une référence à un utilitaire dans votre liste d'éléments de démarrage utilisateur. Vous pourrez les supprimer manuellement.

Installer heimdall

Heimdall est un utilitaire pour flasher le Samsung Galaxy S2. Il est utilisé par l'utilitaire de flashage de Boot to Gecko aussi bien pour remplacer le contenu du téléphone par B2G OS que pour flasher des versions mises à jour de B2G et de Gaia sur l'appareil. Vous en aurez besoin si vous voulez installer B2G OS sur un Galaxy S2 ; il n'est pas nécessaire pour les autres appareils. Pour ces derniers, nous construisons et utilisons l'utilitaire fastboot à la place.

Note : Encore une fois, il est important de noter que cela est nécessaire uniquement pour installer B2G OS sur le Samsung Galaxy S2.

Il y a deux méthodes pour installer heimdall :

  • Vous pouvez télécharger le code GitHub et le compiler vous-même.
  • Utiliser un gestionnaire de paquets pour l'installer.

Note : À l'heure actuelle, compiler la dernière version d'Heimdall à partir des sources génère des erreurs. Il vaut mieux à la place utiliser la version sous forme de paquet 64 bits des dépôts Ubuntu 14.04. i.e. n'utilisez pas heimdall-flash:i386 si vous pouvez l'éviter.

Prochaine étape

À ce stade, vous êtes prêt pour récupérer le code source de B2G OS !

Étiquettes et contributeurs liés au document

 Dernière mise à jour par : xdelatour,