Bug 140302 - kdebindings-3.5.6 build broken with python 2.4
Summary: kdebindings-3.5.6 build broken with python 2.4
Status: RESOLVED FIXED
Alias: None
Product: bindings
Classification: Developer tools
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: kde-bindings
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-01-19 18:15 UTC by Elan Ruusamäe
Modified: 2007-01-24 18:48 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Elan Ruusamäe 2007-01-19 18:15:40 UTC
Version:           unknown (using KDE 3.5.5, PLD Linux Distribution)
Compiler:          gcc version 3.3.6 (PLD Linux)
OS:                Linux (x86_64) release 2.6.16.35-1smp

building 
d26b5f54f062b765a949d66657c2ab3c *kdebindings-3.5.6.tar.bz2
with python-2.4.4 outputs:

/usr/include/features.h:150:1: warning: this is the location of the previous definition
marshaller.cpp: In member function `bool
  PythonDCOP::Marshaller::marshalDict(const PythonDCOP::PCOPType&, const
  PythonDCOP::PCOPType&, PyObject*, QDataStream*) const':
marshaller.cpp:129: error: cannot convert `ssize_t*' to `int*' for argument `2'
  to `int PyDict_Next(PyObject*, int*, PyObject**, PyObject**)'
marshaller.cpp:138: error: cannot convert `ssize_t*' to `int*' for argument `2'
  to `int PyDict_Next(PyObject*, int*, PyObject**, PyObject**)'
make[4]: *** [marshaller.lo] Error 1
make[4]: Leaving directory `/home/builder/rpm/pld/BUILD/kdebindings-3.5.6/dcoppython/shell'

first patch is to python 2.4 to backport Py_ssize_t type:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/Attic/python-Py_ssize_t.patch

after that patch in python:
marshaller.cpp: In member function `bool
  PythonDCOP::Marshaller::marshalDict(const PythonDCOP::PCOPType&, const
  PythonDCOP::PCOPType&, PyObject*, QDataStream*) const':
marshaller.cpp:129: error: cannot convert `ssize_t*' to `int*' for argument `2'
  to `int PyDict_Next(PyObject*, int*, PyObject**, PyObject**)'
marshaller.cpp:138: error: cannot convert `ssize_t*' to `int*' for argument `2'
  to `int PyDict_Next(PyObject*, int*, PyObject**, PyObject**)'
make[1]: *** [marshaller.lo] Error 1
make[1]: Leaving directory `/home/builder/rpm/pld/BUILD/kdebindings-3.5.6/dcoppython/shell'
make: *** [all] Error 2

so there's second patch is to use Py_ssize_t in place where expected:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/Attic/kdebindings-ssize_t.patch

for 2.5 python defines special type: Py_ssize_t  not ssize_t.
Comment 1 Dirk Mueller 2007-01-24 18:48:00 UTC
SVN commit 626832 by mueller:

fix build with python 2.4 again
BUG:140302
CCMAIL:kde-packager@kde.org


 M  +5 -1      dcoppython/shell/marshaller.cpp  
 M  +2 -2      python/pykde/sip/kdecore/bytearray.sip  
 M  +1 -1      python/pykde/sip/kdecore/kaccel.sip  
 M  +1 -1      python/pykde/sip/kdecore/kcompletion.sip  
 M  +1 -1      python/pykde/sip/kdecore/kconfig.sip  
 M  +1 -1      python/pykde/sip/kdecore/kconfigdata.sip  
 M  +3 -3      python/pykde/sip/kdecore/kmacroexpander.sip  
 M  +6 -6      python/pykde/sip/kdecore/kurl.sip  
 M  +1 -1      python/pykde/sip/kdeui/kkeydialog.sip  
 M  +1 -1      python/pykde/sip/kio/authinfo.sip  
 M  +1 -1      python/pykde/sip/kio/global.sip  
 M  +1 -1      python/pykde/sip/kio/kservicetype.sip  
 M  +1 -1      python/pykde/sip/kmdi/kmdichildfrm.sip  
 M  +2 -2      python/pykde/sip/kparts/browserextension.sip  
 M  +2 -2      python/pyqt/sip/qt/qdir.sip  
 M  +1 -1      python/pyqt/sip/qt/qstring.sip  
 M  +6 -6      python/pyqt/sip/qt/qstringlist.sip  


--- branches/KDE/3.5/kdebindings/dcoppython/shell/marshaller.cpp #626831:626832
@@ -24,6 +24,10 @@
 
 #include <kurl.h>
 
