[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