[Scons-users] Bug: Copy(..., symlinks=False) of symlinks with relative target pathnames
William Blevins
wblevins001 at gmail.com
Mon Mar 23 19:52:28 EDT 2015
Nathan,
I think I understand what you are talking about. Though this patch cannot
solve that problem since you are recursively calling copy_func with
symlink=True in the second pass thus copying the symlink itself.
I will make a patch for this and a test case.
V/R,
William
On Mon, Mar 23, 2015 at 12:17 PM, Nathan Kennedy <nkennedy at grammatech.com>
wrote:
> Issue 2395 added a "symlinks" parameter to SCons.Defaults.Copy to copy
> symlinks rather than their target, defaulting to true. When using
> symlinks=False to copy the symlink's target, if the target has a relative
> path (e.g. "../../libfoo.so"), the path is resolved relative to the current
> working directory rather than the symlink's directory. If these differ, the
> copy will either fail or copy the wrong file.
>
> We fixed this with the patch below.
>
> Best,
> Nathan
>
> --- src/engine/SCons/Defaults.py.orig 2015-03-23 12:10:51.983117000
> -0400
> +++ src/engine/SCons/Defaults.py 2015-03-23 12:11:54.057539000 -0400
> @@ -35,10 +35,11 @@
>
> __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
>
>
> import os
> +import os.path
> import errno
> import shutil
> import stat
> import time
> import sys
> @@ -200,11 +201,11 @@
> elif os.path.islink(src):
> linkto = os.readlink(src)
> if symlinks:
> return os.symlink(linkto, dest)
> else:
> - return copy_func(dest, linkto, symlinks)
> + return copy_func(dest, os.path.realpath(src))
> elif os.path.isfile(src):
> return shutil.copy2(src, dest)
> else:
> return shutil.copytree(src, dest, symlinks)
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150323/086c6d67/attachment.html>
More information about the Scons-users
mailing list