[PyKDE] SIP-4.0rc1 minor build /install issues
Jon Dyte
jon at totient.demon.co.uk
Fri Dec 12 08:13:01 GMT 2003
On Thursday 11 December 2003 22:26, Phil Thompson wrote:
> On Thursday 11 December 2003 8:38 pm, Jon Dyte wrote:
> > Hi
> > I've been building SIP-4.0rc1 without Qt.
> >
> > I get this failure on make install despite supplying -b and -d on the
> > command line eg python configure.py -b /sw/sip4 -d /sw/sip4/python2.3 -x
> >
> > make[1]: Entering directory `/home/jon/sip-4.0rc1/siplib'
> > cp -f sip.so /sw/sip/python2.3/sip.so
> > cp -f sip.h /usr/include/python2.3/sip.h
> > cp: cannot create regular file `/usr/include/python2.3/sip.h': Permission
> > denied make[1]: *** [install] Error 1
> > make[1]: Leaving directory `/home/jon/sip-4.0rc1/siplib'
> > make: *** [install] Error 2
> >
> >
> > I fixed this by altering configure.py
> > at line 711
> > elif opt == "-d":
> > opt_sipmoddir = arg
> > opt_sipincdir = arg + "/include"
> >
> > this puts the sip headers in an include directory below whereever the -d
> > option was specified. I'm not sure if this is the best way to fix this or
> > not, but certainly there will be cases where people cannot install into
> > the python directory tree.
>
> Use the -e flag. The reason you didn't notice it is because it's missing
> from the help text.
Thanks for the pointer!!!
>
> > On Solaris I found that regardless of whether -x was specified the build
> > still barfed if QTDIR wasnt set. In the end I set QTDIR to /zzzzzz to
> > make the error go away.
> >
> > Also on Solaris I had to make the sipSetBool function in qtlib.cpp be
> > declared extern "C" else the module would complain about missing symbols
> > when being imported. This might be due to my python build on Solaris or
> > the version of CC (4.2) installed. (That particular CC is also missing a
> > bool type which I had to define to get the file to compile as well). It
> > looks like a name mangling issue anyhow.
>
In the end I figured the extern "C" issue only occurs when building without
Qt, because the includes in qtlib.cpp dont get included and they wrap the api
in an extern "C" when its a c++ compiler. I fixed that with
a minor reordering at the top of qtlib.cpp......
/* moved to be always included regardless of Qt support or not*/
#include <Python.h>
#include <string.h>
#include "sip.h"
#include "sipint.h"
#ifdef SIP_QT_SUPPORT
#include <qobject.h>
> Should be fixed in tonight's snapshot.
>
> Is there a "standard" way of handling the case where the C++ compiler
> doesn't support the bool type?
>
Well I just put in the source
#ifndef bool
typedef bool int;
const bool true =1;
const bool false=0;
#endif
in one of the headers.
it might be safer to have a type sipBool and define it to either be a genuine
C++ bool if that exists, or typedef an int?
Now we all need is some docs on using sip!
> Phil
Cheers
Jon
More information about the PyQt
mailing list