[PyQt] kdebindings 4.4.4 build failure with sip-4.11.1 continues

Hans-Peter Jansen hpj at urpla.net
Wed Sep 22 10:25:21 BST 2010


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..

Here's the KDE class excerpt:

class KIO_EXPORT TCPSlaveBase : public SlaveBase
{
public:
    /**
     * Constructor.
     *
     * @param autoSsl if true, will automatically invoke startSsl() right after
     *                connecting. In the absence of errors the use of SSL will
     *                therefore be transparent to higher layers.
     */
    TCPSlaveBase(const QByteArray &protocol,
                 const QByteArray &poolSocket, const QByteArray &appSocket,
                 bool autoSsl = false);

    virtual ~TCPSlaveBase();

protected:
    enum SslResultDetail {
        ResultOk = 1,
        ResultOverridden = 2,
        ResultFailed = 4,
        ResultFailedEarly = 8
    };
    friend class QFlags<KIO::TCPSlaveBase::SslResultDetail>;
public:
    Q_DECLARE_FLAGS(SslResult, SslResultDetail)
protected:
[...]

and the related sip file excerpt:

%ModuleHeaderCode
//ctscc
#include <forwardingslavebase.h>
#include <slavebase.h>
#include <tcpslavebase.h>
%End

namespace KIO
{

class TCPSlaveBase : KIO::SlaveBase
{
%TypeHeaderCode
#include <tcpslavebase.h>
%End


public:
    TCPSlaveBase (const QByteArray& protocol, const QByteArray& poolSocket, const QByteArray& appSocket, bool autoSsl = 0);


protected:
    enum SslResultDetail
    {
        ResultOk,
        ResultOverridden,
        ResultFailed,
        ResultFailedEarly
    };
[...]

Both attached.

Pete


-------------- next part --------------
A non-text attachment was scrubbed...
Name: tcpslavebase.sip
Type: text/x-c++src
Size: 2754 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100922/9758585d/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tcpslavebase.h
Type: text/x-c++hdr
Size: 6248 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100922/9758585d/attachment.h>


More information about the PyQt mailing list