[Pythonmac-SIG] Build hell resolved: 10.4/10.5/10.6

Aahz aahz at pythoncraft.com
Thu Mar 4 20:00:50 CET 2010


[cross-posted to both pythonmac-sig and pyobjc-dev for max audience,
Reply-To set to pyobjc-dev for discussion]

I finally figured out how to build my app:

Turns out that in order to use PyObjC 2.2 you need py2app 0.4.3 -- but
PyObjC 1.4 needs py2app 0.3.6.  (PyObjC 1.4 is for the main app running
on 10.4/10.5/10.6; PyObjC 2.2 is used for FSEvents on 10.5/10.6,
previously PyObjC 2.2b2 for 10.5 only, but 2.2b2 doesn't work on 10.6)

I built PyObjC 2.2 on 10.5 from source.  It's a right royal pain (partly
because PyPI has no mechanism for downloading *source* dependencies), and
I really hope that the next release of PyObjC makes it much easier to
build from source.  (Or that binaries for 10.5 get included.)

My clue that py2app was the issue was when I figured out that 

from Foundation import NSAutoreleasePool, NSMutableArray, NSString

causing

ValueError: Don't know CF type for typestr '^{__CFAllocator=}', cannot create special wrapper

only and always occurred in a build, not from plain Python, even on 10.6,
meaning that PyObjC wasn't the problem.  

Incidentally, using py2app 0.4.3 with PyObjC 1.4 resulted in some error
about corrupted NIB file that I didn't record exactly.

Before someone asks how I can use both PyObjC 1.4 and PyObjC 2.2, I'm
playing games with ~/Library/Python/2.6 being a symlink that gets swapped
during the build process.  (Obviously, I end up with two different apps
built.)
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"Many customs in this life persist because they ease friction and promote
productivity as a result of universal agreement, and whether they are
precisely the optimal choices is much less important." --Henry Spencer


More information about the Pythonmac-SIG mailing list