From: Markus Lehtonen Date: Wed, 22 Feb 2017 15:26:50 +0000 (+0200) Subject: license.bbclass: run chown only under pseudo X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e1aad45967b1f4f52d919a886a2dd394e45e2d2;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git license.bbclass: run chown only under pseudo The copy_license_files() function in license.bbclass is called in two different contexts. First, it is run as part of the do_populate_lic task. In addition, it is called from do_package task when LICENSE_CREATE_PACKAGE is enabled. The function has code that changes the owner of license files to root which is meant only to happend in the latter case - i.e. under do_package which is run under pseudo. Previously, the code was blindly always running chown and just ignored errors that happened when running from do_populate_lic. This patch changes it to be more intelligent, only doing chown when running under pseudo. [YOCTO #10897] (From OE-Core rev: 19118a1408f32bb24d95ab3d7d7faed58cbae900) Signed-off-by: Markus Lehtonen Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass index f97e39f3c5f..0ff6560a138 100644 --- a/meta/classes/license.bbclass +++ b/meta/classes/license.bbclass @@ -377,18 +377,9 @@ def copy_license_files(lic_files_paths, destdir): canlink = False else: raise - try: - if canlink: - os.chown(dst,0,0) - except OSError as err: - if err.errno in (errno.EPERM, errno.EINVAL): - # Suppress "Operation not permitted" error, as - # sometimes this function is not executed under pseudo. - # Also ignore "Invalid argument" errors that happen in - # some (unprivileged) container environments (no root). - pass - else: - raise + # Only chown if we did hardling, and, we're running under pseudo + if canlink and os.environ.get('PSEUDO_DISABLED') == '0': + os.chown(dst,0,0) if not canlink: begin_idx = int(beginline)-1 if beginline is not None else None end_idx = int(endline) if endline is not None else None