Hello all, I'm encountering a failure like below when using hashequiv. What is happening is recipe "A" is installing some files in do_install, and changing the group of those files. The group is defined by a different recipe ("B"). There is no dependency between A and B, so when A:do_package runs, the group is not present in A's pseudo database. OEOuthashBasic tries to lookup the owning group name of the file, and a KeyError is raised.
A workaround is to add: DEPENDS += "B" to recipe A, so that the group ends up in A's pseudo database. This works, but seems really really hacky, since it's only necessary when hashequiv is active. So why is the group name used in the hash, as opposed to the GID? (I also have the same question regarding user name vs UID). If the GID was used we wouldn't have this issue. Thanks, Chris ______________ ERROR: A-1.0-r0 do_package: Error executing a python function in exec_python_func() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_python_func() autogenerated', lineno: 2, function: <module> 0001: *** 0002:sstate_report_unihash(d) 0003: File: '/home/laplante/yocto/sources/poky/meta/classes/sstate.bbclass', lineno: 802, function: sstate_report_unihash 0798: report_unihash = getattr(bb.parse.siggen, 'report_unihash', None) 0799: 0800: if report_unihash: 0801: ss = sstate_state_fromvars(d) *** 0802: report_unihash(os.getcwd(), ss['task'], d) 0803:} 0804: 0805:# 0806:# Shell function to decompress and prepare a package for installation File: '/home/laplante/yocto/sources/poky/bitbake/lib/bb/siggen.py', lineno: 485, function: report_unihash 0481: 0482: if "." in self.method: 0483: (module, method) = self.method.rsplit('.', 1) 0484: locs['method'] = getattr(importlib.import_module(module), method) *** 0485: outhash = bb.utils.better_eval('method(path, sigfile, task, d)', locs) 0486: else: 0487: outhash = bb.utils.better_eval(self.method + '(path, sigfile, task, d)', locs) 0488: 0489: try: File: '/home/laplante/yocto/sources/poky/bitbake/lib/bb/utils.py', lineno: 421, function: better_eval 0417: if extraglobals: 0418: ctx = copy.copy(ctx) 0419: for g in extraglobals: 0420: ctx[g] = extraglobals[g] *** 0421: return eval(source, ctx, locals) 0422: 0423:@contextmanager 0424:def fileslocked(files): 0425: """Context manager for locking and unlocking file locks.""" File: '<string>', lineno: 1, function: <module> File "<string>", line 1, in <module> File: '/home/laplante/yocto/sources/poky/meta/lib/oe/sstatesig.py', lineno: 553, function: OEOuthashBasic 0549: process(root) 0550: for f in files: 0551: if f == 'fixmepath': 0552: continue *** 0553: process(os.path.join(root, f)) 0554: finally: 0555: os.chdir(prev_dir) 0556: 0557: return h.hexdigest() File: '/home/laplante/yocto/sources/poky/meta/lib/oe/sstatesig.py', lineno: 516, function: process 0512: add_perm(stat.S_IXOTH, 'x') 0513: 0514: if include_owners: 0515: update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name) *** 0516: update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name) 0517: 0518: update_hash(" ") 0519: if stat.S_ISBLK(s.st_mode) or stat.S_ISCHR(s.st_mode): 0520: update_hash("%9s" % ("%d.%d" % (os.major(s.st_rdev), os.minor(s.st_rdev)))) Exception: KeyError: 'getgrgid(): gid not found: 3004' ______________ -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core