[review] [PyKDE] bug report

Jim Bublitz jbublitz at nwinternet.com
Mon Dec 15 18:59:01 GMT 2003


On Monday December 15 2003 01:36, Simone Piunno wrote:
> Alle 00:48, sabato 13 dicembre 2003, Jim Bublitz ha scritto:
> > > Generating the C++ source for the dcop module.

> I believe this can't be a CPU overheating problem because I've
> retried many times and it always stops at the same line with
> the same errors.  A CPU overheating wouldn't be reproductable.

My experience was the same - random errors.

> > This is a problem with sip parsing PyQt's qevent.sip.
> > Consider that you've probably already built PyQt using the
> > same code (or presumably someone has if you're using
> > packaged binaries for sip/PyQt) and run it through the same
> > version of sip successfully.
>
> I'm using pre-packaged binaries:
>
> [root at pioppo root]# rpm -qa|grep PyQt
> PyQt-docs-3.4-1mdk
> PyQt-3.8-1mdk
> PyQt-eric-3.4-1mdk
> PyQt-devel-3.8-1mdk
> [root at pioppo root]# rpm -qa|grep sip
> libsip9-3.4-1mdk
> libsip10-devel-3.8-3mdk
> libsip9-devel-3.4-1mdk
> libsip10-3.8-3mdk
>
> > You can try removing the "virtual" qualifier from that line
> > so it's just:
> >
> > 	~QEvent();
> >
> > or comment the line out (//) altogether. This doesn't affect
> > PyQt (unless you rebuild - then you don't want to have
> > modified the line). It shouldn't cause any problems with
> > PyKDE though (unless it causes a linking problem ??)
>
> both removing "virtual" or commenting the line out stops
> compilation at line 1129:
>
>    1125 %If (Qt_2_1_0 -)
>    1126         QCustomEvent(int);
>    1127 %End
>    1128         ~QCustomEvent();
>    1129 %VirtualCode
>    1130                 // We need to garbage collect any
> current data. 1131
>    1132                 PyObject *old =
> reinterpret_cast<PyObject *>(data()); 1133
>    1134                 SIP_BLOCK_THREADS
>    1135                 Py_XDECREF(old);
>    1136                 SIP_UNBLOCK_THREADS
>    1137 %End

Yes - this depends on ~QEvent() being decleared virtual. You 
could do more editing, but beyond a line or two it doesn't seem 
like a good idea.

> > Which distribution/version are you using?

> I'm on Mandrake 9.2
> When I've more time I'll try rebuilding everything from
> source, anyway it would be nice to understand exactly where
> the problem is, so that I can send feedback to Mandrake
> people.

Normally I wouldn't "pass the buck" on getting this solved, but 
this really appears to be a problem with Mandrake's PyQt rpms. I 
have tested PyKDE on Mdk 9.2 and I believe I used their sip and 
PyQt rpms (can't check as I don't have Mdk up at the moment). 
However, in my limited experience with Mdk, there have been 
differences between builds of the same version that have caused 
PyQt/PyKDE problems. If you rebuild PyQt-3.8 from source, the 
problem should disappear, assuming you have a sip-3.8 version 
that will handle virtual dtors (it should).

The problem appears to be that the version of sip provided won't 
handle virtual destructors - sip 3.8 should be able to do that. 
You could verify it by trying to build PyQt with the installed 
version of sip.

Just to be on the safe side, do 'sip -V' to make sure that the 
3.8 version is being found. If not, you may have to delete older 
sip version(s) and reinstall sip (or rebuild it - sip builds in 
a minute or two). You might want to delete any older versions 
anyway, if they exist.

Jim




More information about the PyQt mailing list