@@ -205,14 +205,22 @@ python write_specfile () {
try:
owner = pwd.getpwuid(stat_f.st_uid).pw_name
except Exception as e:
- bb.error("Content of /etc/passwd in sysroot:\n{}".format(
- open(d.getVar("RECIPE_SYSROOT") +"/etc/passwd").read()))
+ filename = d.getVar('RECIPE_SYSROOT') + '/etc/passwd'
+ if os.path.exists(filename):
+ bb.error("Content of /etc/passwd in sysroot:\n{}".format(
+ open(filename).read()))
+ else:
+ bb.error("File {} doesn't exist in sysroot!").format(filename)
raise e
try:
group = grp.getgrgid(stat_f.st_gid).gr_name
except Exception as e:
- bb.error("Content of /etc/group in sysroot:\n{}".format(
- open(d.getVar("RECIPE_SYSROOT") +"/etc/group").read()))
+ filename = d.getVar("RECIPE_SYSROOT") +"/etc/group"
+ if os.path.exists(filename):
+ bb.error("Content of /etc/group in sysroot:\n{}".format(
+ open(filename).read()))
+ else:
+ bb.error("File {} doesn't exists in sysroot!".format(filename))
raise e
return "%attr({:o},{},{}) ".format(mode, owner, group)
Exception handler tries to read() /etc/passwd file in sysroot and if file doesn't exist for any reason then it raises FileNotFoundError exception which mask the original source of the problem and makes debugging of the issue more difficult. Fixes: Exception: FileNotFoundError: [Errno 2] No such file or directory: '/codebuild/output/src1899304708/src/build/tmp-container/work/core2-64-oe-linux/emqx-bin/4.3.12/recipe-sysroot/etc/passwd' Signed-off-by: Pavel Zhukov <pavel@zhukoff.net> --- meta/classes-global/package_rpm.bbclass | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)