On 15/03/13 22:07, Phil Thompson wrote:
On Fri, 15 Mar 2013 15:51:00 +1300, Glenn Ramsey <g...@componic.co.nz>
wrote:
Hi,

I have built a 32 bit version of PyQt on OSX (10.8.2) using Qt5, but it
doesn't
work:

Python 2.7.3 (default, Feb 26 2013, 11:03:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on
darwin
Type "help", "copyright", "credits" or "license" for more information.
import PyQt4.QtCore
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ImportError:

dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtCore.so,
2): Symbol not found: _sipQtConnect
    Referenced from:

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtCore.so
    Expected in: flat namespace
   in

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtCore.so

Is there a workaround for this issue?

My setup:

I'm using the git version of qt5 (5.0.x), because there is a bug in
5.0.1
that
prevents 32 bit builds on OSX, with the following config.
./configure -platform macx-clang-32 -nomake docs -nomake examples
-nomake
demos
-nomake tests  -nomake webkit -opensource -confirm-license -release
-no-c++11

sip 4.14.4
python configure.py --arch i386

PyQt 4.10 (commercial)
python configure.py --use-arch i386

I had to change qt_macx_spec in configure.py to get it work:
#qt_macx_spec = 'macx-g++'
qt_macx_spec = 'macx-clang-32'

The python version is 2.7 from MacPorts, built as 32 bit.

I have also rebuilt both sip and PyQt4 after doing a "make clean".

Glenn

You are doing a few things which, at best, are untested.

Can you "import sip"?

yes, that works fine:

Python 2.7.3 (default, Feb 26 2013, 11:03:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sip
>>> dir(sip)
['SIP_VERSION', 'SIP_VERSION_STR', '_C_API', '__doc__', '__file__', '__name__', '__package__', '_unpickle_enum', '_unpickle_type', 'cast', 'delete', 'dump', 'getapi', 'isdeleted', 'ispycreated', 'ispyowned', 'setapi', 'setdeleted', 'setdestroyonexit', 'settracemask', 'simplewrapper', 'transferback', 'transferto', 'unwrapinstance', 'voidptr', 'wrapinstance', 'wrapper', 'wrappertype']
>>> print sip.SIP_VERSION_STR
4.14.4


There may be an issue building sip with macx-g++ and PyQt with
macx-clang-32.

Even though the spec is macx-g++ sip actually builds using the system cc and c++, which are symlinks to clang and clang++ so they are both being built by the clang compiler.

sip-4.14.4$ python configure.py --arch=i386
This is SIP 4.14.4 for Python 2.7.3 on darwin.
The SIP code generator will be installed in
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin.
The sip module will be installed in
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages.
The sip.h header file will be installed in
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7.
The default directory to install .sip files in is
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/share/sip.
The platform/compiler configuration is macx-g++.
MacOS/X binaries will be created for i386.
Creating siplib/sip.h...
Creating siplib/siplib.c...
Creating siplib/siplib.sbf...
Creating sipconfig.py...
Creating top level Makefile...
Creating sip code generator Makefile...
Creating sip module Makefile...
sip-4.14.4$ make
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o main.o main.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o transform.o transform.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o gencode.o gencode.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o extracts.o extracts.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o export.o export.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o heap.o heap.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o parser.o parser.c
cc -c -pipe -arch i386 -Os -w -DNDEBUG -I. -o lexer.o lexer.c
c++ -headerpad_max_install_names -arch i386 -o sip main.o transform.o gencode.o extracts.o export.o heap.o parser.o lexer.o cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o siplib.o siplib.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o apiversions.o apiversions.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o descriptors.o descriptors.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o qtlib.o qtlib.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o threads.o threads.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o objmap.o objmap.c cc -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o voidptr.o voidptr.c c++ -c -pipe -fPIC -arch i386 -Os -w -DNDEBUG -I. -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -o bool.o bool.cpp c++ -headerpad_max_install_names -bundle -undefined dynamic_lookup -arch i386 -o sip.so siplib.o apiversions.o descriptors.o qtlib.o threads.o objmap.o voidptr.o bool.o

 From previous experience I don't trust MacPorts stuff.

It was all working fine with Qt 4.8.4/PyQt4.9.5, but there is an issue with 4.8.4 on OSX 10.6 that prompted us attempt to move to Qt 5.

What alternatives do I have given that I need a 32 bit build (due to some 3rd party code that isn't yet 64 bit compatible)?

Glenn
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to