]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commit
oe/copy_buildsystem.py: dereference symlink rbt/cp
authorRobert Yang <liezhi.yang@windriver.com>
Mon, 31 Oct 2016 14:03:59 +0000 (07:03 -0700)
committerRobert Yang <liezhi.yang@windriver.com>
Mon, 31 Oct 2016 15:39:11 +0000 (08:39 -0700)
commitbc402b553331b622af35b7fea7d30d82c7f2f686
tree463f2fcad29cd1fc6e3d5b264484db477aa03106
parent42b4fa2f923244bc047874752d2e0381ff6f0a25
oe/copy_buildsystem.py: dereference symlink

When there is a relative symlink in the layer, for example:
symA -> ../out/of/layer/file

symA will be invalid fater copied, it would be invalid from build time
if it points to a relative path, and would be invalid after extracted
the sdk if it points to a absolute py. Dereference symlink when copy
will fix the problem.

Use tar rather than shutil.copytree() to copy is because:
1) shutil.copytree(symlinks=Fasle) has bugs when dereference symlinks:
   https://bugs.python.org/issue21697
   And Ubunutu 1404 doesn't upgrade python3 to fix the problem.

2) shutil.copytree(symlinks=False) raises errors when there is a invalid
   symlink, and tar just prints a warning, tar is preferred here since
   the real world is unpredicatable

3) tar is faster than shutil.copytree() as said by oe.path.copytree()

So use tar to copy.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
meta/lib/oe/copy_buildsystem.py