[issue15205] distutils dereferences symlinks on Mac OS X but not on Linux

2012-06-27 Thread Ollie Walsh

New submission from Ollie Walsh :

Hi,

This is related to #12585.

Distutils sdist builds a package tree using hardlinks to the source if 
supported by the OS. This is then tarred/zipped/etc...

If the source contains symbolic links to external files:

On Linux (and apparently Solaris) they are not dereferenced and the resulting 
package is broken.

On OSX (and apparently all BSD kernels) a hardlink to a symlink will 
dereference the symlink first and the resulting tgz package is ok. However I 
would expect issue #8876 to be more likely as the symlink could references a 
different filesystem which would case hardlinking to fail.


In #12585 I assume that zip dereferences the symlinks which masks the issue.

distutils2 appears to always copy instead of hardlinking resolving all of these 
issues.

distutils can be monkey patched to do the same: 
http://article.gmane.org/gmane.comp.python.distutils.devel/2078

--
assignee: eric.araujo
components: Distutils
messages: 164149
nosy: eric.araujo, ollie.wa...@gmail.com, tarek
priority: normal
severity: normal
status: open
title: distutils dereferences symlinks on Mac OS X but not on Linux
type: behavior
versions: Python 2.7

___
Python tracker 
<http://bugs.python.org/issue15205>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue15205] distutils dereferences symlinks on Mac OS X but not on Linux

2012-07-04 Thread Ollie Walsh

Ollie Walsh  added the comment:

Hi,

> As I said in the other bug, symlinks handling in not fully specified

Yes. I've mostly submitted a bug report in case anybody else encounters the 
problem.

> At present I am not sure if having symlinks in a distribution makes sense

I agree.
In my case symlinks are being used to restructure a large legacy module into 
smaller packages. When creating sdists the symlinks are dereferenced on another 
developer's host (OSX) and all is well but they on my host (Linux) I get 
packages with broken symlinks.

> BTW the example you link to is not at all monkey-patching

My mistake. When I worked around this issue I did monkey-patch sdist. I also 
just wrapped the source path is os.path.readlink() before hardlinking. I think 
the approach in that link is a much better solution so I have referred to it 
instead.

-Ollie

--

___
Python tracker 
<http://bugs.python.org/issue15205>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue15205] distutils dereferences symlinks on Mac OS X but not on Linux

2012-07-04 Thread Ollie Walsh

Ollie Walsh  added the comment:

PS that should be os.readlink()

--

___
Python tracker 
<http://bugs.python.org/issue15205>
___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com