lauantai 24. lokakuuta 2009

PyQt ja Snow Leopard

Snow Leopardiin päivittämisen jälkeen piti päästä käyttämään muutamaa PyQt:lla koodattua omaa apuohjelmaa. PyQt ei kuitenkaan toiminut, jos ensin asensi valmiin Qt:n valmiista dmg-paketista, sitten käänsi SIPin ja seuraavaksi koitti kääntää PyQt:n. PyQt:n kääntäminen tyssäsi virheilmoitukseen:

/Library/Frameworks/QtCore.framework/Headers/qglobal.h:283:2: error: #error "You are building a 64-bit application, but using a 32-bit version of Qt. Check your build configuration."

Eli homman nimi taitaa olla se, että valmiissa dmg-paketissa binäärit ovat 32-bittisiä ja koska lumileopardin gcc kääntää kaiken automaattisesti 64-bittiseksi, niin eipä onnistu. No, ei muuta kuin hösseliksi. Ladataan sorsapaketti, puretaan se ja:

./configure -arch x86_64

Eli käännetään koko roska 64-bittiseksi. Ja sitten tutut:

make
sudo make install

Itse valitsin ne yöunet, enkä siis osaa sanoa, menikö käännössä 2 vai 6 tuntia :-). Seuraavaksi puretaan SIP:n paketti ja (tämä on nopea):

python configure.py
make
sudo make install

Ja seuraavaksi itse PyQt. Pura paketti ja anna seuraavat komennot. Toisin kuin dmg-installeri, sorsista kääntäminen ei (ainakaan minulla) laittanut qmakea pathiin eli joudut kertomaan sen sijainnin erillisellä valitsimella:

python configure.py -q /usr/local/Trolltech/Qt-4.5.3/bin/qmake
make
sudo make install

Ja homma toimii!

P.S. Ai niin, ja tuo dmg-paketti oli siinäkin mielessä kuppainen, että se ei kirjoittanut kuitteja /Library/Receipts/ -hakemistoon, joten uninstall-skripti ei toiminut vaan jouduin poistamaan koko roskan käsipelillä. Äh ja mur.

P.P.S. Tämän blogimerkinnän kirjoittamisen jälkeen asennuspaketit on saatettu korjata (ja toivottavasti onkin korjattu) Snow Leopard -yhteensopiviksi. Tässä artikkelissa käytettiin seuraavia versioita:
Qt 4.5.3
SIP 4.9.1
PyQt 4.6.1