[PyQt] Regression in sip 4.7.4 "sip: QPixmap has not been defined"

Adam C Powell IV hazelsct at debian.org
Mon Apr 7 01:14:50 BST 2008


On Mon, 2008-04-07 at 00:49 +0100, Phil Thompson wrote:
> On Sunday 06 April 2008, Adam C Powell IV wrote:
> > On Wed, 2008-04-02 at 09:48 -0400, Adam C Powell IV wrote:
> > > On Tue, 2008-03-25 at 09:11 +0000, Phil Thompson wrote:
> > > > On Monday 24 March 2008, Adam C Powell IV wrote:
> > > > > Greetings,
> > > > >
> > > > > I am trying to build the Salomé suite from
> > > > > http://www.salome-platform.org/ which built just fine with sip 4.7.3
> > > > > but now is not working with 4.7.4.
> > > > >
> > > > > More specifically, I am trying to build the Debian package at
> > > > > http://lyre.mit.edu/~powell/salome/ and running into trouble as
> > > > > described at Debian bug 469850 http://bugs.debian.org/469850 .
> > > > >
> > > > > The sip command is:
> > > > > /usr/bin/sip -t WS_X11 -t Qt_3_3_8b -x Qt_STYLE_INTERLACE -x
> > > > > Qt_STYLE_WINDOWSXP -x Qt_ASSISTANTCLIENT -s ".cc" -c . -I
> > > > > /usr/share/sip/qt/qt SALOME_PYQT_GUI.sip and although qpixmap.sip is
> > > > > right in the path, it gives an error:
> > > > > sip: QPixmap has not been defined
> > > > >
> > > > > Given that this worked fine with 4.7.3, either sip or its Debian
> > > > > package seems to be broken.  How can I investigate further?
> > > >
> > > > Produce a small test case that demonstrates the problem against the
> > > > standard SIP and PyQt packages.
> > > >
> > > > Phil
> > >
> > > Sorry about the delay.
> > >
> > > I'm attaching a small (trivial) file which fails in this way.  sip does
> > > not attempt to open any other files in this directory.  strace output is
> > > at http://lyre.mit.edu/~powell/salome/build-deps/sip.trace
> > >
> > > As you can see, it finds qpixmap.sip, and seems to die soon after
> > > reading the last of the .sip files (at least "soon" in the trace).
> > >
> > > How can I diagnose further?
> >
> > So as a lex/yacc/sip neophyte, I'm hunting down the problem as best I
> > can, and here's what I have so far:
> >
> > While parsing qpaintdevice.sip and qtbitmap.sip, the parser calls
> > findIfaceFile().  While parsing qtbitmap.sip, it also calls
> > appendToClassList().  Those are never called while parsing qpixmap.sip.
> >
> > Going further, I've instrumented every instance of which sets an
> > iff->module (which is null for QPixmap, causing this error), and none
> > are called when parsing qpixmap.sip.
> >
> > So there is a problem with sip and/or qpixmap.sip, such that sip is not
> > getting any classes/modules from qpixmap.sip.  Something is broken.
> > Any ideas?
> >
> > [Please include 469850 at bugs.debian.org in your reply.]
> >
> > Cheers,
> > -Adam
> 
> I said before you should reproduce the problem with the standard source 
> packages, not your distro's packages. "-t Qt_3_3_8b" does not come from the 
> standard source packages.
> 
> Phil

As we say in New York, "Akhaa!"  Thanks, that was exactly the clue I
needed.

This wasn't the fault of the distro, but the software package.  Salomé
comes in a package with its own SIP, Ot, omniORB, NetGen, etc., and its
own set of default but non-standard build options.

Removing the -t option you identified overcame the problem, now it works
with sip 4.7.4 in Debian, which should be faithful to the original.

I'll build the whole thing in the next day or two (which will require a
couple more hours to finish the omniORB 4.0->4.1 port), and come back to
this list if it gives me any further trouble.

Thank you again!
-Adam
-- 
GPG fingerprint: D54D 1AEE B11C CE9B A02B  C5DD 526F 01E8 564E E4B6

Engineering consulting with open source tools
http://www.opennovation.com/



More information about the PyQt mailing list