[Pythonmac-SIG] building universal binaries

Bob Ippolito bob at redivi.com
Fri Feb 3 21:10:57 CET 2006


On Feb 3, 2006, at 11:41 AM, Bob Ippolito wrote:

>
> On Feb 3, 2006, at 11:01 AM, Ronald Oussoren wrote:
>
>>
>> On 3-feb-2006, at 20:00, Bob Ippolito wrote:
>>
>>>
>>> On Feb 3, 2006, at 10:52 AM, Ronald Oussoren wrote:
>>>
>>>>
>>>> On 3-feb-2006, at 5:23, Bob Ippolito wrote:
>>>>
>>>>> It fixes a couple of the endian issues in the Mac modules
>>>>> (platform.mac_ver, applesingle, gestalt, and the OSType
>>>>> converter functions)
>>>>
>>>> How do you convert four character codes? Is 'abcd' big endian or
>>>> platform-native?
>>>
>>> 'abcd' is platform endian.
>>
>> Fine by me. Either choice seems to be defendable that why I asked.
>>
>> BTW. I know next to nothing about SVK, can I use an ordinary
>> subversion client to fetch files from your repository?
>
> Yes, it works fine, the repo is just a subversion repo.  svk does all
> its magic in a few svn properties (keeping track of merge history
> basically).
>
> The advantage that SVK has in cases like this is that I can create a
> branch of python24-maint without using the svn.python.org repo
> directly and then have the capability to merge changes one way or
> another, while still using svn repositories.

I think the only things missing from my branch currently are:

1) 10.3.9 support
2) Universal PythonLauncher
3) Revamped Mac/OSX/Dist scripts (probably should rewrite all that in  
Python and not hardcode everything)

I'll probably take the pbproj out of PythonLauncher and just build it  
with the Makefile since it can inherit the right build flags and such  
that way.

In other words, this seems to work correctly universally:

$ mkdir _build
$ cd _build
$ ../configure --enable-framework --enable-universalsdk && make
$ sudo make frameworkinstall

The only backwards incompatible change (beyond missing WASTE,  
PythonIDE, PackageManager) that I'm aware of is the  
distutils.util.get_platform string:  it no longer says darwin, it  
says macosx-{ver}-{arch} where ver is the major.minor version of Mac  
OS X (not the damned kernel) and arch is either fat (universal is too  
long), ppc, i386, or whatever falls through from the uname.  And of  
course, if you're using the universal build, you'll need the 10.4u  
SDK installed to compile any extensions.

This backwards incompatible change is mostly just a backport from  
setuptools' pkg_resources module.

$ python -c "from distutils.util import get_platform as p; print p()"
macosx-10.4.3-fat

First and foremost this change fixes running-Python-in-the-build- 
directory-with-Rosetta, but the secondary benefit is that this  
metadata will show up in Cheese Shop if you build an egg with a  
universal Python.  Thus, this universal python will create fat eggs  
and will have a proclivity for fat eggs.  The potential issue here is  
that it might refuse to use single-arch eggs, which I don't see as  
much of a problem really.  If it didn't change the arch name to "fat"  
then you wouldn't be able to tell universal and single-arch eggs apart.

-bob



More information about the Pythonmac-SIG mailing list