Suite à la migration VTK6, mon Metafor démarrait en plus de 6 secondes sur ma machine Ubuntu. Après une petite analyse, je me suis rendu compte que toutes les libs VTK de ma machine étaient chargées en mémoire suite à une opération de link un peu brutale (je linkais avec toutes les libs, c'est-à-dire VTK_LIBRARIES
). Comme les libs VTK d'Ubuntu sont très complètes (toutes les options sont activées), je me retrouvais ainsi avec plus de 300 libs .so
à charger au démarrage, dont certaines utilisent MPI ou d'autres libs annexes un peu lourdes…
J'ai donc pris le temps de nettoyer tout ça et de sélectionner une à une les libs VTK qu'on utilise réellement dans Metafor. Le but est de linker Metafor qu'avec ce qui est réellement nécessaire.
Un seul petit problème rencontré (qui m'a pris une journée complète pour le résoudre): VTK6.2 d'Ubuntu ne charge pas correctement toutes les libs nécesaires à l'utilisation de vtkXYPlotActor
et, si on ne linke pas explicitement avec vtkRenderingFreeType*
, on se retrouve avec une version de Metafor utilisable mais dont les fenêtres de courbes sont gelées. Est ce un bug VTK6.2 ou un bug Ubuntu, je n'en sais rien. La seule version de comparaison que j'ai est celle sous Windows linkée avec VTK7.1 et le bug n'est pas (plus?) présent.
J'en ai profité pour gérer correctement les warnings liés aux nouvelles POLICY
des CMakes récents. En effet, lorsque CMake change de comportement au cours des versions, les développeurs définissent une nouvelle POLICY
qui, par défaut n'est pas définie (et produit un warning pour avertir les développeurs). Chaque policy peut valoir OLD
(la valeur par défaut - mais qui traduit le “vieux” comportement qui sera supprimé plus tard) et NEW
(le nouveau comportement qui nécessite peut-être une phase de debug des CMakeLists.txt
. J'ai donc vaillamment activé toutes les nouvelles POLICY
à NEW
et… pas de fumée… ça a l'air de marcher.
Autre nettoyage: CMake gère maintenant de manière beaucoup plus transparente les opérations liées à moc
(génération du code source supplémentaire des classes dérivées de Qt pour gérer le système de signaux/slots, pour ceux qui connaissent). J'étais passé à la nouvelle manière de traiter les mocs lors de la migration Qt5 mais cela générait des tas de warnings parce que je n'avais pas complètement supprimé l'ancienne manière de faire (il fallait supprimer tous les #include “machin.moc”
qui sont maintenant vides.
Ce problème est maintenant corrigé.
Le nouveau Qt est linké avec la toute nouvelle libpng qui détecte et signale des erreurs dans les profils de couleur sRGB de certaines images PNG. On voit ces nouveaux warnings au runtime dans la console. J'ai donc passé tous les PNG du repository à travers PngOptimizer. Ça a supprimé tous les warnings et, accessoirement, ça a réduit la taille de quelques uns de ces fichiers.
J'ai continué la compilation macOS (il parait qu'on ne dit plus “OSX”, ni “Mac OS” mais “macOS”) sur le mac du service nommé spirou
. J'arrive maintenant à tout compiler (j'ai ajouté parasolid, MUMPS, oo_nda) et ça tourne plutôt bien (les perfs sont assez bonnes, voire très bonnes). Pour fêter ça, j'ai défini un CMake/macos.cmake
(config de compilation complète) et CMake/macos-student.cmake
(config de compilation sans oo_nda, ni parasolid).
J'ai supprimé CMake/OSX-student.cmake
qui n'est plus utile.
Il me reste à compiler les modules python auxiliaires (PyQt, numpy) et tester vtk sous python.
Pour la batterie, il faudra voir comment gérer les baconneries nécessaires au bon déroulement de celle-ci; samcef n'étant pas disponible sous Mac.
Autre amélioration de la version Mac de Metafor: l'aspect de la fenêtre graphique principale de Metafor était très moche sur Mac dû à un mauvais choix de police de caractères. J'avais eu le même problème sous Ubuntu où j'avais dû trouver une police pas trop laide qui existait et sous Windows et sous Linux. Ce problème a été résolu de manière élégante dans Qt 5.2: c'est la police “monospace” du système qui est choisie (et qui dépend donc de votre “thème” de bureau). J'utilise cette nouvelle fonctionnalité et j'ai donc changé la manière dont les polices de type “monospace” sont choisies. Le rendu est maintenant “parfait” sur toutes les plateformes (quand on utilise Qt 5.2).
Gaetan avait modifié le dcup extrusion en remaillage full automatique pour qu'il passe sur son PC en remaillant à partir d'une qualité squish index de 0.35 au lieu de 0.4 (une qualité de 0 correspond à un carré). Cette nouvelle valeur ne convient pas à mon PC. J'aurais pu remettre le 0.4 mais c'est Gaetan qui n'aurait pas été content. J'ai donc encore diminué la valeur pour déclencher le remaillage encore plus tôt (0.32 au lieu de 0.35). J'ai essayé également la valeur 0.3 qui passe sur mon PC mais elle ne passe pas sur les stations. La valeur 0.25 passe partout… sauf sur thorgal. J'espère que cette nouvelle valeur passe chez Gaetan.
— boman 2017/04/04 16:35