Pré-requis linux pour compiler : http://developer.mozilla.org/fr/docs/Pr%(..)
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.
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 :
A vous de choisir, voici les instructions pour chacune des installation :
Les instructions qui suivent vous permettent d'installer ccache par défaut pour toute vos compilation (y compris hors mozilla) :
cd /home/user/bin
ln -s /usr/bin/ccache gcc
ln -s /usr/bin/ccache g++
ln -s /usr/bin/ccache c++
Et voilà :)
mk_add_options MOZ_MAKE_FLAGS="CC='ccache gcc' CXX='ccache g++'"
faites une compilation, et vérifier avec
ccache -s
que les stats augmentes et semblent logiques...
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.
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.
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 :
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
mk_add_options MOZ_MAKE_FLAGS="CC='distcc gcc' CXX='distcc g++'"
attention ! si vous aviez un "-jX" gardez le !!
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
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.