classification
Title: OS X framework builds do not create ABI-suffixed libpython3.x
Type: Stage: resolved
Components: Build Versions: Python 3.2, Python 3.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ned.deily Nosy List: georg.brandl, ned.deily, python-dev, shibingli
Priority: normal Keywords: patch

Created on 2012-03-05 04:57 by shibingli, last changed 2012-07-24 10:50 by ned.deily. This issue is now closed.

Files
File name Uploaded Description Edit
py32_uWSGI.txt shibingli, 2012-03-05 05:29
issue14197.patch ned.deily, 2012-07-24 10:14 review
Messages (9)
msg154921 - (view) Author: shibingli (shibingli) Date: 2012-03-05 04:57
Artificial libpython3.2.a soft links to libpython3.2m.a
msg154923 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-03-05 05:18
Sorry, can you explain better what problem you are seeing including specific error messages?
msg154925 - (view) Author: shibingli (shibingli) Date: 2012-03-05 05:29
Use the Mac OS 10.7 compiler uWSGI Makefile.Py32 (make-f), will report a compile error. Information in the annex.Artificially will the soft libpython3.2.a / Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config-3.2m under connection to a libpython3.2m.a, the problem-solving.
msg154926 - (view) Author: shibingli (shibingli) Date: 2012-03-05 05:30
Has been revised to permit BUG Description

在 2012-3-5,下午1:18, Ned Deily 写道:

> 
> Ned Deily <nad@acm.org> added the comment:
> 
> Sorry, can you explain better what problem you are seeing including specific error messages?
> 
> ----------
> nosy: +ned.deily
> 
> _______________________________________
> Python tracker <report@bugs.python.org>
> <http://bugs.python.org/issue14197>
> _______________________________________
msg154930 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-03-05 08:09
Thank you for the additional information.  It appears the problem is that, for OS X framework builds, the ABI suffix (added in PEP 3149) is not used to create the shared library dylib name in the framework lib directory.  For example,

$ cd Library/Frameworks/Python.framework/Versions/3.2
$ ./bin/python3.2-config --libs
-ldl -framework CoreFoundation -lpython3.2m
$ ls -l ./lib
total 8
lrwxr-xr-x   1 root  wheel     9 Feb 24 09:44 libpython3.2.dylib@ -> ../Python
drwxrwxr-x   2 root  admin   170 Feb 24 08:49 pkgconfig/
drwxrwxr-x  32 root  admin  6290 Feb 24 08:49 python3.2/

But in an --enable-shared --with-pydebug build:

$ ./bin/python3.2-config --libs
-ldl -framework CoreFoundation -lpython3.2dm
$ ls -l ./lib
total 6920
-r-xr-xr-x   1 nad  pyd  3541320 Mar  4 23:40 libpython3.2dm.dylib*
drwxr-xr-x   2 nad  pyd      170 Mar  4 23:40 pkgconfig/
drwxr-xr-x  32 nad  pyd     6290 Mar  4 23:40 python3.2/

Looks like target frameworkinstallmaclib in Makefile.pre.in needs to be changed to include SOABI in the name for the lib symlink.
msg166270 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-07-24 10:14
The attached patch ensures that additional SOABI-suffixed symlinks are created in the framework lib and lib/pythonx.x/config-yy directories and fixes pythons.x-config to not return garbage data for the --ldflags option. 

# current
$ ls -l /Library/Frameworks/Python.framework/Versions/3.2/lib
total 8
lrwxr-xr-x   1 root  wheel     9 Jul 15 17:40 libpython3.2.dylib@ -> ../Python
drwxrwxr-x   2 root  admin   170 Apr 10 11:27 pkgconfig/
drwxrwxr-x  32 root  admin  6290 Apr 10 11:27 python3.2/

# with patch
$ ls -l /Library/Frameworks/Python.framework/Versions/3.2/lib
total 16
lrwxr-xr-x   1 root  wheel     9 Jul 24 02:43 libpython3.2.dylib@ -> ../Python
lrwxr-xr-x   1 root  wheel     9 Jul 24 02:43 libpython3.2m.dylib@ -> ../Python
drwxrwxr-x   2 root  admin   170 Jul 24 02:38 pkgconfig/
drwxrwxr-x  34 root  admin  6494 Jul 24 02:38 python3.2/

