Compiler Firefox OS pour ZTE Open C

A la question posée sur Diaspora* : à quoi ça va me servir de compiler à part avoir la dernière version dispo et la fierté d’avoir réussi à le faire comme un grand, j’ai eu deux réponses :

  • t’embête pas avec ça, il y a des gens qui compilent tout le temps, autant récupérer leurs images
  • pour avoir plus d’autonomie, avoir les dernières évolutions en étant indépendant.

Globalement, je suis assez d’accord avec ces deux points de vues.
Donc si vous n’avez pas de temps à perdre, passez votre chemin mais si vous voulez être fier d’avoir votre compilation perso, c’est par ici que ça se passe.

Je dois d’abord dire que ça fait prendre un peu plus conscience de l’énorme merdier qu’il y a derrière un tel système d’exploitation somme toute assez jeune et pas si lourd une fois compilé (un peu moins de 300Mo).
Il faut aussi s’armer de patience car cela va être lourd et long mais ce n’est pas bien compliqué si on suit les étapes correctement. Par contre, c’est la première fois que je réussis une compilation sans avoir des tas de messages d’erreur pour telle ou telle raison, même si on n’obtiens pas forcément ce qu’on veut dès la première fois.

J’ai un peu hésité à faire ce billet car la méthode "globale" tient dans les huit lignes de commande décrites dans le billet de Cyrille et que pour le détail, la plupart des informations nécessaires sont dans la doc de Mozilla sauf qu’il y a quand même pas mal de subtilités et qu’il va falloir pas mal naviguer à droite, à gauche pour tout rassembler et qu’il est quand même intéressant de regrouper les informations concernant le ZTE Open C en un endroit avec les astuces (dont je précise les sources) que j’ai pu trouver sans que tout le monde fasse les mêmes erreurs. Après, je ne peux pas garantir que tout va fonctionner et vous aurez peut-être des messages d’erreur auxquels je n’aurais aucune idée donc voilà pour l’avertissement.

La compilation va prendre 3 grandes et longues étapes :

  • préparer votre ordi pour la compilation avec toutes les librairies et dépendances nécessaires
  • récupérer le dépôt git de Boot2Gecko (une quinzaine de Go quand même)
  • compiler la version que vous souhaitez puis flasher votre téléphone

Chacune de ce étapes va vous prendre quelques heures au bas mot.
En tout et pour tout il n’y aura qu’une dizaine de lignes à taper avec toutes les options qui vont bien mais entre deux, il y aura le temps pour aller manger, dormir ou vous balader.

Première grande étape : préparer l’ordi

D’abord, n’essayez pas de faire ça sur un vieux treuil proche de la décennie ou si vous êtes trop court en espace disque (20Go de libre minimum mais soyez large si vous ne voulez pas planter la compil qui a déjà mouliné 2h pour manque de place, ce qui est arrivé à mon 2ème essai).
Pour avoir toutes les librairies qu’il faut je vous laisse aller voir selon votre distro les paquets à installer. Personnellement, j’ai essayé sur ma Debian stable quotidienne mais j’ai rapidement été confronté à des problèmes de dépendances. Je me suis donc rabattu sur la dernière Xubuntu LTS que j’avais installé dans un coin pour test et au cas où ; ça tombait bien.
J’ai suivi strictement les listes de paquets à installer et à configurer comme pour la 13.10 (parce qu’en plus il y a un problème avec la version gcc actuelle 4.7 et qu’il faut aller sur la précédente).
Bon courage et on se retrouve une fois que c’est fait.

Deuxième étape : récupérer B2G

Allez là où vous voulez jouer avec l’énorme paquet de données que vous allez compiler (une quinzaine de Go) puis tapez les commandes suivantes :
git clone git://github.com/mozilla-b2g/B2G.git
cd B2G
rm -rf objdir-gecko/ out/ backup-flame/

Jusque là ça se présente bien, pas de difficultés et ça va vite mais ça va se corser.
Il faut ensuite récupérer le fichier openc.xml (faire clic droit/enregistrer sous)
Puis si vous voulez compiler la dernière version en développement (la 2.1 au moment de l’écriture de ce billet)
./config.sh flame /MON/DOSSIER/VERS/openc.xml

Si vous voulez compiler une branche antérieure plus stable, il va d’abord falloir changer les lignes suivantes (entre les lignes 15 et 20 environ) dans le fichier openc.xml :
<project name="gecko.git" path="gecko" remote="mozillaorg" revision="master"/>
...
<project name="gaia" path="gaia" remote="mozillaorg" revision="master"/>
En remplaçant master par v1.4 par exemple si vous voulez compiler la prochaine version stable puis faire le config correspondant :
BRANCH=1.4 ./config.sh flame /MON/DOSSIER/VERS/openc.xml

Et une fois que ça c’est fait, vous pouvez aller vous coucher ou vaquer à d’autres occupations parce que ça va être très long la première fois.
Bonne nuit donc et on se retrouve quand c’est fini.

Troisième étape : on va enfin pouvoir compiler

Avant, il va falloir connecter le téléphone en s’assurant que l’ADB fonctionne ; pour cela, je vous renvoie au préalable de mon précédent tuto afin de choisir l’option adb dans le téléphone et faire les manip nécessaire pour que la commande adb devices vous donne le numéro de votre device.

Important : je vous conseille de désactiver la veille et surtout d’activer le wi-fi car lors de mes compilations avec le wi-fi désactivé, ma version compilé n’arrivait pas à trouver de réseau.

Dernière chose à faire, si vous ne voulez pas des outils de test pour les développeurs qui vont vous truffer votre page d’accueil d’appli de tests inutiles et non supprimables (par l’interface du téléphone, il va falloir bidouiller dans l’arborescence), il faut préciser que vous êtes en mode production par les commandes suivantes :
export PRODUCTION=1
export GAIA_APP_TARGET=production

Puis enfin on lance la compilation :
./build.sh gecko

Ça va prendre une à deux heures, votre CPU va peut-être un peu chauffer mais c’est parti ; si tout ce passe bien, vous n’aurez pas de message d’erreur et il va vous proposer de flasher. Si c’est OK pour vous (vous allez perdre toutes vos applications et données telles que contacts, notes, etc. donc faites le nécessaire au préalable pour exporter tout ça) :
./flash.sh gecko
cd gaia
make reset-gaia

Redémarrez votre téléphone et vous devriez être avec un système vierge de votre version compilée.
Si vous êtes arrivé jusqu’ici, félicitations et bon amusement !

Haut de page