Blair Zajac wrote:
I don't think we can just move the site-packages, can we?  There are .so's in 
there.

No, especially not because they are recorded in file_map.db to be installed at the old location. If you just move them, they are not known to MacPorts at all.

It would be possible to do it vice-versa and put a symlink into the framework pointing to /opt/local/lib/pythonX.Y/. If I recall correctly this is the current behavior used by the python2.4 port (which was chosen to avoid reinstalling all py-* ports?). But somehow I don't want to make an exception for lib/ and treat it different than include/ and bin/. Better put everything into the framework and make symlinks at the usual places pointing to it.

Shouldn't we require a recompile of all python 25 ports? It's safer. Just bump all the revisions after we release 1.6.1.

No, just bumping revisions is not enough. Some paths like /opt/local/lib/pythonX.Y will change from a directory to a symlink to the framework. Our registry can't handle that. If the directory still exists and the pythonX.Y port tries to create a symlink there it fails with "File exists".

So, all pyX.Y-* ports have to be completely uninstalled before doing the transition. That's the main problem why we need these hooks described in the wiki (Way 1 and Way 2).

If we also need to update this at build time, the python port groups need an update to set and restore this link for building. Is there no other way to choose a version than changing the Current symlink? I am afraid of race conditions when we often change this symlink...

We just need this symlink for building though? After build time doesn't everything have the Current symlink resolved?

Yes, that should be the case.

We would need a lock on simultaneous Python builds also.

At the moment I am thinking if we need the Current symlink at all. How would one use this Framework (see also my tests below)?

If we just add -I and -L with framework paths in the python port group we don't need to bother about the Current symlink at all. I think this is the best solution.

Are there any other options? I tried to link some program to the python framework in /opt/local using gcc, but it didn't work.

$ gcc -o foo foo.c -Z -syslibroot /opt/local -framework Python
ld: framework not found Python
collect2: ld returned 1 exit status

I think I had all necessary files in place:

$ ls -la /opt/local/Library/Frameworks/Python.framework/{,Versions}
/opt/local/Library/Frameworks/Python.framework/:
total 16
drwxr-xr-x  5 root  admin  170 May  9 09:23 .
drwxr-xr-x  4 root  admin  136 Jan 19 05:56 ..
lrwxr-xr-x  1 root  admin   20 May  9 09:22 Headers -> Versions/2.5/Headers
lrwxr-xr-x  1 root  admin   19 May  9 09:23 Python -> Versions/2.5/Python
lrwxr-xr-x 1 root admin 22 May 9 09:23 Resources -> Versions/2.5/Resources
drwxr-xr-x  6 root  admin  204 May  9 09:23 Versions

/opt/local/Library/Frameworks/Python.framework/Versions:
total 8
drwxr-xr-x   6 root  admin  204 May  9 09:23 .
drwxr-xr-x   5 root  admin  170 May  9 09:23 ..
drwxr-xr-x   8 root  admin  272 Apr 24 04:09 2.5
lrwxr-xr-x   1 root  admin    3 May  9 09:23 Current -> 2.5

So if someone knows how to link against a framework in a custom path, please advice.

Rainer
_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to