diff options
Diffstat (limited to 'pym/gentoolkit/revdep_rebuild/assign.py')
-rw-r--r-- | pym/gentoolkit/revdep_rebuild/assign.py | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/pym/gentoolkit/revdep_rebuild/assign.py b/pym/gentoolkit/revdep_rebuild/assign.py index 6dcf6e3..c4ae750 100644 --- a/pym/gentoolkit/revdep_rebuild/assign.py +++ b/pym/gentoolkit/revdep_rebuild/assign.py @@ -10,84 +10,84 @@ from settings import SETTINGS def assign_packages(broken, logger=logging): - ''' Finds and returns packages that owns files placed in broken. - Broken is list of files - ''' - assigned = set() - for group in os.listdir(SETTINGS['PKG_DIR']): - for pkg in os.listdir(SETTINGS['PKG_DIR'] + group): - f = SETTINGS['PKG_DIR'] + group + '/' + pkg + '/CONTENTS' - if os.path.exists(f): - try: - with open(f, 'r') as cnt: - for line in cnt.readlines(): - m = re.match('^obj (/[^ ]+)', line) - if m is not None: - m = m.group(1) - if m in broken: - found = group+'/'+pkg - if found not in assigned: - assigned.add(found) - logger.info('\t' + m + ' -> ' + bold(found)) - except Exception as e: - logger.warn(red(' !! Failed to read ' + f)) - - return assigned + ''' Finds and returns packages that owns files placed in broken. + Broken is list of files + ''' + assigned = set() + for group in os.listdir(SETTINGS['PKG_DIR']): + for pkg in os.listdir(SETTINGS['PKG_DIR'] + group): + f = SETTINGS['PKG_DIR'] + group + '/' + pkg + '/CONTENTS' + if os.path.exists(f): + try: + with open(f, 'r') as cnt: + for line in cnt.readlines(): + m = re.match('^obj (/[^ ]+)', line) + if m is not None: + m = m.group(1) + if m in broken: + found = group+'/'+pkg + if found not in assigned: + assigned.add(found) + logger.info('\t' + m + ' -> ' + bold(found)) + except Exception as e: + logger.warn(red(' !! Failed to read ' + f)) + + return assigned def get_best_match(cpv, cp, logger): - """Tries to find another version of the pkg with the same slot - as the deprecated installed version. Failing that attempt to get any version - of the same app - - @param cpv: string - @param cp: string - @rtype tuple: ([cpv,...], SLOT) - """ - - slot = portage.db[portage.root]["vartree"].dbapi.aux_get(cpv, ["SLOT"]) - logger.warn(yellow('Warning: ebuild "' + cpv + '" not found.')) - logger.info('Looking for %s:%s' %(cp, slot)) - try: - m = portdb.match('%s:%s' %(cp, slot)) - except portage.exception.InvalidAtom: - m = None - - if not m: - logger.warn(red('!!') + ' ' + yellow('Could not find ebuild for %s:%s' %(cp, slot))) - slot = [''] - m = portdb.match(cp) - if not m: - logger.warn(red('!!') + ' ' + yellow('Could not find ebuild for ' + cp)) - return m, slot + """Tries to find another version of the pkg with the same slot + as the deprecated installed version. Failing that attempt to get any version + of the same app + + @param cpv: string + @param cp: string + @rtype tuple: ([cpv,...], SLOT) + """ + + slot = portage.db[portage.root]["vartree"].dbapi.aux_get(cpv, ["SLOT"]) + logger.warn(yellow('Warning: ebuild "' + cpv + '" not found.')) + logger.info('Looking for %s:%s' %(cp, slot)) + try: + m = portdb.match('%s:%s' %(cp, slot)) + except portage.exception.InvalidAtom: + m = None + + if not m: + logger.warn(red('!!') + ' ' + yellow('Could not find ebuild for %s:%s' %(cp, slot))) + slot = [''] + m = portdb.match(cp) + if not m: + logger.warn(red('!!') + ' ' + yellow('Could not find ebuild for ' + cp)) + return m, slot def get_slotted_cps(cpvs, logger): - """Uses portage to reduce the cpv list into a cp:slot list and returns it - """ - from portage.versions import catpkgsplit - from portage import portdb + """Uses portage to reduce the cpv list into a cp:slot list and returns it + """ + from portage.versions import catpkgsplit + from portage import portdb - cps = [] - for cpv in cpvs: - parts = catpkgsplit(cpv) - cp = parts[0] + '/' + parts[1] - try: - slot = portdb.aux_get(cpv, ["SLOT"]) - except KeyError: - m, slot = get_best_match(cpv, cp, logger) - if not m: - logger.warn(red("Installed package: %s is no longer available" %cp)) - continue + cps = [] + for cpv in cpvs: + parts = catpkgsplit(cpv) + cp = parts[0] + '/' + parts[1] + try: + slot = portdb.aux_get(cpv, ["SLOT"]) + except KeyError: + m, slot = get_best_match(cpv, cp, logger) + if not m: + logger.warn(red("Installed package: %s is no longer available" %cp)) + continue - if slot[0]: - cps.append(cp + ":" + slot[0]) - else: - cps.append(cp) + if slot[0]: + cps.append(cp + ":" + slot[0]) + else: + cps.append(cp) - return cps + return cps if __name__ == '__main__': - print 'Nothing to call here' + print 'Nothing to call here' |