Comment 9 for bug 529987

Revision history for this message
beholder (loonar) wrote :

I have same problem and finally get over it. I have macbook 5.1 (without pro, but with Core 2 Duo) with Snow Leopard, but I can't load 64-bit kernel (seems Apple disabled it for my model). So I have 32-bit kernel on 64-bit processor.

When I've installed mac-bzr.dmg and try to run 'bzr explorer', I've got the same error "mach-o, but wrong architecture". It seems that SIP and PyQt bundled with mac installer are for x86_64 only, but everything else - Python and other software has universal i386 and x86_64 builds. So, after some googling I've decided to install PyQt by myself. I followed these steps:

1. Download Mac binary package using Cocoa for Mac OS X 10.5 - 10.6 (32-bit and 64-bit)
http://get.qt.nokia.com/qt/source/qt-mac-cocoa-opensource-4.6.2.dmg

2. Install it - it's just binary package

3. Then download SIP and PyQt from http://www.riverbankcomputing.co.uk/

4. Build and install them with commands:

SIP:

cd sip
python configure.py --arch=i386 --arch=x86_64
sudo make clean (to undo previous makes)
sudo make
sudo make install

and PyQt:

cd PyQt-mac-gpl
python configure.py --use-arch=i386
sudo make clean (to undo previous makes)
sudo make
sudo make install

Most important here are arch and use-arch parts - without them PyQt and SIP are builds as x86_64 only! And with these parameters they builds as universal (x86_64 + i386).

For check, after builds I enter the command: file /Library/Python/2.6/site-packages/PyQt4/QtGui.so

and got:
/Library/Python/2.6/site-packages/PyQt4/QtGui.so: Mach-O universal binary with 2 architectures
/Library/Python/2.6/site-packages/PyQt4/QtGui.so (for architecture i386): Mach-O bundle i386
/Library/Python/2.6/site-packages/PyQt4/QtGui.so (for architecture x86_64): Mach-O 64-bit bundle x86_64

And from the python shell:

import PyQt4
import PyQt4.QtCore

Everything works, no errors!

So I think, if authors of binary package for mac will made builds using these parameters (arch), anyone can use it (even on old computers), because builds will be universal.