On Wed, 22 Sep 2010 11:25:21 +0200, "Hans-Peter Jansen" <h...@urpla.net> wrote: > On Wednesday 22 September 2010, 08:24:05 Simon Edwards wrote: >> Hello, >> >> On 09/21/2010 11:32 PM, Hans-Peter Jansen wrote: >> > in an attempt to build python-kde4 from kdebindings-4.4.4, I stumbled >> > across this failure: >> > >> > sip: >> > /usr/src/packages/BUILD/kdebindings-4.4.4/python/pykde4/sip/kdecore/typ >> >edefs.sip:737: Mapped type has already been defined in another module >> > make[2]: *** [python/pykde4/sip/akonadi/sipakonadipart0.cpp] Error 1 >> > make[2]: Leaving directory `/usr/src/packages/BUILD/kdebindings-4.4.4/b >> >uild' >> > make[1]: *** [python/pykde4/CMakeFiles/python_module_PyKDE4_akonadi.dir >> >/all] Error 2 >> > >> > Is this issue already known? >> >> yep. It is a small incompatibility in PyQt introduced after KDE 4.5 came >> out. >> >> This change on trunk will most likely fix your problem. You should be >> able to apply the change to 4.4.4 & 4.5.1. >> >> http://websvn.kde.org/?view=revision&revision=1170602 >> > > Yes, that fixed this problem. Thanks a bunch. I guess, sip got pickier > about > multiply defined type converters lately. > > Unfurtunately, here's the next stumbling point: > > /usr/include/kio/tcpslavebase.h: In function 'PyObject* > slot_KIO_TCPSlaveBase_SslResult___xor__(PyObject*, PyObject*)': > /usr/include/kio/tcpslavebase.h:63: error: 'enum > KIO::TCPSlaveBase::SslResultDetail' is protected > /usr/share/sip/PyQt4/QtCore/qglobal.sip:320: error: within this context > /usr/include/kio/tcpslavebase.h: In function 'PyObject* > slot_KIO_TCPSlaveBase_SslResult___or__(PyObject*, PyObject*)': > /usr/include/kio/tcpslavebase.h:63: error: 'enum > KIO::TCPSlaveBase::SslResultDetail' is protected > /usr/share/sip/PyQt4/QtCore/qglobal.sip:315: error: within this context > > Phil, this one is due to the logic operator changes. It's not obvious, > what's > going wrong, but related to the friend class QFlags declararation, where
> qglobal.sip got pulled in.. Try changing global.sip with... QFlags operator|(int f); %MethodCode sipRes = new QFlags(*a0 | (ENUM(a1))); %End QFlags operator^(int f); %MethodCode sipRes = new QFlags(*a0 ^ (ENUM(a1))); %End ...changed to ... QFlags operator|(int f); %MethodCode sipRes = new QFlags(*a0 | a1); %End QFlags operator^(int f); %MethodCode sipRes = new QFlags(*a0 ^ a1); %End Is PyKDE built with protected-as-public? I think that that would also solve the problem (and result in much smaller Python modules). Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt