Including pari and znpoly in the same file

55 views
Skip to first unread message

David Roe

unread,
Apr 17, 2012, 4:56:52 PM4/17/12
to sage-devel
I'm working on some p-adic modular symbols code, and am writing a file that uses zn_poly.  Unfortunately, when I try to compile, I get the following error from gcc:

$SAGE_ROOT/local/include/zn_poly/zn_poly.h:72: error: redefinition of typedef 'pari_ulong'
$SAGE_ROOT/local/include/pari/parigen.h:19: error: previous declaration of 'pari_ulong' was here

The relevant lines in those header files are:
zn_poly.h:
typedef unsigned long ulong;

parigen.h:
typedef unsigned long pari_ulong;
#define ulong pari_ulong


I don't even need pari in this file, but it's getting included somehow.  Any ideas for how to fix the conflict, or at least how to figure out where parigen.h is getting included?  The cython file I'm working on is accessible at

https://github.com/haikona/OMS/blob/master/sage/modular/overconvergent/pollack/dist.pyx
https://github.com/haikona/OMS/blob/master/sage/modular/overconvergent/pollack/dist.pxd

Thanks,
David

François Bissey

unread,
Apr 17, 2012, 5:25:55 PM4/17/12
to sage-...@googlegroups.com
They are essentially the same type. In sage-on-gentoo we actually did a small
patch to zn_poly because ulong is defined in both flint and zn_poly and it gave
rise to problems. Essentially it boils to this:
-typedef unsigned long ulong;
+#ifndef ulong
+#define ulong unsigned long
+#endif

That should solve your issue but of course it is a hack if we don't patch
zn_poly as shipped by sage.

Francois

David Roe

unread,
Apr 17, 2012, 5:30:45 PM4/17/12
to sage-...@googlegroups.com
Patching zn_poly in Sage sounds good to me....

Does anyone know if this change has been incorporated into FLINT 2?  It's not worth spending a lot of time on it if it will be fixed once we upgrade to FLINT 2.
David


--
To post to this group, send an email to sage-...@googlegroups.com
To unsubscribe from this group, send an email to sage-devel+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Bill Hart

unread,
Apr 17, 2012, 6:44:07 PM4/17/12
to sage-devel
At the present moment flint 2.3 does not use zn_poly.

We may be incorporating some code from zn_poly in flint 2.3 in the
future, but will not need to have a dependence on zn_poly proper.

Bill.
> >https://github.com/haikona/OMS/blob/master/sage/modular/overconvergen...
> > > ck/dist.pyx
>
> >https://github.com/haikona/OMS/blob/master/sage/modular/overconvergen...

leif

unread,
Apr 19, 2012, 4:27:00 PM4/19/12
to sage-devel
On 17 Apr., 23:30, David Roe <roed.m...@gmail.com> wrote:
> Patching zn_poly in Sage sounds good to me....

I could include such a patch into the zn_poly spkg at

http://trac.sagemath.org/sage_trac/ticket/12433


-leif

> On Tue, Apr 17, 2012 at 17:25, François Bissey <francois.bis...@canterbury.ac.nz> wrote:
> > On Tue, 17 Apr 2012 16:56:52 David Roe wrote:
> > > I'm working on some p-adic modular symbols code, and am writing a file
> > that
> > > uses zn_poly.  Unfortunately, when I try to compile, I get the following
> > > error from gcc:
>
> > > $SAGE_ROOT/local/include/zn_poly/zn_poly.h:72: error: redefinition of
> > > typedef 'pari_ulong'
> > > $SAGE_ROOT/local/include/pari/parigen.h:19: error: previous declaration
> > of
> > > 'pari_ulong' was here
>
> > > The relevant lines in those header files are:
> > > zn_poly.h:
> > > typedef unsigned long ulong;
>
> > > parigen.h:
> > > typedef unsigned long pari_ulong;
> > > #define ulong pari_ulong
>
> > > I don't even need pari in this file, but it's getting included somehow.
> > > Any ideas for how to fix the conflict, or at least how to figure out
> > where
> > > parigen.h is getting included?  The cython file I'm working on is
> > > accessible at
>
> >https://github.com/haikona/OMS/blob/master/sage/modular/overconvergen...
> > > ck/dist.pyx
>
> >https://github.com/haikona/OMS/blob/master/sage/modular/overconvergen...

leif

unread,
Apr 19, 2012, 4:36:02 PM4/19/12
to sage-devel
On 18 Apr., 00:44, Bill Hart <goodwillh...@googlemail.com> wrote:
> At the present moment flint 2.3 does not use zn_poly.

zn_poly's 'configure' has some '--use-flint' option, but we currently
don't use that either.


-leif

David Roe

unread,
Apr 19, 2012, 4:37:06 PM4/19/12
to sage-...@googlegroups.com
That would be great.
David

leif

unread,
Apr 20, 2012, 11:20:44 AM4/20/12
to sage-devel
On 17 Apr., 23:25, François Bissey <francois.bis...@canterbury.ac.nz>
wrote:
> They are essentially the same type. In sage-on-gentoo we actually did a small
> patch to zn_poly because ulong is defined in both flint and zn_poly and it gave
> rise to problems. Essentially it boils to this:
> -typedef unsigned long  ulong;
> +#ifndef ulong
> +#define ulong unsigned long
> +#endif

I changed the typedef in zn_poly.h to

#undef ulong
#define ulong unsigned long

and then also had to fix the order of includes in profiler/profiler.c
since otherwise the build breaks on Solaris; see attached (p8) diff at

http://trac.sagemath.org/sage_trac/ticket/12433 (needs review...)


-leif
Reply all
Reply to author
Forward
0 new messages