ibex-team / ibex-lib

IBEX is a C++ library for constraint processing over real numbers.
http://ibex-team.github.io/ibex-lib/
GNU Lesser General Public License v3.0
67 stars 51 forks source link

Compilation sur armv8 64bits #505

Open JulienDamers opened 3 years ago

JulienDamers commented 3 years ago

Bonjour dans le cadre d'un projet je dois utiliser CODAC(et donc IBEX) avec GAOL sur une RPI3B+ (ARMv8) munie de Raspberry Pi OS 64bits. J'ai remarqué que la version de GAOL intégrée dans Ibex était trop ancienne pour supporter cette architecture (en particulier la version de mathlib, il faut minimum la version 2.1.1).

J'ai tout de même réussi en procédant de la façon suivante:

FindGaol.cmake à la ligne 39 la regex est incorrecte il faut remplacer "gaol \"[0-9]+\.[0-9]+\.[0-9]+" par "gaol \"[0-9]+[.][0-9]+[.][0-9]+"

FindMathlib.cmake à la ligne 36 la regex est incorrecte il faut remplacer "mathlib [0-9]+\.[0-9]+\.[0-9]+" par mathlib [0-9]+[.][0-9]+[.][0-9]+"

(Pour faire simple il faut remplacer les occurences de "." par "[.]")

Ensuite tout fonctionne correctement

Serait-il possible de mettre à jour la version de gaol intégrée afin de pouvoir profiter des dernières amélioration directement ? Et possiblement éviter de faire toutes les étapes à la main pour une compilation sur ARM

cyrilbouvier commented 3 years ago

Concernant la version de GAOL, est-ce que la version 4.2.2 (avec mathlib 2.1.1) fonctionne ou est-ce qu'il faut absolument la version de Github ? On prévoit de mettre à jour la version de Gaol mais j'aimerais attendre la 4.2.3 qui contiendra deux commits de décembre 2020 corrigeants des petites erreurs que j'ai reporté.

Concernant les regex, je viens de tester et elles ont l'air de fonctionner. Qu'est ce que tu obtiens comme erreur ? Qui'est ce qui ne fonctionne pas si tu ne les modifies pas ?

JulienDamers commented 3 years ago

Je n'ai pas testé avec la release 4.2.2. Je pense que c'est possible car c'est surtout la version de mathlib qui semble être le point bloquant.

Concernant les regex, lorsque j'essaie ensuite de compiler CODAC (anciennement tubex) en suivant la procédure donnée sur le site http://codac.io/install/01-installation-full-linux.html, j'obtiens une erreur de ce type :

in FindGaol.cmake line 39: "\." is not a valid escape sequence

Avec un peu de recherche j'ai vu que "\." pouvait parfois être un problème et qu'il fallait le remplacer par "[.]" https://www.ibm.com/support/pages/invalid-escape-sequence-regular-expression

cyrilbouvier commented 3 years ago

J'ai fait les changements de regex dans le commit 7164a9e7d5

Pour les changements de versions de Mathlib et Gaol, je fais tester voir si je peux passer les versions distribuées en 2.1.1 et 4.2.2. @gchabert Pas d'objections pour qu'on mette les nouvelles versions de MathLib et Gaol ?

gchabert commented 3 years ago

@gchabert Pas d'objections pour qu'on mette les nouvelles versions de MathLib et Gaol ?

Non aucune bien sûr.

raphaelchenouard commented 3 years ago

Vous l'avez probablement noté, mais au cas où : dans cette dernière version de Gaol, gdtoa n'est plus utilisé et peut être supprimé des scripts de compilation cmake/waf.

Jordan08 commented 3 years ago

Vous l'avez probablement noté, mais au cas où : dans cette dernière version de Gaol, gdtoa n'est plus utilisé et peut être supprimé des scripts de compilation cmake/waf.

Ça tombe bien, car l'interface avec AMPL ne compile pas avec Gaol, car les librairies ASL/AMPL et GAOL contiennent toutes les deux "dtoa". Si "gdtoa" n'est plus dans GAOL, ça réglera le problème, et l'interface avec AMPL sera opérationnelle.

cyrilbouvier commented 3 years ago

La version sans gdtoa n'est pas encore "sortie" (ça sera la version 4.2.3, la dernière version dispo est la 4.2.2), il y a donc 2 alternatives:

Sachang que pour simplifier les scripts CMake, je serais pour que la version 4.2.3 sans gdtoa soit la version minimal requise par Ibex.