Opened 13 years ago

Closed 13 years ago

#3378 closed bug (fixed)

Appears PyQt 4.8.2 now wraps QSet which causes a SIP error during compilation

Reported by: sharpie Owned by: nobody
Priority: critical: causes crash or data corruption Milestone: Version 1.7.0
Component: Build/Install Version: 1.6.0
Keywords: Cc:
Must Fix for Release: Yes Platform: All
Platform Version: Awaiting user input: no

Description

I'm not that familiar with the inner workings of SIP or PyQT, so apologies up front for any inaccuracies in the following report.

After upgrading to Qt 4.7.1/PyQt 4.8.2/SIP 4.12, I get the following error during compilation:

sip: /tmp/homebrew-qgis-1.6.0-ecgD/qgis-1.6.0/python/core/conversions.sip:326: %MappedType template for this type has already been defined

Examining the offending file, python/core/conversions.sip, reveals that SIP has a complaint with the definition of QSet<TYPE> on line 326. The header also explains that:

/*
This file contains code for conversion between various (often nested) mapped types
which are not wrapped by PyQt:
- QVector< QVector<TYPE> >
- QVector< QVector< QVector<TYPE> > >
- QList< QList<TYPE> >
- QSet<int>
- QSet<TYPE>
- QMap<int, QMap<int, TYPE> >
- QMap<QString, QVariant::Type>
- QMap<TYPE1, TYPE2*>
- QMap<double, TYPE>
- QMultiMap<double, TYPE2>
- QMap<int, QgsOverlayObject*>*
*/

A quick grep of the PyQt 4.8.2 installation revealed that QSet<type> is defined in:

PYQT_ROOT/share/sip/QtCore/qset.sip

The 4.8.2 Changelog hints that this may have been added in the current release.

Unfortunately, Riverbank has an ugly habit of not maintaining an archive of past releases or providing repository access for PyQt, so I cannot verify that QSet was indeed added in 4.8.2.

Removing the QSet definition from conversions.sip allows QGIS to compile and it appears to work. However, this is definitely not the right thing to do and I don't have the PyQt experience to suggest what the right thing may be.

Make log attached.

Attachments (1)

make.log (1.4 KB ) - added by sharpie 13 years ago.
Log of make error during SIP invocation

Download all attachments as: .zip

Change History (2)

by sharpie, 13 years ago

Attachment: make.log added

Log of make error during SIP invocation

comment:1 by jef, 13 years ago

Resolution: fixed
Status: newclosed

should be fixed in r14988. Happy new year.

Note: See TracTickets for help on using tickets.