[PyKDE] PyKDE-3.11 final release

Jim Bublitz jbublitz at nwinternet.com
Mon Jun 14 09:09:01 BST 2004


On Sunday 13 June 2004 22:13, Troy Melhase wrote:
> On Saturday 12 June 2004 11:55 am, Jim Bublitz wrote:

> In file included from sipkdecoreKConfigSkeletonItemEnum.h:33,
>                  from sipkdecorepart0.cpp:54:
> sipkdecoreQValueList.h:61:1: warning: "sipForceConvertTo_QValueList_1800"
> redefined


> In file included from sipkdecoreKConfigBase.h:42,
> sipqtQValueList.h:38:1: warning: this is the location of the previous
> definition

> In file included from sipkdecoreKConfigSkeletonItemEnum.h:33,
>                  from sipkdecorepart0.cpp:54:
> sipkdecoreQValueList.h:62:1: warning: "sipConvertTo_QValueList_1800"
> redefined In file included from sipkdecoreKConfigBase.h:42,
>                  from sipkdecoreKConfig.h:31,
>                  from sipkdecoreKConfigSkeletonItem.h:33,
>                  from sipkdecoreKConfigSkeletonItemIntList.h:31,
>                  from sipkdecorepart0.cpp:36:
> sipqtQValueList.h:39:1: warning: this is the location of the previous
> definition

> In file included from sipkdecoreKConfigSkeletonItemEnum.h:33,
>                  from sipkdecorepart0.cpp:54:
> sipkdecoreQValueList.h:63:1: warning: "sipConvertFrom_QValueList_1800"
> redefined
> In file included from sipkdecoreKConfigBase.h:42,
>                  from sipkdecoreKConfig.h:31,
>                  from sipkdecoreKConfigSkeletonItem.h:33,
>                  from sipkdecoreKConfigSkeletonItemIntList.h:31,
>                  from sipkdecorepart0.cpp:36:
> sipqtQValueList.h:40:1: warning: this is the location of the previous
> definition

All of the above are the same problem: they result from redefining 
QValueList<int> (which is defined in PyQt) as either
QValueList<KConfigSkeleton::ItemEnum::Choice> or QValueList<pid_t>. The first 
is an enum, the second a typedef (from int I believe). The problem is that 
sip doesn't recognize enum <=> int in this case, or that pid_t <=> int in the 
kconfigbase.sip case, but g++ is seeing them all identically.

It shouldn't be hard to fix this (I should be able to give each type variation 
a unique name/definition), but it's more steps than I'd want to write out in 
an email. 

> In file included from sip/kdecore/kmanagerselection.sip:69,
>                  from sipkdecorepart0.cpp:74:
> /usr/qt/3/include/qdockwindow.h:88: error: parse error before numeric
> constant /usr/qt/3/include/qdockwindow.h:88: error: missing ';' before
> right brace /usr/qt/3/include/qdockwindow.h:90: error: parse error before

Please check kmanagerselection.sip and make sure all classes have the 
following %TypeHeaderCode blocks:

%TypeHeaderCode
#include <qdockwindow.h>
#include <qvariant.h>
#include <kmanagerselection.h>
%End

although from the line numbers in the error msg it appears they do. This 
appears to be a problem with the header files for kmanagerselection.h. 
Sticking in the q*.h files (which usually is unnecessary) fixed it here. For 
the moment the only thing I can suggest is going into 
sip/kdecore/kdecoremod.sip.in and commenting out the line as shown:

// %Include kmanagerselection.sip

which is probably what I'll end up doing for now. It takes a lot of time 
(recompiles) to figure these out, since they're usually just trial and error.

I believe I only had this problem only when building with the '-i' switch to 
configure.py (no concatenation of C++ files).

I can't duplicate either problem here, but I think I can come up with a 
solution that works generally. I'll need to do some testing on it though, so. 
I'll probably get to it sometime tomorrow. I'll release a new version 
(PyKDE-3.11.1) when I have that all completed.

Since I don't get these errors, I'd be curious to know what distribution and 
gcc version you're running.

Jim




More information about the PyQt mailing list