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)
Change History (25)
comment:1 follow-up: 2 Changed 16 years ago by mf2k (Frank Schima)
Owner: | changed from macports-tickets@… to mww@… |
---|
comment:2 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: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@…
Attachment: | macports-python25.17998.patch added |
---|
comment:8 follow-up: 12 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:12 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.
Changed 16 years ago by sanchom (Sancho McCann)
Attachment: | patch-Portfile.diff added |
---|
Updated python25 patch (patches most recent version).
comment:15 Changed 15 years ago by jmroot (Joshua Root)
Cc: | nox@… added; sanchom@… removed |
---|
comment:20 Changed 15 years ago by jmroot (Joshua Root)
Owner: | changed from mww@… to jwa@… |
---|
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: | new → closed |
python25 is deprecated and scheduled to be removed in a couple of months.
Do you have the python_select port installed? Have you run:
Also, are you really on macports 1.6? If so, you should run: