aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-02-11 10:33:45 -0800
committerBrian Dolbec <dolsen@gentoo.org>2014-02-11 10:36:25 -0800
commitfe9ab48e320da2f78325b493bf7b41c8799cb019 (patch)
treea52c0bc35fe666130381d8b5cbeb3e73339a2080
parentrevdep_rebuild/assign.py: Remove dead code. (diff)
downloadgentoolkit-fe9ab48e320da2f78325b493bf7b41c8799cb019.tar.gz
gentoolkit-fe9ab48e320da2f78325b493bf7b41c8799cb019.tar.bz2
gentoolkit-fe9ab48e320da2f78325b493bf7b41c8799cb019.zip
revdep_rebuild: Track and report broken orphaned files.
-rw-r--r--pym/gentoolkit/revdep_rebuild/assign.py11
-rw-r--r--pym/gentoolkit/revdep_rebuild/rebuild.py13
2 files changed, 18 insertions, 6 deletions
diff --git a/pym/gentoolkit/revdep_rebuild/assign.py b/pym/gentoolkit/revdep_rebuild/assign.py
index fc10187..8575532 100644
--- a/pym/gentoolkit/revdep_rebuild/assign.py
+++ b/pym/gentoolkit/revdep_rebuild/assign.py
@@ -23,7 +23,8 @@ def assign_packages(broken, logger, settings):
''' Finds and returns packages that owns files placed in broken.
Broken is list of files
'''
- assigned = set()
+ assigned_pkgs = set()
+ assigned_filenames = set()
for group in os.listdir(settings['PKG_DIR']):
grppath = settings['PKG_DIR'] + group
if not os.path.isdir(grppath):
@@ -42,13 +43,17 @@ def assign_packages(broken, logger, settings):
m = m.group(1)
if m in broken:
found = group+'/'+pkg
- assigned.add(found)
+ assigned_pkgs.add(found)
+ assigned_filenames.add(m)
logger.info('\t' + m + ' -> ' + bold(found))
except Exception as e:
logger.warn(red(' !! Failed to read ' + f))
logger.warn(red(' !! Error was:' + str(e)))
- return assigned
+ broken_filenames = set(broken)
+ orphaned = broken_filenames.difference(assigned_filenames)
+
+ return (assigned_pkgs, orphaned)
def get_best_match(cpv, cp, logger):
diff --git a/pym/gentoolkit/revdep_rebuild/rebuild.py b/pym/gentoolkit/revdep_rebuild/rebuild.py
index 81e2b34..21ede45 100644
--- a/pym/gentoolkit/revdep_rebuild/rebuild.py
+++ b/pym/gentoolkit/revdep_rebuild/rebuild.py
@@ -221,7 +221,7 @@ def main(settings=None, logger=None):
and check_temp_files(settings['DEFAULT_TMP_DIR'], logger=logger):
libraries, la_libraries, libraries_links, binaries = read_cache(
settings['DEFAULT_TMP_DIR'])
- assigned = analyse(
+ assigned, orphaned = analyse(
settings=settings,
logger=logger,
libraries=libraries,
@@ -230,12 +230,19 @@ def main(settings=None, logger=None):
binaries=binaries,
_libs_to_check=_libs_to_check)
else:
- assigned = analyse(settings, logger, _libs_to_check=_libs_to_check)
+ assigned, orphaned = analyse(settings, logger, _libs_to_check=_libs_to_check)
- if not assigned:
+ if not assigned and not orphaned:
logger.warn('\n' + bold('Your system is consistent'))
# return the correct exit code
return 0
+ elif orphaned:
+ # blank line for beter visibility of the following lines
+ logger.warn('')
+ logger.warn(red('!!! Broken orphaned files: ') +
+ bold('No installed package was found for the following:'))
+ for filename in orphaned:
+ logger.warn(red(' * ') + filename)
has_masked = False
tmp = []