[PYTHON-CRYPTO] M2Crypto build error - _lib.h:5: error: redefinition of typedef 'Py_ssize_t'

Philip Kershaw p.j.kershaw at RL.AC.UK
Tue Oct 16 11:48:48 CEST 2007


Hi Heikki,

See below...

On Monday 15 October 2007 19:01, Heikki Toivonen wrote:
> Philip Kershaw wrote:
> > 0.18.2 still breaks for me unfortunately but I can build by commenting
> > out:
> >
> > /*
> > #if PY_VERSION_HEX < 0x02050000
> > typedef int Py_ssize_t;
> > #endif
> > */
>
> You don't have 0.18.2, because 0.18.2 has this:
>
> #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
> typedef int Py_ssize_t;
> #define PY_SSIZE_T_MAX INT_MAX
> #define PY_SSIZE_T_MIN INT_MIN
> #endif

I quoted the wrong piece of code.  The build _does_ still fail with 0.18.2 and 
the code as you've included above.

However I think the problem lies elsewhere.  I noticed in _m2crypto_wrap.c:

/* Py_ssize_t for old Pythons */
#if PY_VERSION_HEX < 0x02050000
typedef int Py_ssize_t;
#endif

It doesn't follow the formula in PEP 353 that you've used for _lib.h.  If I 
edit the code and change it to:

#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
typedef int Py_ssize_t;
#define PY_SSIZE_T_MAX INT_MAX
#define PY_SSIZE_T_MIN INT_MIN
#endif

I can compile it:

# 
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/ssl/include -I/usr/local/include/python2.4 -I/usr/local/ssl/include -I/root/ndg-downloads/m2crypto-0.18.2/SWIG -c 
SWIG/_m2crypto_wrap.c -o 
build/temp.linux-i686-2.4/SWIG/_m2crypto_wrap.o -DTHREADING

but I have to miss out the swig step as it overwrites _m2crypto_wrap.c.  Given 
this I'm guessing it's a bug in swig's generation of the wrap file.

Cheers,
Phil



More information about the python-crypto mailing list