Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Compiler mozilla

Compilation du code source mozilla (tout projets)

Pré-requis linux pour compiler : http://developer.mozilla.org/fr/docs/Pr%(..)

Accélérer la compilation de mozilla

C'est long, d'autant plus si vous avez à le faire souvent, voici 2 utilitaires permettant de rendre plus efficace et moins long une compilation. Il s'agit de ccache et distcc.

En guise d'exemple des gains de temps atteignable, voici un tableau comparant les utilisation de ccache, distcc, ccache&distcc, et une compilation sans ces outils : http://students.cs.tamu.edu/dzhang/distc(..)

Dans le même ordre d'idée : réduire vos temps passé à la compilation, je vous conseille de vous renseigner sur l'Incremental Build (http://developer.mozilla.org/en/docs/Inc(..)) qui permet de compiler qu'une partie de l'arbre de compilation de mozilla. Ce qui complétera astucieusement ces 2 outils et peut vous assurer les meilleurs gains.

Compiler avec ccache

Ccache est un outil qui permet de mettre en cache certaines opérations du compilateur. Cela permet d'accélérer grandement une compilation (jusqu'à deux fois plus rapide pour Mozilla). Compiler Mozilla avec Ccache la première fois n'accélère en rien la compilation, par contre, les prochaines compilations tireront parti du cache généré par la première.

Il y plusieurs façon de mettre en oeuvre ccache :

  • l'installation "globale" qui rend ccache actif pour toute les compilations (y compris de vos autres projets).
  • l'installation "locale" qui permet d'activer ccache par projet (donc en ce qui nous concerne, uniquement pour la compilation de projet mozilla).

A vous de choisir, voici les instructions pour chacune des installation :

installation globale de ccache

Les instructions qui suivent vous permettent d'installer ccache par défaut pour toute vos compilation (y compris hors mozilla) :

  • installer ccache
  • dans un répertoire particulier (par exemple /home/user/bin), créer ces 3 liens symboliques:
 cd /home/user/bin
 ln -s /usr/bin/ccache gcc
 ln -s /usr/bin/ccache g++
 ln -s /usr/bin/ccache c++
  • export CCACHE_DIR=/ou/vous/voulez/mettre/votre/cache/ (par exemple, /home/user/MOZILLA/src/.ccache)
  • export CCACHE_HARDLINK=1
  • Assurez vous que les liens vers gcc soient accessibles: export PATH=/home/user/bin:$PATH

Et voilà :)

installation locale de ccache

  • installer ccache
  • ajouter la ligne suivante dans votre fichier mozconfig :
 mk_add_options MOZ_MAKE_FLAGS="CC='ccache gcc' CXX='ccache g++'"

Vérification de la bonne installation

faites une compilation, et vérifier avec

 ccache -s

que les stats augmentes et semblent logiques...

Compiler avec distcc

Distcc permet de compiler un programme avec plusieurs machines en même temps. Il distribue les différents fichiers sources du programme sur chaque machine. Cela accélère ainsi les temps de développements.

Il y a donc la machine cliente (celle du développeur), et plusieurs machines serveurs.

récupération de distcc, et installation

Pour installer distcc voir http://distcc.samba.org . Il y a distcc à installer sur la machine cliente, et distccd sur les machines serveurs.

Il est fortement recommandé d'avoir la même version de gcc sur chacune des machines.

utilisation de distcc pour la compilation de projets mozilla

Dans le .mozconfig, il faut indiquer :

 mk_add_options MOZ_MAKE_FLAGS=-j4

Cela indique le nombre de processeur à utiliser (locaux ou distants). Si vous avez 3 machines, vous mettrez 3*2=6

Ensuite vous indiquez dans une variable DISTCC_HOSTS la liste des machines qui vont compiler, par ordre de priorité (en fonction de leur puissance, disponibilité etc..)

 export DISTCC_HOSTS="localhost serveur1 serveur2"

Lancez les demons distccd sur vos serveurs

 service distccd start
 ou
 distccd --deamon --allow ipclient1 ipclient2 ...

Ensuite, comme pour ccache, il existe 2 facons de l'installer :

  • l'installation globale, pour toute les compilations
  • l'installation locale, ne concernant que la compilation de projet mozilla

installation "globale"

Faites vous ensuite un repertoire ~/bin dans lequel vous allez mettre des liens symboliques vers distcc, ayant pour nom gcc, c++, cc et g++

 ln -s /usr/bin/distcc gcc
 ln -s /usr/bin/distcc c++
 ln -s /usr/bin/distcc cc
 ln -s /usr/bin/distcc g++

Il faut ajouter ce repertoire au début de votre path :

 export PATH=/home/laurent/bin:$PATH

installation "locale"

  • ajouter/modifier la ligne suivante dans votre fichier mozconfig :
 mk_add_options MOZ_MAKE_FLAGS="CC='distcc gcc' CXX='distcc g++'"

attention ! si vous aviez un "-jX" gardez le !!

Vérifier que ca marche

Ensuite, allez dans le repertoire de mozilla sur la machine cliente et lancez comme d'habitude la commande

 make -f client.mk build

Vous pouvez monitorer les compilations distantes en installant et lançant distccmon-gnome ou distccmon-text

ccache avec distcc

Rien de plus simple, installez ccache comme décrit précédemment, installez distcc, mais n'appliquez pas les instructions pour l'utiliser... car il y a plus simple :

ajouter dans votre environnement :

 export CCACHE_PREFIX=distcc

Et voilà !


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.