[Python-Dev] Mapping Darwin 8.2.0 to Mac OS X 10.4.2 in platform.py

Bob Ippolito bob at redivi.com
Thu Sep 22 05:44:31 CEST 2005


On Sep 21, 2005, at 11:26 PM, Guido van Rossum wrote:
> The platform module has a way to map system names such as returned by
> uname() to marketing names. It maps SunOS to Solaris, for example. But
> it doesn't map Darwin to Mac OS X. I think I know how to map Darwin
> version numbers to OS X version numbers: from
> http://www.opensource.apple.com/darwinsource/ it is clear that OS X
> 10.a.b corresponds to Darwin (a+4).b, except for OS X versions <=
> 10.1. I'd be happy to write the code and add it to system_alias() in
> platform.py. Is this a good idea?

No, it's not. There are other mismatches between Mac OS X version 
and Darwin kernel version (e.g. 10.3.0 and 10.3.1 used the same 
kernel version).
The only correct way to do it with public API is to use gestalt, 
which platform.mac_ver() does. There are other ways (reading a 
plist, parsing the output of /usr/bin/sw_vers, using the same SPI 
that /usr/bin/sw_vers uses...), but gestalt is the only public API.
The one caveat with platform.mac_ver() is that it was broken for some 
version(s) of Python. I don't remember when that was fixed. It 
definitely works for Python 2.3.5 (ships with Mac OS X 10.4) and 
Python 2.4.1, but I'm relatively certain it was broken with the 
Python 2.3.0 that shipped with Mac OS X 10.3, and perhaps also the 
Python 2.2.0 that shipped with Mac OS X 10.2.
Anyway, this information isn't in the uname. You can guess with the 
uname, but it requires lots of special cases and maintenance.
-bob


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /