On 7 Mar 2011, at 01:46, Ned Deily wrote:

> In article <5ab965c9-7d5f-41b6-a5e9-2b881e92a...@barrys-emacs.org>,
> Barry Scott <ba...@barrys-emacs.org> wrote:
>> There is a break with convention for the include folder name:
>> 
>> /Library/Frameworks/Python.framework/Versions/3.2/include/python3.2m/
>> 
>> What does the "m" mean?
> 
> The "m" means that the Python was configured and built with pymalloc.
> 
> This change was introduced by Issue9807 "deriving configuration 
> information for different builds with the same prefix" which is an 
> adjunct to PEP 3149 "ABI version tagged .so files".  As described in the 
> PEP, the idea is to allow the installation of multiple build variants on 
> one system, for instance, a set of debug shared libraries (with flag 
> "d") alongside the normal optimized libraries.  This was extended in 
> Issue9807 to cover the corresponding Include files.   On current Debian 
> installs of python3.2, for instance, one sees:
> 
> $ ls -ld /usr/include/python3.2*
> lrwxrwxrwx [...] /usr/include/python3.2 -> python3.2mu
> drwxr-xr-x [...] /usr/include/python3.2mu
> 
> ("u" means "wide-unicode".)
> 
> For OS X framework builds, the unversioned convenience link is not 
> created:
> 
> $ cd /Library/Frameworks/Python.framework/Versions/3.2
> $ ls -l
> lrwxr-xr-x [...] Headers@ -> include/python3.2m
> -r-xrwxr-x [...] Python*
> drwxrwxr-x [...] Resources/
> drwxrwxr-x [...] bin/
> drwxrwxr-x [...] include/
> drwxrwxr-x [...] lib/
> drwxrwxr-x [...] share/
> $ ls -ld ./include/python3.2*
> drwxrwxr-x [...] ./include/python3.2m/
> 
> Perhaps it should.  And the implications of the multiple build variants 
> feature for OS X frameworks build have probably not yet been fully 
> considered.  However, there are now multiple ways to find the proper 
> location of the include files and library files, both in 
> platform-independent and framework-specific (note the "Headers" link) 
> ways.  And they all seem to produce the correct results.
> 
> $ bin/python3.2
>>>> import sysconfig
>>>> sysconfig.get_path('include')
> '/Library/Frameworks/Python.framework/Versions/3.2-release_10.6/include/p
> ython3.2m'
> ^D
> $ bin/python3-config --include
> -I/Library/Frameworks/Python.framework/Versions/3.2-release_10.6/include/
> python3.2m 
> -I/Library/Frameworks/Python.framework/Versions/3.2-release_10.6/include/
> python3.2m
> 
> (So good you get it twice in the same line.)
> 
> In some ways, this issue falls into a bit of a black hole.  For other 
> Unix-y platforms, the PSF (python.org) does not provide binaries or 
> installers so issues like installation locations are to some extent at 
> the discretion of the various distributors (Debian, Fedora, et al).  For 
> Mac OS X and Windows, the PSF also plays the role of binaries/installer 
> distributor so some things specific to those installers may need to be 
> documented outside of the standard Python documentation set (or properly 
> noted).
> 
> Feel free to open an issue if you feel something should be changed (code 
> or documentation).

Thanks for this full explanation.

I can use the Headers link and that will make it possible to do the same thing
for compiling against all versions from 2.4 to 3.2.

Barry


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to