From: Paul Eggleton Date: Mon, 31 Oct 2016 03:59:43 +0000 (+1300) Subject: classes/license: fix handling of symlinks pointed to in LIC_FILES_CHKSUM X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26e8ebc51103d050253c2ec5af3ef4807d35655b;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git classes/license: fix handling of symlinks pointed to in LIC_FILES_CHKSUM If you set LIC_FILES_CHKSUM to point to a relative symlink then you'll get "Could not copy license file" warnings in copy_license_files() since the symlink won't be valid after it's copied. If the source is a symlink then we need to dereference it first. I encountered this when I used recipetool on the sources for capnproto, where the c++ directory contains a LICENSE.txt symlink to the LICENSE file in the parent directory, and this symlink ends up being pointed to in LIC_FILES_CHKSUM. (From OE-Core rev: c4d3b1e9c37b920444e53d3231552da18d101882) (From OE-Core rev: 650ddf1d8b687845099a8ac463c3a550a7965095) Signed-off-by: Paul Eggleton Signed-off-by: Ross Burton Signed-off-by: Richard Purdie Signed-off-by: Armin Kuster Signed-off-by: Richard Purdie --- diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass index da4fc3e1d4c..660b85f6195 100644 --- a/meta/classes/license.bbclass +++ b/meta/classes/license.bbclass @@ -351,6 +351,8 @@ def copy_license_files(lic_files_paths, destdir): dst = os.path.join(destdir, basename) if os.path.exists(dst): os.remove(dst) + if os.path.islink(src): + src = os.path.realpath(src) canlink = os.access(src, os.W_OK) and (os.stat(src).st_dev == os.stat(destdir).st_dev) if canlink: try: