[Distutils] Platform naming standardization

M.-A. Lemburg mal at egenix.com
Wed Jan 13 23:44:22 CET 2010

Ronald Oussoren wrote:
> On 13 Jan, 2010, at 18:41, M.-A. Lemburg wrote:
>> Ronald Oussoren wrote:
>>> On Wednesday, January 13, 2010, at 04:15PM, "M.-A. Lemburg" <mal at egenix.com> wrote:
>>>>> 2) On OS X, the modification to the value returned by
>>>>> pkg_resources.get_platform() isn't correct for fat version of Python
>>>>> 2.5, as detailed in setuptools issue 19.  To solve that, we're using the
>>>>> patch I submitted to the issue (with a couple recent changes).
>>>> I think that using "fat" in the version string is wrong for
>>>> Mac OS X, since there are many ways to build fat binaries.
>>>> Instead, the version string should include the details of
>>>> all included builds, ie. 'x86', 'x64', 'ppc', 'ppc64'.
>>> Maybe in the long run, but for now "fat" has a well-defined meaning for distutils: fat == ppc + x86_64. There is also a number of other variants, as described in the documentation for distutils.
>> I think you meant: fat == ppc + i386.
> Thats right.
>> However, it's also possible to build binaries with ppc, i386 and
>> x86_64 - as are shipped with Mac OS X 10.6, so "fat" is not really
>> well-defined and could lead to trying to install 32-bit software for
>> a 64-bit build of Python.
> "fat" is well-defined for distutils, see the definition of get_platform at <http://docs.python.org/distutils/apiref.html>. 
> For distutils "fat" is always a universal binary with architectures i386 and ppc, with alternate names for other variants.

Thanks for pointing that out, however, I don't think that creating
aliases for combinations of various different architectures
is a good idea.

It's better to make the included architectures explicit and use
this logic for all platforms, not just Mac OS X.

>> IMHO, it's better to list the actually supported architectures
>> as e.g. "darwin-i386-ppc" or "darwin-i386-ppc-x86_64".
> That is not how distutils currently works. I also object to "darwin" as a prefix, the platform is named "macosx". Darwin is the opensource unix variant used in OSX and that name shouldn't be interchangeably with macosx.  I'm also unhappy that sys.platform is "darwin" on OSX, but it's probably too late to change that.

"Darwin" is what Mac OS X itself returns as "uname -s" and that's
generally what's being used for sys.platform on Unix systems (configure
sets MACHDEP which then gets transmogrified into PLATFORM which then
is fed to Py_GetPlatform() which then gets exposed as sys.platform
- just wrote that down here, since I just spent half an hour trying
to find the definition of PLATFORM...).

I agree, though, that the marketing names of the OSes are
somewhat more intuitive :-)

Marc-Andre Lemburg

Professional Python Services directly from the Source  (#1, Jan 13 2010)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/

::: Try our new mxODBC.Connect Python Database Interface for free ! ::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611

More information about the Distutils-SIG mailing list