# Copyright 2005-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import portage class CleanResume(object): short_desc = "Discard emerge --resume merge lists" def name(): return "cleanresume" name = staticmethod(name) def check(self, **kwargs): onProgress = kwargs.get('onProgress', None) messages = [] mtimedb = portage.mtimedb resume_keys = ("resume", "resume_backup") maxval = len(resume_keys) if onProgress: onProgress(maxval, 0) for i, k in enumerate(resume_keys): try: d = mtimedb.get(k) if d is None: continue if not isinstance(d, dict): messages.append("unrecognized resume list: '%s'" % k) continue mergelist = d.get("mergelist") if mergelist is None or not hasattr(mergelist, "__len__"): messages.append("unrecognized resume list: '%s'" % k) continue messages.append("resume list '%s' contains %d packages" % \ (k, len(mergelist))) finally: if onProgress: onProgress(maxval, i+1) return messages def fix(self, **kwargs): onProgress = kwargs.get('onProgress', None) delete_count = 0 mtimedb = portage.mtimedb resume_keys = ("resume", "resume_backup") maxval = len(resume_keys) if onProgress: onProgress(maxval, 0) for i, k in enumerate(resume_keys): try: if mtimedb.pop(k, None) is not None: delete_count += 1 finally: if onProgress: onProgress(maxval, i+1) if delete_count: mtimedb.commit()