+#if PY_VERSION_HEX < 0x02050000
+typedef int Py_ssize_t;
+#endif
+
 namespace PythonDCOP {
 
 #include "marshal_funcs.h"
@@ -124,7 +128,7 @@
     if (!PyDict_Check(obj)) return false;
 
 
-    ssize_t c=0;
+    Py_ssize_t c=0;
     PyObject *key, *val;
     while (PyDict_Next(obj, &c, &key, &val)==1)
       if (!key_type.isMarshallable(key) ||
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/bytearray.sip #626831:626832
@@ -620,7 +620,7 @@
     QMap<QCString,DCOPRef> *cppmap = new QMap<QCString,DCOPRef>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QCString *acpp;
     DCOPRef *bcpp;
 
@@ -705,7 +705,7 @@
     QMap<QString,DCOPRef> *cppmap = new QMap<QString,DCOPRef>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *acpp;
     DCOPRef *bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kaccel.sip #626831:626832
@@ -209,7 +209,7 @@
     QMap<int,QString> *map = new QMap<int,QString>;
 
         PyObject *key, *value;
-        ssize_t pos = 0;
+        _SIP_SSIZE_T pos = 0;
         int iKey;
         QString *sData;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kcompletion.sip #626831:626832
@@ -201,7 +201,7 @@
     QMap<KCompletionBase::KeyBindingType,KShortcut> *kbmap = new QMap<KCompletionBase::KeyBindingType,KShortcut>;
 
     PyObject *key, *value;
-        ssize_t pos = 0;
+        _SIP_SSIZE_T pos = 0;
         KShortcut *cValue;
         int iserr;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kconfig.sip #626831:626832
@@ -158,7 +158,7 @@
     QMap<QString,QString> *cppmap = new QMap<QString,QString>;
 
     PyObject *aelem, *belem;
-    ssize_t  pos = 0;
+    _SIP_SSIZE_T  pos = 0;
     QString *acpp;
     QString *bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kconfigdata.sip #626831:626832
@@ -141,7 +141,7 @@
     QMap<KEntryKey,KEntry> *cppmap = new QMap<KEntryKey,KEntry>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     KEntryKey *acpp;
     KEntry *bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kmacroexpander.sip #626831:626832
@@ -169,7 +169,7 @@
     QMap<QChar,QString> *map = new QMap<QChar,QString>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QChar *cKey;
     QString *sData;
 
@@ -255,7 +255,7 @@
     QMap<QString, QStringList> *map = new QMap<QString, QStringList>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *sKey;
     QStringList *slData;
 
@@ -343,7 +343,7 @@
     QMap<QChar,QStringList> *map = new QMap<QChar,QStringList>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QChar *cKey;
     QStringList *slData;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdecore/kurl.sip #626831:626832
@@ -234,7 +234,7 @@
         void                 __setitem__ (int, const KURL&);
 %MethodCode
 //takes index | (int) | value | (KURL)
-    ssize_t len;
+    _SIP_SSIZE_T len;
 
     len = sipCpp -> count();
 
@@ -248,7 +248,7 @@
 %MethodCode
 //takes range | (a Python slice) | urlList | (KURL.List)
 
-    ssize_t len, start, stop, step, slicelength;
+    _SIP_SSIZE_T len, start, stop, step, slicelength;
 
     len = sipCpp -> count();
 
@@ -278,7 +278,7 @@
         void                 __delitem__ (int);
 %MethodCode
 //takes index | (int)
-    ssize_t len;
+    _SIP_SSIZE_T len;
 
     len = sipCpp -> count();
 
@@ -291,7 +291,7 @@
         void                 __delitem__ (SIP_PYSLICE);
 %MethodCode
 //takes range | (a Python slice)
-    ssize_t len, start, stop, step, slicelength;
+    _SIP_SSIZE_T len, start, stop, step, slicelength;
 
     len = sipCpp -> count();
     if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0)
@@ -308,7 +308,7 @@
 %MethodCode
 //returns (KURL)
 //takes index | (int)
-    ssize_t len;
+    _SIP_SSIZE_T len;
 
     len = sipCpp -> count();
 
@@ -322,7 +322,7 @@
 %MethodCode
 //returns (KURL.List)
 //takes range | (a Python slice)
-    ssize_t len, start, stop, step, slicelength;
+    _SIP_SSIZE_T len, start, stop, step, slicelength;
 
     len = sipCpp -> count();
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kdeui/kkeydialog.sip #626831:626832
@@ -231,7 +231,7 @@
     QDict<int>* qdict = new QDict<int>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *a0;
     int a1;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kio/authinfo.sip #626831:626832
@@ -176,7 +176,7 @@
     QMap<QString, QStringList> *map = new QMap<QString, QStringList>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *sKey;
     QStringList *sData;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kio/global.sip #626831:626832
@@ -675,7 +675,7 @@
     QMap<QString,QString> *cppmap = new QMap<QString,QString>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *acpp;
     QString *bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kio/kservicetype.sip #626831:626832
@@ -184,7 +184,7 @@
     QMap<QString,QVariant::Type> *cppmap = new QMap<QString,QVariant::Type>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *acpp;
     QVariant::Type bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kmdi/kmdichildfrm.sip #626831:626832
@@ -245,7 +245,7 @@
     QDict<QWidget::FocusPolicy>* qdict = new QDict<QWidget::FocusPolicy>;
 
     PyObject *key, *value;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QString *a0;
     QWidget::FocusPolicy a1;
 
--- branches/KDE/3.5/kdebindings/python/pykde/sip/kparts/browserextension.sip #626831:626832
@@ -404,7 +404,7 @@
     QMap<QCString,QCString> *cppmap = new QMap<QCString,QCString>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QCString *acpp;
     QCString *bcpp;
 
@@ -487,7 +487,7 @@
     QMap<QCString,int> *cppmap = new QMap<QCString,int>;
 
     PyObject *aelem, *belem;
-    ssize_t pos = 0;
+    _SIP_SSIZE_T pos = 0;
     QCString *acpp;
     int bcpp;
 
--- branches/KDE/3.5/kdebindings/python/pyqt/sip/qt/qdir.sip #626831:626832
@@ -238,7 +238,7 @@
 
 	QString operator[](int) const;
 %MethodCode
-		ssize_t len;
+		_SIP_SSIZE_T len;
 
 		Py_BEGIN_ALLOW_THREADS
 		len = sipCpp -> count();
@@ -256,7 +256,7 @@
 
 	QStringList operator[](SIP_PYSLICE) const;
 %MethodCode
-		ssize_t len, start, stop, step, slicelength;
+		_SIP_SSIZE_T len, start, stop, step, slicelength;
 
 		Py_BEGIN_ALLOW_THREADS
 		len = sipCpp -> count();
--- branches/KDE/3.5/kdebindings/python/pyqt/sip/qt/qstring.sip #626831:626832
@@ -746,7 +746,7 @@
 
 	QString operator[](SIP_PYSLICE) const;
 %MethodCode
-		ssize_t len, start, stop, step, slicelength;
+		_SIP_SSIZE_T len, start, stop, step, slicelength;
 
 		len = sipCpp -> length();
 
--- branches/KDE/3.5/kdebindings/python/pyqt/sip/qt/qstringlist.sip #626831:626832
@@ -99,7 +99,7 @@
 
 	void __setitem__(int,const QString &);
 %MethodCode
-		ssize_t len;
+		_SIP_SSIZE_T len;
 
 		len = sipCpp -> count();
 
@@ -111,7 +111,7 @@
 
 	void __setitem__(SIP_PYSLICE,const QStringList &);
 %MethodCode
-		ssize_t len, start, stop, step, slicelength;
+		_SIP_SSIZE_T len, start, stop, step, slicelength;
 
 		len = sipCpp -> count();
 
@@ -142,7 +142,7 @@
 
 	void __delitem__(int);
 %MethodCode
-		ssize_t len;
+		_SIP_SSIZE_T len;
 
 		len = sipCpp -> count();
 
@@ -154,7 +154,7 @@
 
 	void __delitem__(SIP_PYSLICE);
 %MethodCode
-		ssize_t len, start, stop, step, slicelength;
+		_SIP_SSIZE_T len, start, stop, step, slicelength;
 
 		len = sipCpp -> count();
 
@@ -170,7 +170,7 @@
 
 	QString operator[](int);
 %MethodCode
-		ssize_t len;
+		_SIP_SSIZE_T len;
 
 		len = sipCpp -> count();
 
@@ -182,7 +182,7 @@
 
 	QStringList operator[](SIP_PYSLICE);
 %MethodCode
-		ssize_t len, start, stop, step, slicelength;
+		_SIP_SSIZE_T len, start, stop, step, slicelength;
 
 		len = sipCpp -> count();