SALOME 9.15.0 native DB13 : correctifs nécessaires pour compiler et lancer sous Debian 13

Bonjour,

Je signale ici plusieurs points rencontrés lors de la compilation de SALOME 9.15.0 native DB13 sous Debian 13, afin de contribuer à l’amélioration de l’installation sur cette plate-forme. C’est l’IA qui m’a aidé à installer et qui a rédigé le mesage ci-dessous. Je lui ai demandé de retirer tout ce qui avait déjà été publié sur ce site.
—————

Configuration utilisée :

  • Distribution : Debian 13

  • Archive : SALOME-9.15.0-native-DB13-SRC

  • Python système : 3.13

  • Compilation par SAT avec l’application SALOME-9.15.0-native

La compilation complète a finalement réussi et l’interface graphique se lance avec ./binsalome, mais plusieurs corrections ont été nécessaires.

  1. python3-nose signalé manquant par --check_system

./sat/sat config SALOME-9.15.0-native --check_system signalait :

python3-nose : KO

Sur Debian 13, le paquet python3-nose n’est pas disponible dans les dépôts standard. La compilation a néanmoins pu continuer, car SALOME fournit aussi nose_py3.

Suggestion : adapter la liste des dépendances Debian 13 pour éviter de signaler python3-nose comme dépendance système obligatoire, ou le remplacer par le mécanisme déjà fourni par nose_py3.

  1. mcut : échec sur utest, branche master inexistante

La compilation de mcut échouait pendant la récupération de utest :

fatal : référence invalide : master
Failed to checkout tag: 'master'

Fichier concerné :

SOURCES/mcut/tests/CMakeLists.txt

Bloc initial :

FetchContent_Populate(
    utest
    GIT_REPOSITORY                   https://github.com/sheredom/utest.h.git
    GIT_TAG          master
    GIT_PROGRESS FALSE
)

Correctif appliqué :

FetchContent_Populate(
    utest
    GIT_REPOSITORY                   https://github.com/sheredom/utest.h.git
    GIT_TAG          origin/main
    GIT_PROGRESS FALSE
)

Suggestion : remplacer GIT_TAG master par une référence valide, idéalement un identifiant de révision fixe plutôt que origin/main, afin de rendre la compilation reproductible.

  1. mcut : échec dans mio sur getline et ssize_t

Après correction du point précédent, mcut échouait ensuite dans le code C de mio :

unknown type name ‘ssize_t’
implicit declaration of function ‘getline’

Le correctif appliqué a été d’ajouter _GNU_SOURCE aux options C dans :

PROJECT/products/compil_scripts/mcut.sh

Après :

CMAKE_OPTIONS=

ajout de :

CMAKE_OPTIONS+=" -DCMAKE_C_FLAGS:STRING=-D_GNU_SOURCE"

Suggestion : ajouter cette option dans le script de compilation de mcut, ou corriger les sources mio pour inclure les en-têtes et macros appropriés.

  1. PERSALYS : échec Sphinx avec erreur d’encodage ASCII

La compilation de PERSALYS échouait pendant la génération de la documentation Sphinx :

Encoding error:
'ascii' codec can't decode byte 0xc3 in position 1172: ordinal not in range(128)

La locale utilisateur était pourtant bien en UTF-8 :

LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"

Fichier modifié :

PROJECT/products/compil_scripts/PERSALYS-v18.0.sh

Bloc autour de USE_SPHINX modifié ainsi :

elif [ "$DIST_NAME$DIST_VERSION" == "DB13" ]; then
    CMAKE_OPTIONS+=" -DUSE_SPHINX=OFF" # Sphinx fails with an ASCII decoding error on Debian 13
else
    CMAKE_OPTIONS+=" -DUSE_SPHINX=ON"
fi

Après cette modification, PERSALYS a compilé.

Suggestion : désactiver Sphinx par défaut pour Debian 13, comme c’est déjà fait pour certaines autres plates-formes, ou corriger l’environnement d’exécution de Sphinx pour garantir un encodage UTF-8.

  1. PyQt5.sip manquant pendant la compilation de GUI

Pendant la compilation de GUI, l’erreur suivante apparaissait :

ModuleNotFoundError: No module named 'PyQt5.sip'

Le fichier sip.cpython-313-x86_64-linux-gnu.so existait dans :

INSTALL/PyQt/sip/lib/python3.13/site-packages/dist-packages/PyQt5/
INSTALL/sip/lib/python3.13/site-packages/dist-packages/PyQt5/

mais il manquait dans le paquet PyQt5 principal :

INSTALL/PyQt/lib/python3.13/site-packages/PyQt5/

Correctif appliqué :

cp -av \
  INSTALL/PyQt/sip/lib/python3.13/site-packages/dist-packages/PyQt5/sip.cpython-313-x86_64-linux-gnu.so \
  INSTALL/PyQt/lib/python3.13/site-packages/PyQt5/

Après cela, GUI a compilé.

  1. PyQt5.sip manquant au lancement avec binsalome

Après compilation complète, ./binsalome lançait l’interface graphique, mais affichait encore :

Traceback (most recent call last):
  File ".../BINARIES-DB13/GUI/lib/python3.13/site-packages/salome/salome_pluginsmanager.py", line 94, in <module>
    import SalomePyQt
ModuleNotFoundError: No module named 'PyQt5.sip'

Vérification :

BINARIES-DB13/PyQt/sip/lib/python3.13/site-packages/dist-packages/PyQt5/sip.cpython-313-x86_64-linux-gnu.so
BINARIES-DB13/sip/lib/python3.13/site-packages/dist-packages/PyQt5/sip.cpython-313-x86_64-linux-gnu.so

Mais le module manquait dans :

BINARIES-DB13/PyQt/lib/python3.13/site-packages/PyQt5/

Correctif final appliqué :

cd SALOME-9.15.0-native-DB13-SRC

PYQT5_MAIN="BINARIES-DB13/PyQt/lib/python3.13/site-packages/PyQt5"
SIP_SRC="BINARIES-DB13/PyQt/sip/lib/python3.13/site-packages/dist-packages/PyQt5/sip.cpython-313-x86_64-linux-gnu.so"
SIP_DST="$PYQT5_MAIN/sip.cpython-313-x86_64-linux-gnu.so"

ln -srf "$SIP_SRC" "$SIP_DST"

Après ce lien symbolique, ./binsalome fonctionne sans cette erreur.

Suggestion : lors de la création de BINARIES-DB13, faire en sorte que PyQt5.sip soit accessible depuis le paquet PyQt5 principal utilisé au lancement, ou ajouter automatiquement le répertoire PyQt/sip/lib/python3.13/site-packages/dist-packages au PYTHONPATH.

  1. Autres points rencontrés mais déjà proches de discussions existantes

J’ai aussi rencontré des points déjà relativement documentés dans le forum :

  • OpenTURNS / otfftw : nécessité d’installer libfftw3-dev.

  • ParaView : reprise possible par compilation ciblée du produit, sans nettoyage complet dans mon cas.

  • PERSALYS : désactivation de Sphinx déjà utilisée sur d’autres plates-formes.

Conclusion :

SALOME 9.15.0 native DB13 fonctionne finalement sous Debian 13 après ces corrections. Les deux points les plus spécifiques à corriger dans l’empaquetage DB13 semblent être :

  • la gestion de PyQt5.sip dans INSTALL puis dans BINARIES-DB13/PyQt/lib ;

  • la compilation de mcut, avec utest et mio.

Ces modifications pourraient être intégrées dans les scripts SAT afin de rendre l’installation Debian 13 reproductible.

1 Like