On Thu, Jun 24, 2010 at 11:27, Guido van Rossum <gu...@python.org> wrote:
> On Thu, Jun 24, 2010 at 10:48 AM, Brett Cannon <br...@python.org> wrote:
>> On Thu, Jun 24, 2010 at 08:50, Barry Warsaw <ba...@python.org> wrote:
>>> This is a follow up to PEP 3147.  That PEP, already implemented in Python 
>>> 3.2,
>>> allows for Python source files from different Python versions to live 
>>> together
>>> in the same directory.  It does this by putting a magic tag in the .pyc file
>>> name and placing the .pyc file in a __pycache__ directory.
>>>
>>> Distros such as Debian and Ubuntu will use this to greatly simplifying
>>> deploying Python, and Python applications and libraries.  Debian and Ubuntu
>>> usually ship more than one version of Python, and currently have to play
>>> complex games with symlinks to make this work.  PEP 3147 will go a long way 
>>> to
>>> eliminating the need for extra directories and symlinks.
>>>
>>> One more thing I've found we need though, is a way to handled shared 
>>> libraries
>>> for extension modules.  Just as we can get name collisions on foo.pyc, we 
>>> can
>>> get collisions on foo.so.  We obviously cannot install foo.so built for 
>>> Python
>>> 3.2 and foo.so built for Python 3.3 in the same location.  So symlink
>>> nightmare's mini-me is back.
>>>
>>> I have a fairly simple fix for this.  I'd actually be surprised if this 
>>> hasn't
>>> been discussed before, but teh Googles hasn't turned up anything.
>>>
>>> The idea is to put the Python version number in the shared library file 
>>> name,
>>> and extend .so lookup to find these extended file names.  So for example, 
>>> we'd
>>> see foo.3.2.so instead, and Python would know how to dynload both that and 
>>> the
>>> traditional foo.so file too (for backward compatibility).
>>>
>>> (On file naming: the original patch used foo.so.3.2 and that works just as
>>> well, but I thought there might be tools that expect exactly a '.so' suffix,
>>> so I changed it to put the Major.Minor version number to the left of the
>>> extension.  The exact naming scheme is of course open to debate.)
>>>
>>
>> While the idea is fine with me since I won't have any of my
>> directories cluttered with multiple .so files, I would still want to
>> add some moniker showing that the version number represents the
>> interpreter and not the .so file. If I read "foo.3.2.so", that naively
>> seems to mean to mean the foo module's 3.2 release is what is in
>> installed, not that it's built for CPython 3.2. So even though it
>> might be redundant, I would still want the VM name added.
>
> Well, for versions of the .so itself, traditionally version numbers
> are appended *after* the .so suffix (check your /lib directory :-).
>

Second thing you taught me today (first was the x[:0] trick)!

I've also been on OS X too long; /usr/lib is just .dynalib and that
puts the version number before the extension.

>> Adding the VM name also doesn't make extension modules the exclusive
>> domain of CPython either. If some other VM decides to make their own
>> .so files that are not binary compatible then we should not preclude
>> that as this solution it is nothing more than it makes a string
>> comparison have to look at 7 more characters.
>>
>> -Brett
>>
>> P.S.: I wish we could drop use of the 'module.so' variant at the same
>> time, for consistency sake and to cut out a stat call, but I know that
>> is asking too much.
>
> I wish so too. IIRC there used to be some modules that on Windows were
> wrappers around 3rd party DLLs and you can't have foo.dll as the
> module wrapping foo.dll the 3rd party DLL. (On Unix this problem
> doesn't exist because the 3rd party .so would be named libfoo.so, not
> foo.so.)

Wouldn't Barry's proposed solution actually fill this need since it
will give the file a custom Python suffix that more-or-less guarantees
no name clash with a third-party DLL?
_______________________________________________
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