[PyKDE] PyKDE 3.11 snapshot
Jim Bublitz
jbublitz at nwinternet.com
Fri Apr 23 06:49:00 BST 2004
On Thursday April 22 2004 13:46, Torsten Marek wrote:
> Jim Bublitz schrieb:
> is it possible that it is impossible to build PyKDE using sip4
> (latest snapshot)? I had to manually add some %Imports in the
> <module>mod.sip.in (sip complained, for instance, "sip: The
> kfile module must explicitly %Import the kdeui module"), but
> then everything worked.
Yes - sip < 4.0 allowed recursive %Imports; 4.0 requires explicit
%Imports. That *should* be the only major code change I think,
but I haven't tested it yet (the other problems below are fairly
easy to fix - just type errors).
> When trying to compile it, I get the
> following output: g++ -c -pipe -fPIC -O2 -Wall -W -D_REENTRANT
> -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I. -I../extra/kde322
> -I/usr/include/kde -I/usr/include/python2.3
> -I/usr/share/qt3/include -I/usr/X11R6/include -o
> sipdcoppart0.o sipdcoppart0.cpp
> sip/dcop/dcopobject.sip: In function `int
> convertTo_QPtrList_0200DCOPObject(PyObject*, void**,
> int*)': sip/dcop/dcopobject.sip:136: error: invalid conversion
> from `void*' to ` DCOPObject*'
> sip/dcop/dcopclient.sip: In function `int
> convertTo_QValueList_0200QCString(PyObject*, void**,
> int*)': sip/dcop/dcopclient.sip:215: error: invalid conversion
> from `void*' to ` QCString*'
> sipdcoppart0.cpp: In function `PyObject*
> meth_DCOPClient_connectDCOPSignal(PyObject*, PyObject*)':
> sipdcoppart0.cpp:6685: Warnung: `connectDCOPSignal' is
> deprecated (declared at
> /usr/include/kde/dcopclient.h:437)
> sipdcoppart0.cpp: In function `PyObject*
> meth_DCOPClient_disconnectDCOPSignal(PyObject*,
> PyObject*)': sipdcoppart0.cpp:6767: Warnung:
> `disconnectDCOPSignal' is deprecated (declared
> at /usr/include/kde/dcopclient.h:465)
> sipdcoppart0.cpp: In function `PyObject*
> meth_DCOPClient_dcopServerFileOld(PyObject*, PyObject*)':
> sipdcoppart0.cpp:7564: Warnung: `dcopServerFileOld' is
> deprecated (declared at
> /usr/include/kde/dcopclient.h:723)
> make[1]: *** [sipdcoppart0.o] Fehler 1
>
> I doubt that this is connected to using sip4 instead of sip3,
> if I did something illegal, just ignore me...
The deprecation warnings are coming from KDE itself (from the h
files) I would think. I haven't seen them on my compiles
though. Right now I have that gcc feature effectively #defined
out when I generate the sip files from KDE h files. If the
methods were removed, I would be versioning them out, but since
they're still valid (just deprecated) it seems to me I should
leave them in. I'm not sure if supressing the warnings would be
the right thing to do either, but I hate compiles that generate
warnings.
I also don't get the type errors you have (using 3.10.1) - that
may be due to differences in how sip 3.10.1 and sip 4.0 generate
or use code. Most of the newer handwritten code (which is where
the errors are occurring) should have the typecasts, but you can
just add them:
sip/dcop/dcopobject.sip:136
cpp = (DCOPObject *)sipForceConvertTo_DCOPObject (elem,
&iserr);
sip/dcop/dcopclient.sip:215
cpp = (QCString *)sipForceConvertTo_QCString (elem,
&iserr);
and similarly for any other occurances. A quick grep turns up 38
files that *might* need casts added, basically on
sipForceConvertTo_* calls. The cast will always be the same as
the class name after the '_' in the function name, and always a
pointer. Actually, it wouldn't be hard to write a Python script
to fix it. There may be some other places where similar problems
come up.
I'll be getting to sip 4.0 in a week or two, and I expect most of
the changes needed to be similar to what you've found, so the
conversion shouldn't take long. Most of the changes for 3.10.1
are 4.0 compatible, although I've probably missed a few. I'd
like to finish the 3.10.1 version before getting into 4.0 stuff.
Jim
More information about the PyQt
mailing list