From 899514c477aaf1681f9d18a022721410a36c5a8c Mon Sep 17 00:00:00 2001 From: Tomasz Dziendzielski Date: Mon, 1 Feb 2021 01:32:56 +0100 Subject: sstatesig: Add descriptive error message to getpwuid/getgrgid "uid/gid not found" KeyError If path is not owned by any user installed on target it gives insufficient error "getpwuid(): uid not found" which may be misleading. This exception occurs if uid/gid of path was not found in PSEUDO_PASSWD files, which simply means the path is owned by host user and there is host user contamination. Add more information to the exception message to make it easier for user to debug. [YOCTO #14031] (From OE-Core rev: 38540b59ed4ec8632e30a5fd6364b010d9da8470) Signed-off-by: Tomasz Dziendzielski Signed-off-by: Richard Purdie --- meta/lib/oe/sstatesig.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'meta') diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index adfe2e403b..84999ee94d 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py @@ -552,9 +552,11 @@ def OEOuthashBasic(path, sigfile, task, d): try: update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name) update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name) - except KeyError: + except KeyError as e: bb.warn("KeyError in %s" % path) - raise + msg = ("KeyError: %s\nPath %s is owned by uid %d, gid %d, which doesn't match " + "any user/group on target. This may be due to host contamination." % (e, path, s.st_uid, s.st_gid)) + raise Exception(msg).with_traceback(e.__traceback__) if include_timestamps: update_hash(" %10d" % s.st_mtime) -- cgit v1.2.3-54-g00ecf