[PyQt] Consolidated module support: couple of bugs
Giovanni Bajo
rasky at develer.com
Fri Jun 15 16:54:43 BST 2007
Hi Phil,
thanks for starting the consolidated module support in SIP!
I have a couple of bugs to report:
1) In PyQt4's configure.py, around line 217, it creates the sip/Qt
directory using os.mkdir. This fails if the directory already exists
(eg: the second time you run configure.py). I fixed it by guarding the
creation with os.path.exists.
2) In PyQt4, sip/QtCore/qobject.sip, around line 573, there's an
explicit reference to the symbol "sipNm_QtCore_pyqtSignature" in
hand-written code. That won't work with consolidated module: it needs to
be "sipNm_Qt_pyqtSignature".
3) Under Windows, when you build Qt4 as static libraries (configure.exe
-static), the libraries' filenames won't have the trailing "4". For
instance, QtCore's library is called "QtCore.lib", not "QtCore4.lib".
This needs to be fixed twice in sipconfig.py:
a) around line 416, win_shared is incorrectly detected as True. I
couldn't follow how that self.config.qt_winconfig is generated by
PyQt4's configure.py though, so I don't know why it thinks I have
compiled Qt with shared libraries. [If win_shared is True, the QT_DLL
symbol will be defined, which is wrong and will fail at link-time].
b) around line 803, there's the code that adds the trailing "4"
character to library names. This code needs not to be executed if Qt is
compiled as static libraries.
4) If Qt was compiled as static libraries, it doesn't make sense to run
PyQt4's configure.py without either -k or -g. You might want to add a
sanity check about this, since otherwise the whole PyQt4 compilation
would theoretically succeed, but each PyQt module would contain a copy
of Qt's code, probably causing hard crashes later at runtime.
Anyway, even with the above fixes, I was unable to compile PyQt4 with
consolidated module support. Next problem is something related to
qpointerpath.h not being included when compiled init_QPointF (the
"extender", whatever that means in SIP's terminology). I guess the
support isn't fully ready yet...
--
Giovanni Bajo
More information about the PyQt
mailing list