1 |
commit: fe9ab48e320da2f78325b493bf7b41c8799cb019 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Feb 11 18:33:45 2014 +0000 |
4 |
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> |
5 |
CommitDate: Tue Feb 11 18:36:25 2014 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=fe9ab48e |
7 |
|
8 |
revdep_rebuild: Track and report broken orphaned files. |
9 |
|
10 |
--- |
11 |
pym/gentoolkit/revdep_rebuild/assign.py | 11 ++++++++--- |
12 |
pym/gentoolkit/revdep_rebuild/rebuild.py | 13 ++++++++++--- |
13 |
2 files changed, 18 insertions(+), 6 deletions(-) |
14 |
|
15 |
diff --git a/pym/gentoolkit/revdep_rebuild/assign.py b/pym/gentoolkit/revdep_rebuild/assign.py |
16 |
index fc10187..8575532 100644 |
17 |
--- a/pym/gentoolkit/revdep_rebuild/assign.py |
18 |
+++ b/pym/gentoolkit/revdep_rebuild/assign.py |
19 |
@@ -23,7 +23,8 @@ def assign_packages(broken, logger, settings): |
20 |
''' Finds and returns packages that owns files placed in broken. |
21 |
Broken is list of files |
22 |
''' |
23 |
- assigned = set() |
24 |
+ assigned_pkgs = set() |
25 |
+ assigned_filenames = set() |
26 |
for group in os.listdir(settings['PKG_DIR']): |
27 |
grppath = settings['PKG_DIR'] + group |
28 |
if not os.path.isdir(grppath): |
29 |
@@ -42,13 +43,17 @@ def assign_packages(broken, logger, settings): |
30 |
m = m.group(1) |
31 |
if m in broken: |
32 |
found = group+'/'+pkg |
33 |
- assigned.add(found) |
34 |
+ assigned_pkgs.add(found) |
35 |
+ assigned_filenames.add(m) |
36 |
logger.info('\t' + m + ' -> ' + bold(found)) |
37 |
except Exception as e: |
38 |
logger.warn(red(' !! Failed to read ' + f)) |
39 |
logger.warn(red(' !! Error was:' + str(e))) |
40 |
|
41 |
- return assigned |
42 |
+ broken_filenames = set(broken) |
43 |
+ orphaned = broken_filenames.difference(assigned_filenames) |
44 |
+ |
45 |
+ return (assigned_pkgs, orphaned) |
46 |
|
47 |
|
48 |
def get_best_match(cpv, cp, logger): |
49 |
|
50 |
diff --git a/pym/gentoolkit/revdep_rebuild/rebuild.py b/pym/gentoolkit/revdep_rebuild/rebuild.py |
51 |
index 81e2b34..21ede45 100644 |
52 |
--- a/pym/gentoolkit/revdep_rebuild/rebuild.py |
53 |
+++ b/pym/gentoolkit/revdep_rebuild/rebuild.py |
54 |
@@ -221,7 +221,7 @@ def main(settings=None, logger=None): |
55 |
and check_temp_files(settings['DEFAULT_TMP_DIR'], logger=logger): |
56 |
libraries, la_libraries, libraries_links, binaries = read_cache( |
57 |
settings['DEFAULT_TMP_DIR']) |
58 |
- assigned = analyse( |
59 |
+ assigned, orphaned = analyse( |
60 |
settings=settings, |
61 |
logger=logger, |
62 |
libraries=libraries, |
63 |
@@ -230,12 +230,19 @@ def main(settings=None, logger=None): |
64 |
binaries=binaries, |
65 |
_libs_to_check=_libs_to_check) |
66 |
else: |
67 |
- assigned = analyse(settings, logger, _libs_to_check=_libs_to_check) |
68 |
+ assigned, orphaned = analyse(settings, logger, _libs_to_check=_libs_to_check) |
69 |
|
70 |
- if not assigned: |
71 |
+ if not assigned and not orphaned: |
72 |
logger.warn('\n' + bold('Your system is consistent')) |
73 |
# return the correct exit code |
74 |
return 0 |
75 |
+ elif orphaned: |
76 |
+ # blank line for beter visibility of the following lines |
77 |
+ logger.warn('') |
78 |
+ logger.warn(red('!!! Broken orphaned files: ') + |
79 |
+ bold('No installed package was found for the following:')) |
80 |
+ for filename in orphaned: |
81 |
+ logger.warn(red(' * ') + filename) |
82 |
|
83 |
has_masked = False |
84 |
tmp = [] |