Gentoo Archives: gentoo-portage-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-portage-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-portage-dev] [PATCH] emirrordist: Report all stat() errors instead of first one
Date: Sun, 20 Oct 2019 09:55:24
Message-Id: 20191020095457.376497-1-mgorny@gentoo.org
1 When DeletionIterator fails, report all stat() errors. Reporting
2 just the first one results in confusing logs, suggesting that one
3 of the location did not exist but the other existed and was removed.
4 ---
5 lib/portage/_emirrordist/DeletionIterator.py | 8 ++++----
6 1 file changed, 4 insertions(+), 4 deletions(-)
7
8 diff --git a/lib/portage/_emirrordist/DeletionIterator.py b/lib/portage/_emirrordist/DeletionIterator.py
9 index cd773b3c8..dab6eaea2 100644
10 --- a/lib/portage/_emirrordist/DeletionIterator.py
11 +++ b/lib/portage/_emirrordist/DeletionIterator.py
12 @@ -25,20 +25,20 @@ class DeletionIterator(object):
13 distfiles_set.update(layout.get_filenames(distdir))
14 for filename in distfiles_set:
15 # require at least one successful stat()
16 - first_exception = None
17 + exceptions = []
18 for layout in reversed(self._config.layouts):
19 try:
20 st = os.stat(
21 os.path.join(distdir, layout.get_path(filename)))
22 except OSError as e:
23 - first_exception = e
24 + exceptions.append(e)
25 else:
26 if stat.S_ISREG(st.st_mode):
27 break
28 else:
29 - if first_exception is not None:
30 + if exceptions:
31 logging.error("stat failed on '%s' in distfiles: %s\n" %
32 - (filename, first_exception))
33 + (filename, '; '.join(str(x) for x in exceptions)))
34 continue
35
36 if filename in file_owners:
37 --
38 2.23.0

Replies