Opened 17 years ago

Last modified 17 years ago

#1379 closed defect

ngpython bindings from cvs do not compile on amd64/python2.5 — at Version 2

Reported by: schut@… Owned by: hobu
Priority: highest Milestone: 1.4.2
Component: PythonBindings Version: 1.4.0
Severity: critical Keywords:
Cc:

Description (last modified by hobu)

ngpython bindings from cvs do not compile on amd64/python2.5

On my pc, probably because it's an amd64 and maybe because I'm running python2.5, I get the following error during make install:

running build_ext
building '_gdal' extension
creating build/temp.linux-x86_64-2.5
x86_64-pc-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr -I/usr/lib64/python2.5/site-packages/numpy/core/include -I/usr/include/python2.5 -c gdal_wrap.cpp -o build/temp.linux-x86_64-2.5/gdal_wrap.o
gdal_wrap.cpp: In function 'int SWIG_Python_ConvertFunctionPtr(PyObject*, void**, swig_type_info*)':
gdal_wrap.cpp:2051: error: invalid conversion from 'const char*' to 'char*'
gdal_wrap.cpp: In function 'int SWIG_AsCharPtrAndSize(PyObject*, char**, size_t*, int*)':
gdal_wrap.cpp:2657: error: cannot convert 'int*' to 'Py_ssize_t*' for argument '3' to 'int PyString_AsStringAndSize(PyObject*, char**, Py_ssize_t*)'
gdal_wrap.cpp: In function 'PyObject* _wrap_Dataset_WriteRaster(PyObject*, PyObject*, PyObject*)':
gdal_wrap.cpp:7603: error: cannot convert 'int*' to 'Py_ssize_t*' for argument '3' to 'int PyString_AsStringAndSize(PyObject*, char**, Py_ssize_t*)'
gdal_wrap.cpp: In function 'PyObject* _wrap_Band_WriteRaster(PyObject*, PyObject*, PyObject*)':
gdal_wrap.cpp:9168: error: cannot convert 'int*' to 'Py_ssize_t*' for argument '3' to 'int PyString_AsStringAndSize(PyObject*, char**, Py_ssize_t*)'
gdal_wrap.cpp: In function 'void SWIG_Python_FixMethods(PyMethodDef*, swig_const_info*, swig_type_info**, swig_type_info**)':
gdal_wrap.cpp:11167: error: invalid conversion from 'const char*' to 'char*'
error: command 'x86_64-pc-linux-gnu-gcc' failed with exit status 1

Change History (3)

comment:1 by warmerdam, 17 years ago

I have confirmed that the swig generated bindings are not Python 2.5
compatible.  Two main problems:

1)  ml_doc changed to "const char *" from "const char*" so lots of use of it
needs to be handled as const char *. 

2) PyString_AsStringAndSize()'s last argument is now Py_ssize_t *, not int *
as it was in 2.4, and at least on 64bit platforms this is actually a different
size.  

I prepared hacked bindings that work on Python 2.5, but these modifications
are not in CVS and not part of the normal process.  So we need to keep this
bug report open till the issue is properly dealh with.

  http://www.gdal.org/tmp/py25ng.tar.gz




  

by warmerdam, 17 years ago

Attachment: 25.patch added

Patch for 2.5 support.

comment:2 by hobu, 17 years ago

Description: modified (diff)
Milestone: 1.5.0
Owner: changed from warmerdam to hobu
Status: assignednew

This is a swig problem. I believe it has been fixed in later versions, but we haven't yet gone past 1.3.31. We would have to kick everyone forward to a new version of swig, which causes churn. Pushing this off to look at it again for 1.5.

Note: See TracTickets for help on using tickets.