Compilation sous GNU/Linux x86_64

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

deap
Messages : 4
Inscription : mar. août 23, 2011 7:48 am

Compilation sous GNU/Linux x86_64

Message par deap » ven. août 26, 2011 4:21 pm

Bonjour,

J'ai installé avec succès xcas jusqu'au mois de mai-juin de cette année sur archlinux via une compilation traditionnelle en version 0.9.1 et 0.9.2.
Depuis, j'ai changé de PC, toujours en architecture x86_64 et là, impossible de compiler xcas toutes versions 0.9.x, voici la fin de la sortie pour une compilation 0.9.3 (elle est identique pour les versions 0.9.1 et 0.9.2).

Code : Tout sélectionner

/bin/sh ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I..  -DIN_GIAC -I. -I.. -I. -I..       -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT pari.lo -MD -MP -MF .deps/pari.Tpo -c -o pari.lo pari.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -MT pari.lo -MD -MP -MF .deps/pari.Tpo -c pari.cc  -fPIC -DPIC -o .libs/pari.o
pari.cc: In function ‘giac::gen giac::GEN2gen(long int* const&, const vecteur&)’:
pari.cc:267:43: error: ‘lgeflist’ was not declared in this scope
pari.cc: In function ‘long int* giac::gen2GEN(const giac::gen&, const vecteur&, const giac::context*)’:
pari.cc:468:9: error: ‘struct gp_data’ has no member named ‘env’
pari.cc: In function ‘void giac::pari_lift_combine(const vecteur&, const std::vector<giac::dbgprint_vector<giac::gen> >&, giac::gen&, std::vector<giac::dbgprint_vector<giac::gen> >&)’:
pari.cc:582:69: error: ‘combine_factors’ was not declared in this scope
pari.cc: In function ‘giac::gen giac::pari_exec(const string&, const giac::context*)’:
pari.cc:599:9: error: ‘struct gp_data’ has no member named ‘env’
pari.cc: In function ‘giac::gen giac::in_pari(const giac::gen&, const giac::context*)’:
pari.cc:658:9: error: ‘struct gp_data’ has no member named ‘env’
pari.cc:661:11: error: ‘struct gp_data’ has no member named ‘env’
pari.cc:681:25: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
pari.cc:695:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
pari.cc:715:37: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
pari.cc:723:34: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
make[2]: *** [pari.lo] Error 1
make[2]: Leaving directory `/home/deap/build/xcas/src/giac-0.9.3/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/deap/build/xcas/src/giac-0.9.3'
make: *** [all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
Est-ce que quelqu'un aurait un remède à ce problème ?
Un grand merci d'avance !

deap
Messages : 4
Inscription : mar. août 23, 2011 7:48 am

Re: Compilation sous GNU/Linux x86_64

Message par deap » ven. août 26, 2011 4:40 pm

Petite précisions, j'utilise :
- fltk 1.1 ;
- gmp 5.02 ;
- mpfr 3.0.1 ;
- readline 6.2.001 ;
- pari 2.5.0 ;
- gsl 1.15.

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » ven. août 26, 2011 6:11 pm

Giac n'est pour l'instant pas compatible avec pari 2.5, il faut donc soit installer pari 2.3 soit ajouter a la config --disable-pari

deap
Messages : 4
Inscription : mar. août 23, 2011 7:48 am

Re: Compilation sous GNU/Linux x86_64

Message par deap » ven. août 26, 2011 7:03 pm

Merci pour la réponse ultra-rapide !

deap
Messages : 4
Inscription : mar. août 23, 2011 7:48 am

Re: Compilation sous GNU/Linux x86_64

Message par deap » ven. août 26, 2011 8:25 pm

J'ai ajouté toutes les précisions nécessaires à l'installation sous archlinux : https://aur.archlinux.org/packages.php?ID=30106
La 0.9.2 build sans problème.

Merci encore !

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par frederic han » sam. août 27, 2011 9:02 am

Bonjour,

Le probleme de pari-2.5 se pose maintenant pour freeBSD aussi qui vient d'upgrader pari.

Est ce que ca vaut le coup de modifier le paquet paquet ou bien est ce que la prise en charge de 2.5 est prevue pour bientot?

NB: est ce que le lien ftp
ftp-fourier.ujf-grenoble.fr/xcas/ doit etre definitivement change vers
ftp-fourier.ujf-grenoble.fr/linux/xcas/
?

j'ai aussi l'impression que les sources sont plus recents sur:
http www-fourier.ujf-grenoble.fr/~parisse/giac


Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » sam. août 27, 2011 11:26 am

salut,

je n'ai aucune idee de quand je pourrai (ou quelqu'un d'autre de bonne volonte?) faire les changements necessaires pour passer a pari 2.5. Je crois que ce n'est pas tres simple car le parser de pari a bien change (on ne peut pas dire que pari 2.5 soit compatible avec pari 2.3 pour le programmeur C).
Pour le ftp, je ne sais pas, je demanderai a notre sysadmin. Et en effet la mise a jour des sources est plus frequente avec le lien http.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par frederic han » sam. août 27, 2011 2:56 pm

En fait il y a peu d'erreurs:

je n'ai pas regarde la premiere, j'ai donc juste fait:
/*fred case t_LIST:
return t_VEC2gen(G,vars,2,lgeflist(G));*/

celle avec le champ env de GP_DATA qui a disparu. La j'ai tente de remplacer par:

jmp_buf env; //(une def dans chaquefonction) puis
if (setjmp(env)){
tous les // if (setjmp(GP_DATA->env)){


un changement de type const:

687,688c681
< // char * s =i->second->code;
< const char * s =i->second->code;
---
> char * s =i->second->code;


et combine_factors qui n'est plus exporte par pari. J'ai remarque qu'il y en avait un qui ressemblait dans:
basemath/QX_factor.c:combine_factors(GEN target, GEN famod, GEN p, long klim)

si je supprime cet appel dans pari.cc avec les modifications ci dessus, alors giac compile bien, et un petit test sur ifactor, pari(), pari_znorder fonctionnent, pari_factor(100!)

As tu des idees?
Fred

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par frederic han » sam. août 27, 2011 11:24 pm

pour l'instant je ne remarque pas de pb avec les appel depuis xcas de fonctions pari.
Ex: pari_matdet(M) ...

seul pari(2) pose pb:
[Thread debugging using libthread_db enabled]
// Using locale /home/fred/xcas093/share/locale
// [New Thread 0xb5926b70 (LWP 3807)]
*** at top-level: 2()
*** ^---
*** not a function in function call

Program received signal SIGSEGV, Segmentation fault.

mais pari("",2+2) ou pari("gcd",4,6) fonctionnent.

Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » dim. août 28, 2011 9:43 am

tres encourageant, ca devrait necessiter moins de travail que ce que je craignais!
je regarderai sans doute la semaine prochaine ou en debut de suivante.
a+

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » lun. août 29, 2011 4:16 pm

je rajoute le traitement des gen de type <_IDNT a part pour eviter l'erreur du 2().
J'ajoute aussi
#ifndef PARI23
#define lgeflist(x) (((long*)(x))[1])
#endif
pour la 1ere erreur, mais je n'ai pas encore teste.
#define PARI23 permettra de compiler avec pari 2.3 (a moins qu'il y ait un define dans pari qui permette de distinguer les 2 versions?).
Je supprime pour l'instant pari_lift_combine avec pari 2.5, de toutes facons NTL le fait.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par frederic han » lun. août 29, 2011 7:34 pm

NB: il y a maintenant: list_nmax (ca compile aussi avec ca)

cf: http://pari.math.u-bordeaux.fr/pub/pari ... evelop.pdf
page 6

mais vu qu'il disent: Don’t use t_LISTs in pure library mode, il y a peu de risque que giac ait affaire a ca.

Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » mar. août 30, 2011 6:43 am

merci, je met donc list_nmax, j'aime mieux que de definir une macro.
je rajoute un test de PARI_VERSION_CONTROL<132096 poru savoir si on est en pari 2.3 ou plus.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par frederic han » mar. août 30, 2011 9:59 am

Ca compile, pari(2) marche
mais pas pari(2+2) ni pari(c=2) (qui font encore 2+2())

il y a aussi le bug suivant:
pari();
ec:=pari_ellinit([0,0,0,2,3]);
pari_elltors(ec) fonctionne et retourne:
[2,[2],[[-1,0]]]
mais
ec:=pari_ellinit([0,0,0,-3,1])
pari_elltors(ec) qui retourne avec pari2.3: [1,[],[]]
donne ici:


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb56a3b70 (LWP 13796)]
0xb7634583 in t_INT2gen (G=@0xb56a2398, vars=...) at pari.cc:102


Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Compilation sous GNU/Linux x86_64

Message par parisse » mar. août 30, 2011 11:17 am

je ne sais pas pourquoi, il semble qu'il n'arrive pas a convertir le t_VEC (ou t_COL) en un vecteur giac, plus precisement le 1er argument semble etre de type t_INT mais il y a probablement une erreur de memoire quelque part, parce que sa longueur est de 1 mais setsigne(G,1) plante dessus. A moins que ca ne soit une valeur non modifiable (ce qui expliquerait la difference entre le 1 et le 2, et dans ce cas il faudrait creer une copie en memoire du 1 ou s'affranchir du signe autrement), une idee?
[Edit]
apparamment si on commente les 2 setsigne ca ne plante plus. Reste a savoir si les entiers sont bien convertis!

Répondre