Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2016:12_02

Commit 2016-12-02

Portage SWIG 3

Suite à un problème dans mes libs (mon python ne contenait pas ssl, ce qui pouvait faire planter la version student dans certaines conditions), j'ai décidé de recompiler python 2.7.12. Python étant pas loin de la base de toutes nos libs, je devais recompiler pas mal de choses et j'en ai donc profité pour mettre à jour toutes mes libs. J'ai par exemple installé le Parallel Studio 2015 pour utiliser les MKL 11.2 (et les TBB sans les recompiler). Parmi ces upgrades, j'ai naïvement utilisé SWIG 3 au lieu de SWIG 2.x, ce qui m'a posé quelques problèmes lors du lancement de certains cas-tests. La batterie ne passait pas.

Puisque la version MacOSX utilise SWIG 3, je me suis dit qu'il serait intéressant de migrer la batterie vers SWIG 3 (sans perdre la compatibilité SWIG 2).

Le problème est simple: SWIG 3 distingue les booléens (bool) des entiers (int) et n'effectue plus de conversion implicite boolint. Ca veut dire que des commandes du type:

Blas.setDynamic(0)     # 0 => False

ou

TransfiniteMesher2D(sideset(12)).execute2(0)    # 0 => False

ou encore

prp.put(LSEAS, 1)    # 1 => True

ne marchent plus…

J'ai donc modifié itérativement tous les tests de la batterie pour qu'ils passent à nouveau (il “suffit” de mettre des booléens là ou on a mis des entiers. Ca n'a pas été simple puisque j'ai même trouvé des 2 pour représenter True.

Remarque: dans mon opération d'upgrade, j'ai testé gmsh 2.14.1 qui fait planter de manière assez sérieuse le test apps.rupture.indentation (la topologie de certains éléments de contact est mauvaise après lecture du .msh). Je suis donc resté au gmsh 2.9.1 de mes anciennes libs. Je reglerai ce problème plus tard.

Ma config actuelle de mes libs est visible ici: Versions des libs/progs installés sur les machines du service

boman 2016/12/02 08:03

commit/2016/12_02.txt · Last modified: 2018/05/04 15:54 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki