[gnome-continuous-yocto/gnomeostree-3.28-rocko: 6428/8267] classes/buildhistory: fix failures collecting output signatures
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 6428/8267] classes/buildhistory: fix failures collecting output signatures
- Date: Sun, 17 Dec 2017 04:49:51 +0000 (UTC)
commit 43ceb87454f49707750833b3130c15290b12ccfd
Author: Paul Eggleton <paul eggleton linux intel com>
Date: Tue May 9 12:38:39 2017 +1200
classes/buildhistory: fix failures collecting output signatures
It's possible for tasks to stage symlinks that point to non-existent
files; an example is ncurses-native.do_populate_sysroot. There wasn't
any error checking here so this broke the build when "task" was included
in BUILDHISTORY_FEATURES. In any case we shouldn't be following symlinks
and getting the sha256sum of the link target - we need concern ourselves
only with the target path, so check if the file is a link and sha256 the
target path instead if it is. If it's neither a regular file nor a
symlink (perhaps a pipe or a device), just skip it.
(From OE-Core rev: f60520d97f53dafe783f61eb58fe249798a1e1be)
Signed-off-by: Paul Eggleton <paul eggleton linux intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/classes/buildhistory.bbclass | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 601b29f..81784ee 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -301,6 +301,8 @@ python buildhistory_emit_outputsigs() {
if not "task" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
return
+ import hashlib
+
taskoutdir = os.path.join(d.getVar('BUILDHISTORY_DIR'), 'task', 'output')
bb.utils.mkdirhier(taskoutdir)
currenttask = d.getVar('BB_CURRENTTASK')
@@ -314,7 +316,17 @@ python buildhistory_emit_outputsigs() {
if fname == 'fixmepath':
continue
fullpath = os.path.join(root, fname)
- filesigs[os.path.relpath(fullpath, cwd)] = bb.utils.sha256_file(fullpath)
+ try:
+ if os.path.islink(fullpath):
+ sha256 = hashlib.sha256(os.readlink(fullpath).encode('utf-8')).hexdigest()
+ elif os.path.isfile(fullpath):
+ sha256 = bb.utils.sha256_file(fullpath)
+ else:
+ continue
+ except OSError:
+ bb.warn('buildhistory: unable to read %s to get output signature' % fullpath)
+ continue
+ filesigs[os.path.relpath(fullpath, cwd)] = sha256
with open(taskfile, 'w') as f:
for fpath, fsig in sorted(filesigs.items(), key=lambda item: item[0]):
f.write('%s %s\n' % (fpath, fsig))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]