# current
$ ls -l /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config-3.2m/
total 256
-rw-rw-r--  1 root  admin  51118 Apr 10 11:27 Makefile
-rw-rw-r--  1 root  admin  15018 Apr 10 11:27 Setup
-rw-rw-r--  1 root  admin    370 Apr 10 11:27 Setup.config
-rw-rw-r--  1 root  admin     41 Apr 10 11:27 Setup.local
-rw-rw-r--  1 root  admin   2902 Apr 10 11:27 config.c
-rw-rw-r--  1 root  admin   1642 Apr 10 11:27 config.c.in
-rwxrwxr-x  1 root  admin   7122 Apr 10 11:27 install-sh*
lrwxr-xr-x  1 root  wheel     15 Jul 15 17:40 libpython3.2.a@ -> ../../../Python
lrwxr-xr-x  1 root  wheel     15 Jul 15 17:40 libpython3.2.dylib@ -> ../../../Python
-rwxrwxr-x  1 root  admin   7460 Apr 10 11:27 makesetup*
-rw-rw-r--  1 root  admin  18776 Apr 10 11:27 python.o

# with patch
$ ls -l /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config-3.3m/
total 280
-rw-rw-r--  1 root  admin  55198 Jul 24 02:38 Makefile
-rw-rw-r--  1 root  admin  15009 Jul 24 02:38 Setup
-rw-rw-r--  1 root  admin    370 Jul 24 02:38 Setup.config
-rw-rw-r--  1 root  admin     41 Jul 24 02:38 Setup.local
-rw-rw-r--  1 root  admin   2963 Jul 24 02:38 config.c
-rw-rw-r--  1 root  admin   1619 Jul 24 02:38 config.c.in
-rwxrwxr-x  1 root  admin   7122 Jul 24 02:38 install-sh*
lrwxr-xr-x  1 root  wheel     15 Jul 24 02:43 libpython3.2.a@ -> ../../../Python
lrwxr-xr-x  1 root  wheel     15 Jul 24 02:43 libpython3.2.dylib@ -> ../../../Python
lrwxr-xr-x  1 root  wheel     15 Jul 24 02:43 libpython3.2m.a@ -> ../../../Python
lrwxr-xr-x  1 root  wheel     15 Jul 24 02:43 libpython3.2m.dylib@ -> ../../../Python
-rwxrwxr-x  1 root  admin   7460 Jul 24 02:38 makesetup*
-rw-rw-r--  1 root  admin  18896 Jul 24 02:38 python.o

# current
$ python3.2-config --ldflags
-L/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config-3.2m -ldl -framework CoreFoundation -lpython3.2m -framework CoreFoundation Python.framework/Versions/3.2/Python

# with patch
$ python3.2-config --ldflags
-L/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.3/config-3.2m -ldl -framework CoreFoundation -lpython3.2m
msg166271 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-07-24 10:19
Georg, I'd like to apply this for both 3.2.4 and 3.3.0b2.  It's a low risk bug fix but does solve a real problem for users wanting to embed Python on OS X.  Issue15353 is also fixed by this.
msg166273 - (view) Author: Roundup Robot (python-dev) Date: 2012-07-24 10:46
New changeset 2d4f290ea71c by Ned Deily in branch '3.2':
Issue #14197: For OS X framework builds, ensure links to the shared
http://hg.python.org/cpython/rev/2d4f290ea71c

New changeset 51ac5f06dd04 by Ned Deily in branch 'default':
Issue #14197: merge
http://hg.python.org/cpython/rev/51ac5f06dd04
msg166274 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-07-24 10:50
Fix applied for release in 3.2.4 and (with release manager approval) for 3.3.0b2.
History
Date User Action Args
2012-07-24 11:00:15ned.deilylinkissue15353 superseder
2012-07-24 10:50:26ned.deilysetstatus: open -> closed
type: compile error ->
messages: + msg166274

components: + Build, - Macintosh, None
resolution: fixed
stage: patch review -> resolved
2012-07-24 10:46:13python-devsetnosy: + python-dev
messages: + msg166273
2012-07-24 10:19:16ned.deilysetnosy: + georg.brandl
messages: + msg166271
2012-07-24 10:14:06ned.deilysetfiles: + issue14197.patch
keywords: + patch
messages: + msg166270

stage: needs patch -> patch review
2012-03-05 08:09:21ned.deilysetversions: + Python 3.3
title: MacOS10.7 compiled uWSGI the issue. -> OS X framework builds do not create ABI-suffixed libpython3.x
messages: + msg154930

assignee: ned.deily
components: + Macintosh
stage: needs patch
2012-03-05 05:30:55shibinglisetmessages: + msg154926
2012-03-05 05:29:30shibinglisetfiles: + py32_uWSGI.txt

messages: + msg154925
2012-03-05 05:18:43ned.deilysetnosy: + ned.deily
messages: + msg154923
2012-03-05 04:57:08shibinglicreate