Opened 16 years ago

Closed 10 years ago

#17998 closed defect (wontfix)

Linking to Python 2.5 framework is broken due to broken symlinks

Reported by: evert.rol@… Owned by: jyrkiwahlstedt
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: Cc: mleinart@…, stromnov (Andrey Stromnov), jdswinbank (John Swinbank), garribald@…, dustym@…, dbsgeo@…, nox@…, mnick@…, SiggyF, martin@…, muanis@…
Port: python25

Description (last modified by mf2k (Frank Schima))

Linking to /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config/libpython2.5.a fails, because the file is a broken symlink (as an aside, the file identifies as a dynamically linked shared library, not a static one; is that a naming problem?).

This is a result of libpython2.5.a being a symlink to ../../../Python, thereby crossing a symlinked directory: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 points to /opt/local/lib/python2.5. Traversing this symlinked directory manually is no problem, but the symlinked file is broken. Comparing to the system installed variant, the symlinked directory is the other way around:

ls -l  /usr/lib/                                                   
lrwxr-xr-x   1 root  wheel        75  9 Nov  2007 python2.5 -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5

Manually fixing this now results in proper linking with libpython2.5 (I also added a libpython2.5.dylib in the config/ directory, which is simply a copy of libpython2.5.a). The directory structure now reads

ls -l /opt/local/lib
lrwxr-xr-x    1 root  admin        66 14 Jan 18:03 python2.5 -> ../Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
ls -l /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config
total 208
lrwxr-xr-x  1 root  admin     15 14 Jan 18:02 libpython2.5.a -> ../../../Python
lrwxr-xr-x  1 root  admin     15 14 Jan 18:02 libpython2.5.dylib -> ../../../Python

This ticket originated from ticket #17975

Attachments (2)

macports-python25.17998.patch (723 bytes) - added by mleinart@… 16 years ago.
patch-Portfile.diff (609 bytes) - added by sanchom (Sancho McCann) 16 years ago.
Updated python25 patch (patches most recent version).

Download all attachments as: .zip

Change History (25)

comment:1 Changed 16 years ago by mf2k (Frank Schima)

Owner: changed from macports-tickets@… to mww@…

Do you have the python_select port installed? Have you run:

sudo python_select python25

Also, are you really on macports 1.6? If so, you should run:

sudo port selfupdate
sudo port upgrade outdated

comment:2 in reply to:  1 Changed 16 years ago by evert.rol@…

Replying to macsforever2000@…:

Do you have the python_select port installed? Have you run:

sudo python_select python25

Yes,I have indeed.

Also, are you really on macports 1.6? If so, you should run:

sudo port selfupdate
sudo port upgrade outdated

Yes, have just done so. Doesn't change, that is, the broken symlinks remain (cannot check compiling & linking against the 2.5 framework, since that's manually changed now on my machine).

So the issue seems to remain, despite the upgrade.

comment:3 Changed 16 years ago by mleinart@…

Cc: mleinart@… added

Cc Me!

comment:4 Changed 16 years ago by mleinart@…

I had this same problem while trying to compile boost+python25 - quite annoying. Using the directory structure above fixes it.

I'm not sure about the .a vs .dylib - it feels like an error, but doesnt break anything for me. Note that there *is* a libpython2.5.dylib but it's only in /opt/local/lib/ and is created by a post-destroot action in the Portfile..

Anyway, I'm attaching a patch to fix the line in the Portfile that's conflicting with the relative symlink created by Python's Mac/Makefile

Changed 16 years ago by mleinart@…

comment:5 Changed 16 years ago by stromnov (Andrey Stromnov)

Cc: stromnov@… added

Cc Me!

comment:6 Changed 16 years ago by jdswinbank (John Swinbank)

Cc: swinbank@… added

Cc Me!

comment:7 Changed 16 years ago by mf2k (Frank Schima)

Cc: macsforever2000@… added

Cc Me!

comment:8 Changed 16 years ago by mleinart@…

Looks like my patch has some bad side effects - other packages (py25-*, likely others) install in /opt/local/lib/python2.5/site-packages which is now not an absolute path. Ports seems to get confused when adding the files in there to file_map after activation and errors out with "Error: Target org.macports.activate returned: Not a directory" - this leaves the package installed and activated, but the files are stranded and not listed in 'port contents'. I'm guessing this is the reason that /opt/local/lib/python2.5 was moved to be the real directory and /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 the symlink.

Unless someone wants to fix all of the ports installing in /opt/local/lib/python*/site-packages/, it looks like the symlink of libpython25.a in Mac/Makefile (in the Python2.5 source) needs to be patched to be absolute instead of relative.

I haven't looked at the other lang/python* ports - do they all move this lib/python2.5 directory from where Python's Makefiles install and re-symlink?

comment:9 Changed 16 years ago by garribald@…

Cc: garribald@… added

Cc Me!

comment:10 Changed 16 years ago by dustym@…

Cc: dustym@… added

Cc Me!

comment:11 Changed 16 years ago by dbsgeo@…

Cc: dbsgeo@… added

Cc Me!

comment:12 in reply to:  8 Changed 16 years ago by raimue (Rainer Müller)

Replying to mleinart@…:

You cannot install into ${prefix}/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 as it is a symlink. While I did the framework transition, I decided to use the old location for site-packages and symlink that into the framework. Otherwise it would have required manual reinstallation of all py25-* ports. Moving everything into the framework did also cause problems, for example binaries being installed in the framework only and not available in PATH without manual fixing.

comment:13 Changed 16 years ago by sanchom (Sancho McCann)

Cc: sanchom@… added

Cc Me!

Changed 16 years ago by sanchom (Sancho McCann)

Attachment: patch-Portfile.diff added

Updated python25 patch (patches most recent version).

comment:14 Changed 16 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

comment:15 Changed 15 years ago by jmroot (Joshua Root)

Cc: nox@… added; sanchom@… removed

comment:16 Changed 15 years ago by mnick@…

Cc: mnick@… added

Cc Me!

comment:17 Changed 15 years ago by SiggyF

Cc: f.baart@… added

Cc Me!

comment:18 Changed 15 years ago by martin@…

Cc: martin@… added

Cc Me!

comment:19 Changed 15 years ago by muanis@…

Cc: muanis@… added

Cc Me!

comment:20 Changed 15 years ago by jmroot (Joshua Root)

Owner: changed from mww@… to jwa@…

comment:27 Changed 11 years ago by jyrkiwahlstedt

Is this still a problem?

comment:28 Changed 11 years ago by mf2k (Frank Schima)

Cc: macsforever2000@… removed
Description: modified (diff)
Keywords: python boost framework symlink removed

comment:29 Changed 10 years ago by jmroot (Joshua Root)

Resolution: wontfix
Status: newclosed

python25 is deprecated and scheduled to be removed in a couple of months.

Note: See TracTickets for help on using tickets.