Voir les bug DXR sur Mozilla :
https://bugzilla.mozilla.org/show_bug.cgi?id=489834 Things needed for DXR
https://bugzilla.mozilla.org/show_bug.cgi?id=553490 Generify the DXR build process
Au sujet de callgraph (qui est intégré à la dernière version de DXR) :
https://developer.mozilla.org/en/Callgraph/Installing_Callgraph
Les instructions suivantes sont aussi utiles :
https://developer.mozilla.org/En/Dehydra/Installing_Dehydra
https://bugzilla.mozilla.org/show_bug.cgi?id=524725#c28
successfully got dehydra built and passing tests by using 1.9.2 branch
spidermonkey instead of trunk.
Les anciennes instructions DXR sur http://zenit.senecac.on.ca/wiki/index.php/Instructions_for_Setting_Up_DXR sont périmées et à remplacer par le processus décrit dans le README du repository sur hg. A la suite, nous détaillons cela :
Etape outils de dev :
su - -c "yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'"
su - -c "yum install mercurial autoconf213"
# librairie de calcul multi-precision mpfr
su - -c "yum install mpfr-devel"
Etape hg de DXR :
hg clone http://hg.mozilla.org/webtools/dxr/ dxr
cd dxr
Ensuite le README conseille de lancer build-tools.sh , mais il n’est pas vraiment optimisé et lourd par rapport à ce qui est vraiment indispensable. Optimisons donc les étapes :
Etape compilation de jshydra (juste pour référence. Dans le cas où le source ne contient pas de js, on en a pas besoin et nous nous plaçons dans ce cas):
# Les instruction dans le README à la racine sont les plus à jour au sujet de jshydra
hg clone http://hg.mozilla.org/users/Pidgeot18_gmail.com/jshydra/ ./jshydra
cd ./jshydra
# dans cet exemple, on pointe vers le source complet de Mozilla. Cependant seul le source de SpiderMonkey est censé être vraiment nécessaire. # Au 24 mars 2010, les versions postérieure à 2cf0bbe3772a de SpiderMonkey sont censées être utilisables
./configure --moz-src=${TOOLSDIR}/mozilla-central --moz-obj=${TOOLSDIR}/mozilla-central/objdir
make
Etape compilation de SpiderMoney pour Dehydra :
# Récuperer just js dans le source de Firefox puis le compiler
wget -O- http://releases.mozilla.org/pub/mozilla.org/firefox/releases/devpreview/1.9.3a3/source/mozilladeveloperpreview-3.7a3.source.tar.bz2 | tar xjvf – mozilla-central/js
Pour la branche 1.9.2 (leaseweb.com est nettement plus rapide en Europe) :
wget -O- http://mirror.leaseweb.com/software/mozilla/firefox/releases/latest-3.6/source/firefox-3.6.2.source.tar.bz2 | tar xjvf - mozilla-central/js
## Chemin de référence : http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-3.6/source/firefox-3.6.2.source.tar.bz2
mv mozilla-central/js/ dxr/tools/
cd ~/dxr/tools/js/src
autoconf-2.13
mkdir build-release ; cd build-release
../configure --prefix=~/dxr/tools/SpiderMonkey
make ; make install
Etape compilation de GCC 4.5 pour Dehydra (abandon, échec de compilation de GCC 4.5):
# Récuperer gcc 4.5, le compiler ( La compilation des sources GCC 4.5 ne marche pas avec ma plate-forme !! )
export GCCVER=4.5-20100325
mkdir ~/dxr/tools/gcc-dehydra
cd ~/dxr/tools/gcc-dehydra
wget -O- ftp://ftp.nluug.nl/mirror/languages/gcc/snapshots/$GCCVER/gcc-$GCCVER.tar.bz2 | tar xjf -
cd gcc-$GCCVER
mkdir gcc-build ; cd gcc-build
../gcc/configure --without-libstdcxx --enable-checking --disable-bootstrap CFLAGS="-g3 -O0" --enable-languages=c,c++ --enable-__cxa_atexit --prefix=$PWD/../installed
make ; make install
Etape compilation de GCC 4.3 pour Dehydra (en remplacement de GCC 4.5):
mkdir ~/dxr/tools/gcc-dehydra ; cd ~/dxr/tools/gcc-dehydra wget ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.bz2 -O- | tar xjf -
cd gcc-4.3.4/
hg init .
hg clone http://hg.mozilla.org/users/tglek_mozilla.com/gcc-moz-plugin-mq .hg/patches
(for file in `cat .hg/patches/series`; do cat .hg/patches/$file; done) |patch -p1
cd ..
mkdir gcc-build
cd gcc-build
../gcc-4.3.4/configure --without-libstdcxx --enable-languages=c,c++ --disable-multilib --prefix=$PWD/../installed
make -j4 ; make install
Etape compilation de Dehydra :
cd ~/dxr/tools/
hg clone http://hg.mozilla.org/rewriting-and-analysis/dehydra/
export CXX=~dxr/tools/gcc-dehydra/installed/bin/g++ (ou export CXX=~/installed/bin/g++)
cd dehydra/
./configure --js-libs=~/dxr/tools/SpiderMonkey/lib --js-headers=~/dxr/tools/SpiderMonkey/include/js
make
# Checking if /home/cltbld/installed/bin/g++ accepts -fplugin for building treehydra: Yes
make check ; make check_dehydra
# Verifier aussi treehydra
make check_both ; make check_treehydra
Etape compilation de glimpse + glimpseindex :
cd ~/dxr/tools/
wget http://webglimpse.net/trial/glimpse-latest.tar.gz -O- | tar xzf -
cd glimpse-* ; ./configure ; make
Avec ces instructions, les binaires de glimpse sont dans ~/dxr/tools/glimpse-*/bin, il faudra les recopier ailleurs si besoin, pour que le serveur puisse y accéder.
Fini pour la compilation des outils, il ne reste plus qu’à réaliser le calcul des références !
Creation du site DXR : Mise à jour des options et configuration :
DXR va s’installer dans Apache. Par défaut les chemins correspondent à une installation dans /var/www/html (que nous noterons maintenant ROOT_SITE) et sont à mettre à jour si un chemin différent est utilisé.
o Mettre à jour les chemins de l'environnement dans ~/dxr/dxr.config (qui sera ensuite placé dans ROOT_SITE/dxr.config ) :
- Section [DXR]
Pas de raison de modifier le chemin de xrefscripts et templates
Noter qu'il va falloir recopier glimpse là où il faut, et peut-être modifier la version
- Section [Web]
Mettre à jour wwwdir vers ROOT_SITE et virtroot si ce n'est pas dxr
Dans tous les cas, il faut modifier hosturl vers la bonne url
- section repository (au départ [mozilla-central])
changer le nom par celui souhaité pour le repository
mozconfig n'est pas vraiment pertinent pour un autre projet, mais le fichier ~/dxr/xref-scripts/dxr-mozconfig est un bonne endroit pour stocker la valeur souhaitée pour CXX et CXXFLAGS
A modifier :
SOURCEROOT=$HOME/dxr/mozilla-central/mozilla
OBJDIR=${SOURCEROOT}/objdir-opt
DEHYDRAROOT=~/dxr/tools/xref-scripts
DBROOT=~/dxr/tools/xref-scripts
DBBACKUP=${DBROOT}-old
o Modifier les options pour compiler :
export CXX=$HOME/dxr/tools/gcc-dehydra/installed/bin/g++
# use dehydra plugin and dxr.js script
export CXXFLAGS=-fplugin="$HOME/dxr/tools/gcc-dehydra/dehydra-gcc/gcc_dehydra.so -fplugin-arg=$HOME/dxr/xref-scripts/dxr.js"
# Ou bien :
export CXXFLAGS="-fplugin=$HOME/dxr/tools/gcc-dehydra/dehydra-gcc/gcc_dehydra.so -fplugin-arg=\"$HOME/dxr/tools/xref-scripts/moz_types.js $SOURCEROOT\""
o Modifier le chemin dans le script $HOME/dxr/xref-scripts/dxr.js :
var srcroot = "/home/dave/mozilla-central/src/";
à remplacer par
var srcroot = this.arguments[0] # Il faut mettre à jour les arguments d'appel ensuite !!
ou bien
var srcroot = "
o Créer le fichier wwwdir référencé par dxr.config :
mkdir /var/www/html/dxr
Creation du site DXR : Calcul des références du source du projet
o Le script suivant fait le boulot :
$HOME/dxr/xref-scripts/run-dxr.py -f /path/to/web/dir/dxr.config
o Il réalise les étapes suivantes :
o Compilation du source avec Dehyda + dxr.js :
o Post-processing dans la base dxr.sqlite :
o Création des pages statiques html
o index de recherche glimpse
Une fois les arguements pris en compte, parseconfig parcourt la config et appelle indextree pour chacune des sections de source présente dedans
indextree appelle en fait :
build-xref.sh : pour compiler le source
Appel avec [buildxref, sourcedir, objdir, mozconfig, xrefscripts, dbdir, dbname, wwwdir, tree]
build-html.sh : pour créer les pages html
build-glimpseidx.sh : pour créer les index glimpse
Les deux créant ceci dans les répertoires configurés
o Il crée l’arbo suivante :
/var/www/html/dxr (racine configurée dans /www/dxr.config)
/index.html (auto-generated during run-dxr.py)
/mozilla-central (symnlink to mozilla-central-current)
/mozilla-central-current
/.dxr_xref
/mozilla-central.sqlite
/.glimpse* (glimpse index files)
/accessible (copie de tous les fichiers sources depuis le répertoire source)
Commentaires