Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:devel:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:devel:start [2014/08/26 08:47] bomandoc:devel:start [2018/05/04 17:14] (current) – removed boman
Line 1: Line 1:
-====== 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    |  14.0.2    |    —        14.0          14.0.3        | 
-^ MKL      |  11.1-3       11.1-3  |  11.1-3    |  11.1-2    |  10.3      |  11.1.2.1      11.1-3        | 
-^ 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.12    |  2.0.10    |  2.0.12        2.0.7         | 
-^ Qt        4.8.2      |  4.8.2    |  4.8.2      4.8.6      4.8.5       4.8.5        4.8.6         | 
-^ vtk      |  5.10.1      5.10.1    5.10.1    |  5.10.1    |  5.10.1    |  5.10.1        5.8.0         | 
-^ CMake    |  2.8.9      |   2.8.9    2.8.9      3.0.1      2.8.11.2  |  2.8.12.2      2.8.12.2      |        
-^ Matlab    2012a      |  2012a    |  2012a      2012b      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: 
-  * [[http://www.xoreax.com/|Incredibuild]]: compilation partagée sur le réseau 
-  * [[http://www.araxis.com/|Araxis Merge]]: diffs entre fichiers 
-  * [[http://www.editpadpro.com/|Editpad Pro]]: éditeur texte 
-  * [[http://www.powergrep.com/|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 [[http://subversion.tigris.org/|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 [[http://tortoisesvn.tigris.org/|Tortoise SVN]], interface graphique de SVN pour Windows. 
- 
-ATTENTION : [[doc:devel:svnConfig|pour éviter d'envoyer des crasses sur les serveurs svn, il est important de configurer correctement son client svn ...]] 
- 
-infos sur la procédure pour un checkout svn: [[http://metafor.ltas.ulg.ac.be/dokuwiki/commit/2007/04_03|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 type ''python setup.py'' pour que tout soit configuré automatiquement. 
-  * **Remarque** : pour lancer ''setup.py'' en mode administrateur dans Windows 7, cliquez sur ''Démarrer'', tapez ''cmd'' 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 : [[http://metafor.ltas.ulg.ac.be/dokuwiki/commit/2010/06_13|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'' 
-  * Transférez ce zip sur une station Unix (avec [[http://winscp.net/|WinSCP]], [[http://www.filezilla.fr/|Filezilla]], ...). 
-  * Ouvrez un terminal sur cette machine (avec [[http://www.putty.org/|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 ===== 
- 
-  * [[.:python]] 
-  * [[.:vtk]] 
-  * [[.:svn]] 
-  * [[.:debianLenny]] 
-  * [[.:Profilage de code sous VisualStudio 2012]] 
-  * [[.:profilageLinux]] 
-  * [[.:cluster]] 
-  * [[.:slurm]] 
- 
- 
- --- //[[r_boman@yahoo.fr|Romain BOMAN]] 2009/06/14 11:52// 
doc/devel/start.1409035653.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki