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 !
1 De TuxGasy -
Le lien vers les prérequis ne marche pas (à cause d'un espace après Firefox_OS)
2 De Cyrille BORNE -
Je mettrai le pull pour la sauvegarde
3 De Gaël -
A noter que compiler FFOS soit même empêchera d'avoir la webcam.
La seule rom dispo qui permet d’obtenir la webcam est celle développée par Konstat à l'heure actuelle :
http://www.modaco.com/topic/373261-...
Cette rom demande d'abord de passer le mappage des partitions du zte open c sur un mappage kis 3 (même téléphone mais sous android). Ce mapping désactive la carte sd interne, ce qui peut provoquer quelques problèmes (exemple : https://bugzilla.mozilla.org/show_b... )
D'ailleurs je ne sais pas si une fois passé son téléphone sous mapping kis3, est-il toujours possible de compiler et flasher son propre ffos dessus...
4 De pywy -
merci pour ce tuto, je vais tester ca bientot, ma motivation principale étant de ne plus avoir le bug du "reboot intempestif" de la version 1.3.
5 De grazoth -
Bon sang et moi qui me suis tapé toute la doc en anglais pour la compil vendredi soir. Enfin,pour un anglophobe je ne me suis pas mal débrouillé je crois, pas d'erreur a la compil, j'etait tout fier jusqu'à ce que j'essaie de flasher le tel et que je me retrouve avec un fastboot pas content qui me dit qu'il n'arrive pas a effacé les système de fichier :(
Maintenant je n'ai plus qu'à trouvé pourquoi mes systèmes de fichiers sont en read only même sur un tel rooté
6 De tatayoyo -
Salut,
attention au prochaine compilation avec le reset-gaia qui remet le téléphone en sortie d'uise (plus de contact, sms etc...) il faut ensuite utiliser make install-gaia pour garder ses données.
voici la commande que j'utrilise pour mettre a jour mon gaia
PRODUCTION=1 REMOTE_DEBUGGER=1 MOZILLA_OFFICIAL=0 DOGFOOD=0 GAIA_DEFAULT_LOCALE=fr GAIA_KEYBOARD_LAYOUTS=fr NOFTU=1 make install-gaia
les options sont documentées sur le site de doc mozilla
7 De alterlibriste -
@TuxGasy : je n'ai pas de pb avec le lien
@Cyrille: je t'ai répondu par ailleurs ; pour moi le adb pull/push met le souk (wifi, plantages, ...) sans compter les passages de versions ; c'est comme trimballer son /home sur différentes versions, au bout d'un moment c'est plein de cochonneries ; il vaut mieux avoir exporté ses contacts, flux rss, notes en fichiers et/ou envoyés par mail. Certes, ne pas pouvoir récupérer sa config comme elle était n'est pas idéal mais j'attends d'avoir des infos sûres pour savoir quels répertoires sont à garder.
@Gael : le problème de la caméra est effectivement présent sur les téléphones vendus en France mais pas ceux avec le firmware européen achetés sur eBay, la raison n'est pas définie pour le moment.
@tatayoyo : merci pour ces commandes complémentaires au bon paramétrage du système
8 De TuxGasy -
Bizarre! Y a que chez moi où le lien ne marche pas alors (?!)
9 De Yves -
@TuxGasy : lol non chez moi non plus ;)
10 De Yves -
Ce ZTE open c est carrément imbrickable ! le mien à mangé je ne sais combien d'images et de push et j'ai toujours la queue du panda qui s'agite !
Bref, j'essaie de compiler une 2.1...
> Build failed! <
Build with |./build.sh -j1| for better messages
If all else fails, use |rm -rf objdir-gecko| to clobber gecko and |rm -rf out| to clobber everything else.
GRRRR
11 De Yves -
C'est bon, je me suis débrouillé tout seul, j'ai compilé la 2.1.1
Elle tourne sur mon ZTE FR (B01)
Pb : police de caractère pas géniale et pb curseur rétroéclairage.
Je tente la branche 2.0
12 De Yves -
Correction : Boot2Gecko 2.2.0 0-prerelease et non 2.1.1 ^^
13 De Yves -
Impec : la 2.0.0 tourne nikel sur le ZTE _FR de cdiscount ;)
14 De y0no -
la commande ./flash.sh gaia fait pas l'affaire pour update sans perdre tout ?
15 De sythuzuma -
Salut,
Sous la dernière mint, au moment du config.sh, pres avoir passé 1.4 partout, j'ai cette erreur quasi tout de suite :
* [nouvelle étiquette] v1.9.5 -> v1.9.5
* [nouvelle étiquette] v1.9.6 -> v1.9.6
Get tmp_manifest_repo
fatal: cannot obtain manifest tmp_manifest_repo
J'ai retenté en passant 2.0, mais rien n'y fait. Je connais peu git, donc c'est peut-etre un problème de noob... mais si vous avez une idée je prends!
16 De HacKurx -
Salut,
Je pense que cela irait plus vite de télécharger l'ensemble en utilisant les archives zip (surtout pour la première compilation, mais pour rester à jour là git serait pratique). Les archives étant disponibles ici:
https://github.com/mozilla-b2g
https://github.com/mozilla-b2g/B2G
https://github.com/mozilla-b2g/gaia
Après l'idéal serait de ce faire un petit script pour automatiser l'ensemble avec une interaction utilisateur demandant juste la version à compiler (pourquoi pas si j'ai le temps à moins que quelqu'un ne réalise cela avant moi).
Sinon merci pour tes articles sur Firefox OS et le ZTE Open C !
J'ai du m'en acheter un du coup :)
Moi le seul point négatif que je trouve c'est juste le manque/choix d'applications.
Librement,