This is an old revision of the document!
Table of Contents
Doc Développeur
Ce document explique de manière simple ce qu'il faut connaitre pour développer dans Metafor.
Choix de la plateforme
A priori, il est possible de développer sur n'importe quelle plateforme sur laquelle Metafor compile.
machine | blueberry | spring | thorgal | fabulous | corto | garfield-VB | garfield |
---|---|---|---|---|---|---|---|
Batterie ICC | Batterie GCC | Libs de Luc | |||||
OS | Debian 7.5 | Debian 7.5 | Debian 7.5 | SL 5.5 | win-8.1 | win-7 | ubuntu 14.01 |
gcc / VS | 4.7.2 | 4.7.2 | 4.7.2 | 4.3.4 | vs 2012 | vs 2012 | 4.8.2 |
icc | 14.0.3 | 14.0.3 | 14.0.3 | 12.0.0 | — | 14.0 | 14.0.2 |
MKL | 11.1-3 | 11.1-3 | 11.1-3 | 10.3 | 10.3 | 11.1.2.1 | 11.1-2 |
TBB | 4.2 | 4.2 | 4.2 | 4.2 | 4.1-4 | 4.2-3 | 4.2 |
SWIG | 2.0.7 | 2.0.7 | 2.0.7 | 2.0.3 | 2.0.10 | 2.0.12 | 2.0.7 |
Qt | 4.8.2 | 4.8.2 | 4.8.2 | 4.7.3 | 4.8.5 | 4.8.5 | 4.8.6 |
vtk | 5.10.1 | 5.10.1 | 5.10.1 | 5.6.1 | 5.10.1 | 5.10.1 | 5.8.0 |
CMake | 2.8.9 | 2.8.9 | 2.8.9 | 2.8.4 | 2.8.11.2 | 2.8.12.2 | 2.8.12.2 |
Matlab | 2012a | 2012a | 2012a | 2009a | 2012a | 2012b | 2012a |
Python | 2.7.3 | 2.7.3 | 2.7.3 | 2.7.1 | 2.7.1 | 2.7.5 | 2.7.6 |
SAMCEF | 15.1-03 | 15.1-03 | 15.1-03 | 14.0i8 | — | 13.1 (F7.2) | 15.1-03 |
La machine clifton
ne permet pas de compiler Metafor.
Même si vous connaissez Linux, la machine la plus conviviale est certainement le PC sous Windows vu la qualité du débugeur de Microsoft et les outils associés:
- Incredibuild: compilation partagée sur le réseau
- Araxis Merge: diffs entre fichiers
- Editpad Pro: éditeur texte
- PowerGrep: search/replace dans le source
- …
Si malgré cela vous criez toujours “Fuck Bilou”, libre à vous de développer sous Linux ou Mac mais ce sera sans mon aide et pensez qu'il vous faudra de toutes façons lancer la batterie sous Windows (dans une virtualbox si ça vous amuse).
Extraction des sources - SVN
Les sources de Metafor sont gérées par SVN. Il est donc intéressant de lire un manuel SVN histoire de ne pas faire n'importe quoi (tous les développeurs ont accès en lecture/écriture).
Sous Windows, il est intéressant d'utiliser Tortoise SVN, interface graphique de SVN pour Windows.
infos sur la procédure pour un checkout svn: commit du 03/07/2007
Compilation sous Windows
Avant même d'installer les libs, il faut installer le compilateur (Visual Studio). Prendre la dernière version disponible sur le serveur FTP dans apps/_dev. Metafor nécessite une volée de libs (par exemple Python, Qt, VTK, Swig, TCL/TK…) qu'il faut compiler. La solution simple consiste à reprendre les “libs de Luc”:
- Vérifiez que vous n'avez pas d'ancienne libs ou de python préinstallés sur votre machine
- Dézippez l'archive de Luc sur votre PC (
LibsVs2012-XXXXXX.zip
obtenue sur le FTP de Metafor) - Lisez le fichier
LibsVs2012/README.txt
. Luc vous a mâchouillé tout le travail (plusieurs semaines de boulot - je vous déconseille donc de souffler en sa présence parce que vous trouvez la procédure “longue”). Il ne vous reste plus qu'à lancer une commande du typepython setup.py
pour que tout soit configuré automatiquement. - Remarque : pour lancer
setup.py
en mode administrateur dans Windows 7, cliquez surDémarrer
, tapezcmd
dans la case prévue et pressez Ctrl+Shift+Enter (au lieu de Enter). C'est très intuitif mais mieux vaut quand même préciser. - Le projet est géré par CMake (pas besoin de l'installer, il est dans les libs de Luc), procédure CMake détaillée : commit du 13/06/2010
Configuration des comptes Linux pour Metafor
Une fois encore la tâche vous est pré-machée (nécessite subversion installé):
- Demandez un compte (ou créez le si il s'agit de votre machine)
- Pour chaque machine (blueberry/spring/thorgal):
- Connectez vous sous votre compte
- téléchargez le module de configuration des comptes : (remplacer userName par votre identifiant)
svn co svn+ssh://userName@clifton.ltas.ulg.ac.be/home/metafor/SVN/linuxbin bin
- Ajoutez à la fin du fichier .profile (ou .bash_profile en fonction de la distribution linux)
# added by user #echo "Exec .profile" . $HOME/bin/cfg/loop.sh ; fct_loop profile $* ; unset fct_loop # end added by user
- Ajoutez à la fin du fichier .bashrc
# added by user #echo "Exec .bashrc" . $HOME/bin/cfg/loop.sh ; fct_loop bashrc $* ; unset fct_loop # end added by user
- Ajouter un fichier .forward contenant votre adresse mail ULG
- faite un lien symbolique du fichier de license relatif à la machine à laquelle vous etes connectés vers ~/metafor.lic
$User@~ > ln -s ~/bin/mtfLicense/stations.lic ~/metafor.lic # sur les stations $User@~ > ln -s ~/bin/mtfLicense/fabulous.lic ~/metafor.lic # sur fabulous
- relancez votre terminal
- si la config de votre machine de correspond pas au défaut, créez une configuration représentant votre machine dans le répertoire bin
Compilation sous Linux
Se loger sur blueberry, créer un dossier Metafor et copier oo_meta et oo_nda dedans.
- dans le répertoire Metafor, créer un répertoire metabin
- dans metabin, taper : cmake -C ../oo_meta/CMake/blueberry-icc.cmake -D CMAKE_BUILD_TYPE=Debug ../oo_meta
- pour compiler avec 4 processeurs : make -j 4
Transfert des nouveaux développements sous Unix
Une fois vos nouvelles fonctionnalités ajoutées à votre version locale de Metafor, il faut s'assurer que celle-ci fonctionne toujours sous Unix. Vous pouvez aussi avoir besoin de vous faire une version Unix pour lancer une série de calculs avec votre nouvelle version sur les stations. Dans ces deux cas, il faut transférer vos sources:
- Zippez vos sources (répertoires
oo_meta
,oo_nda
) ⇒dev.zip
- Ouvrez un terminal sur cette machine (avec Putty)
- Utilisez
comp.py
(si vous avez correctement configuré votre~/bin
voir + haut). - Suivez les instructions à l'écran
Vérifier la batterie de test
A tout moment, il est possible de lancer la batterie de tests sur une des plateformes et de visualiser l'étendue des dégâts dans sa version de développement. Il est conseillé de lancer cette batterie régulièrement histoire de ne pas avoir trop de surprises lorsqu'il s'agira de fusionner sa version avec la version officielle.
La batterie de tests de Metafor DOIT être vérifiée à chaque modification du source avant la création d'une nouvelle version (commit).
Elle est multi-plateforme. Grâce à ça :
- On peut tester la validité des tests sur différentes plate-formes/compilateurs et donc s'assurer de la portabilité maximale.
- On peut quantifier les rapports de puissances en jeu (du genre cette machine est 2x moins rapide en moyenne que celle-ci) sur de vrais tests.
La procédure est assez simple pour éviter de passer plus de temps à lancer la batterie qu'à développer du code.
Il suffit de compiler Metafor et lancer le script de batterie (dans oo_meta
- batterie.py
).
On suppose ici que Bacon/Gmsh/Triangle/Matlab/etc sont accessibles dans le PATH
. Sous Windows par exemple, dans la fenêtre cmd, pour lancer la batterie avec 4 CPU :
cd oo_meta\oo_metaBin\bin\Release python battery.py -j 4 [attendre] python battery.py diff [un fichier HTML ''diff'' est créé dans oo_meta/apps/verif]
Sous Unix, il est possible d'utiliser le script comp.py
. Ce script automatise la procédure et permet, par exemple, de lancer Bacon sur une autre machine que celle sur laquelle on lance la batterie (ce n'est plus utile aujourd'hui puisque Bacon est installé sur toutes les machines).
Il faut le copier à partir de oo_meta/toolbox
dans son ~/bin
et ensuite le lancer
comp.py [suivre les instructions du menu]
Le script dézippe vos sources, les compile et lance la batterie en arrière plan. A chaque étape, il vous envoie un mail pour vous tenir au courant de son avancement. Au final (en général après une nuit), on retrouve dans sa boite mail un résumé des éventuels problèmes.
Commit
Une fois qu'on a des beaux développements qui marchent bien et qui vont vite, il est certainement temps de penser à “commiter ses trucs”, c'est-à-dire de fusionner sa version de développement avec la version officielle. Pour ce faire, il suffit de suivre ces points :
- Faire un “
svn update
” pour être à jour et gérer les éventuels conflits. - lancer la batterie sur toutes les machines (linux-32, linux-64, PC).
- Récolter les temps cpu et mettre à jour le tableau des temps CPU si nécessaire.
- Vérifier que vous avez “
svn add/remove
” tous vos nouveaux fichiers ou les fichiers que vous avez supprimés. - Faire un “
svn commit
” (sous Windows). - Commiter les fichiers verifs de la batterie sous linux : dans le répertoire
oo_meta/apps/verif/
.- “
svn commit *-Linux64-icc.txt
” (blueberry) - “
svn commit *-Linux64-gcc.txt
” (gaston)
- Ecrire une petite page web sur ce site pour informer les autres.
Pour plus de détails sur comment commiter de façon systématique, il existe un document: memos.
Autres documents
— Romain BOMAN 2009/06/14 11:52