[PyKDE] Problems with PyKDE 3.3.2 on KDE 3.1.1

Jim Bublitz jbublitz at nwinternet.com
Wed Mar 19 16:11:01 GMT 2003


On 19-Mar-03 Hans-Peter Jansen wrote:
> Hi Jim and friends,
> 
> motivated by Roberto, I tried to build KyKDE 3.3.2 on top of KDE
> 3.1.1, but failed so far. Robertos version fails in exactly the
> same way, but it's hard to say what Roberto has changed without
a proper context diff <hint, hint>.
> 
> The problem boils down to the now private nature of some
> ctors/dtors in a few KIO classes. I examined the first one:
> KService(const KService&),  which is used at least in
> syentrylist.sip and svctypes.sip for some type  conversations.
> 
> kservice.h:
> 
> class KService : public KSycocaEntry
> {
>   K_SYCOCATYPE( KST_KService, KSycocaEntry )
> 
>   KService(const KService&);
> 
> Unfortunately I have not enough insight in the inwards of KDE to
> rewrite those by now.
> 
> Attached is a patch of what I've done so far. Additionally, I've
> created a few symlinks in my RPM spec, as always:
> 
> cd extraH
> ln -s kde303 kde304
> ln -s kde303 kde305
> ln -s kde303 kde311
> cd ..
> cd sip
> ln -s kde30 kde31
> cd ..
> 
> Here is the full error log [Sorry for the long lines]:
> 
> make[1]: Entering directory
> `/usr/src/packages/BUILD/PyKDE-3.3.2/kio'
> g++ -c -pipe -w -O2 -march=i586 -mcpu=i686 -fmessage-length=0
> -fPIC -DNO_DEBUG -D_REENTRANT -fPIC  -DSIP_MAKE_MODULE_
> DLL -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -fno-exceptions
> -I/usr/lib/qt3/mkspecs/default -I. -I-I -I../extraH -I. -I../..
> /../../../include/python2.2 -I/opt/kde3/include -I-I
> -I/opt/kde3/include/kio -I-I -I../kdecore -I../../../../../inclu
> de -I/usr/lib/qt3/include -o kiohuge.o kiohuge.cpp
> /opt/kde3/include/kservice.h: In function `PyObject*
> sipConvertFrom_SvcList(SvcList*)':
> /opt/kde3/include/kservice.h:47: error: `KService::KService(const
> KService&)' is private
> sip/svctypes.sip:175: error: within this context
> /opt/kde3/include/kservice.h: In constructor
> `sipKService::sipKService(const KService&)':
> /opt/kde3/include/kservice.h:47: error: `KService::KService(const
> KService&)' is private

svctypes.sip is handwritten code and SvcList is a mapped type
meaning neither is really part of KDE, but are created to handle
template classes within PyKDE. I'm not sure why the copy ctor is
being invoked there, so I'm not sure how to fix it. Also, I'm not
sure if that section of code even works, and it's been recoded
already for the new version.

SvcList is the mapped type for QPtrList<KService::Ptr>, and
KService::Ptr is typedef'd from KSharedPtr<KService> (there's
probably a mapped type SvcPtr also). You could probably try
commenting out the SvcList mapped type and also comment out any
method that references it. You won't lose much unless you're doing
some low level KIO related programming.

> sipkioKShellCompletion.cpp:1861: error: within this context
> /opt/kde3/include/kautomount.h: In constructor
> `sipKAutoUnmount::sipKAutoUnmount(const QString&, const
> QString&)':
> /opt/kde3/include/kautomount.h:108: error:
> `KAutoUnmount::~KAutoUnmount()' is private
> sipkioKDataTool.cpp:733: error: within this context
> /opt/kde3/include/kautomount.h: In destructor `virtual
> sipKAutoUnmount::~sipKAutoUnmount()':
> /opt/kde3/include/kautomount.h:108: error:
> `KAutoUnmount::~KAutoUnmount()' is private
> sipkioKDataTool.cpp:738: error: within this context
> /opt/kde3/include/kautomount.h: In function `void
> sipDealloc_KAutoUnmount(sipThisType*)':
> /opt/kde3/include/kautomount.h:108: error: `virtual
> KAutoUnmount::~KAutoUnmount()' is private
> sipkioKAutoUnmount.cpp:435: error: within this context
> /opt/kde3/include/kautomount.h: In function `PyObject*
> sipNew_KAutoUnmount(PyObject*, PyObject*)':
> /opt/kde3/include/kautomount.h:108: error: `virtual
> KAutoUnmount::~KAutoUnmount()' is private
> sipkioKAutoUnmount.cpp:499: error: within this context
> /opt/kde3/include/kautomount.h: In constructor
> `sipKAutoMount::sipKAutoMount(bool, const QString&, const
> QString&, co
> nst QString&, const QString&, bool)':
> /opt/kde3/include/kautomount.h:70: error:
> `KAutoMount::~KAutoMount()' is private
> sipkioKAutoUnmount.cpp:607: error: within this context
> /opt/kde3/include/kautomount.h: In destructor `virtual
> sipKAutoMount::~sipKAutoMount()':
> /opt/kde3/include/kautomount.h:70: error:
> `KAutoMount::~KAutoMount()' is private
> sipkioKAutoUnmount.cpp:612: error: within this context
> /opt/kde3/include/kautomount.h: In function `void
> sipDealloc_KAutoMount(sipThisType*)':
> /opt/kde3/include/kautomount.h:70: error: `virtual
> KAutoMount::~KAutoMount()' is private
> sipkioKAutoMount.cpp:435: error: within this context
> /opt/kde3/include/kautomount.h: In function `PyObject*
> sipNew_KAutoMount(PyObject*, PyObject*)':
> /opt/kde3/include/kautomount.h:70: error: `virtual
> KAutoMount::~KAutoMount()' is private
> sipkioKAutoMount.cpp:511: error: within this context

These all look like the same error. ~KAutoMount () is now private.
Normally dtors don't appear in sip files UNLESS they're private, so
you'd need to add:

private:
    ~KAutoMount ();

to the KAutoMount class (note - no 'virtual' keyword for sip on the
dtor).

> sipkioKIOMultiGetJob.cpp: In member function `void
> sipKIO_DeleteJob::sipProtect_startNextJob()':
> sipkioKIOMultiGetJob.cpp:2516: error: 'class KIO::DeleteJob' has
> no member named 'startNextJob'
> /opt/kde3/include/kio/jobclasses.h: In member function `void
> sipKIO_DeleteJob::sipProtect_deleteNextFile()':
> /opt/kde3/include/kio/jobclasses.h:1067: error: `void
> KIO::DeleteJob::deleteNextFile()' is private
> sipkioKIOMultiGetJob.cpp:2521: error: within this context
> /opt/kde3/include/kio/jobclasses.h: In member function `void
> sipKIO_DeleteJob::sipProtect_deleteNextDir()':
> /opt/kde3/include/kio/jobclasses.h:1068: error: `void
> KIO::DeleteJob::deleteNextDir()' is private
> sipkioKIOMultiGetJob.cpp:2526: error: within this context

These are all the same kind of error - deleteNextDir() and
deleteNextFile () in KIO::DeleteJob (jobclasses.sip) are now
private. Just delete it - sip doesn't handle private methods.
startNextJob () is gone in 3.1.1 apparently. Either comment those
out or wrap them in 

%If ( - KDE_3_1_1 )

...

%End

(assuming you added KDE_3_1_1 to the the %Timeline stmt in dcop.sip
in the sip/kde300/ directory).

> make[1]: *** [kiohuge.o] Fehler 1
> make[1]: Leaving directory
> `/usr/src/packages/BUILD/PyKDE-3.3.2/kio'
> make: *** [sub-kio] Fehler 2
 
> Looks like It's time to wait for your new version, but I will
> happily take advises on how to preceed.

The new version is complete through KDE 3.0.0.  KDE 3.0.1 through
3.0.5 should go pretty fast and KDE 3.1.0 will probably take a few
days, so it's at least a week or two to a release. There are a fair
amount of PyKDE bug fixes and few bugfixes for sip 3.6 (some
created by problems in KDE code, like duplicated base classes for a
class). I'm trying to nail down as many problems as I can, so it's
going a little slowly.

Jim




More information about the PyQt mailing list