From fa0d76d1adf5eaf5fc793ff0eb99b15c135ef1a1 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 3 Feb 2010 09:00:53 +0100 Subject: [PATCH] [sulfur] improve orphaned packages handling --- sulfur/src/sulfur/__init__.py | 18 +++++++++--------- sulfur/src/sulfur/package.py | 9 +++++++-- sulfur/src/sulfur/packages.py | 5 +++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/sulfur/src/sulfur/__init__.py b/sulfur/src/sulfur/__init__.py index 560513ba0..171765ac0 100644 --- a/sulfur/src/sulfur/__init__.py +++ b/sulfur/src/sulfur/__init__.py @@ -1684,6 +1684,14 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin): self.ui.rbUpdatesSimpleLabel.set_markup(txt_adv) self.ui.rbUpdatesLabel.set_markup(txt_adv) + def _show_packages_group_caching(self): + for k in ("installed", "reinstallable", "masked", + "user_unmasked", "downgrade"): + try: + self.etpbase.get_groups(k) + except ProgrammingError: + continue + def show_packages(self, back_to_page = None, on_init = False): action = self.lastPkgPB @@ -1699,15 +1707,7 @@ class SulfurApplication(Controller, SulfurApplicationEventsMixin): if action == "updates": # speed up first queue taint iteration self.etpbase.get_groups("available") - def do_more_caching(): - for k in ("installed", "reinstallable", "masked", - "user_unmasked", "downgrade"): - try: - self.etpbase.get_groups(k) - except ProgrammingError: - continue - return False - gobject.idle_add(do_more_caching) + gobject.idle_add(self._show_packages_group_caching) # set updates label raw_updates = len(self.etpbase.get_raw_groups('updates')) diff --git a/sulfur/src/sulfur/package.py b/sulfur/src/sulfur/package.py index d5fcf6693..cf7c9db05 100644 --- a/sulfur/src/sulfur/package.py +++ b/sulfur/src/sulfur/package.py @@ -156,8 +156,13 @@ class EntropyPackage: def __str__(self): if self.pkgset: return self.matched_atom - return str(self.dbconn.retrieveAtom(self.matched_id) + "~" + \ - str(self.dbconn.retrieveRevision(self.matched_id))) + return str(self.dbconn.retrieveAtom(self.matched_id) + \ + etpConst['entropyrevisionprefix'] + \ + str(self.dbconn.retrieveRevision(self.matched_id))) + \ + etpConst['entropyrepoprefix'] + self.repoid_clean + + def __repr__(self): + return "" % (id(self), str(self),) def __cmp__(self, pkg): if pkg.matched_atom == self.matched_atom: diff --git a/sulfur/src/sulfur/packages.py b/sulfur/src/sulfur/packages.py index fdd596689..2bb095114 100644 --- a/sulfur/src/sulfur/packages.py +++ b/sulfur/src/sulfur/packages.py @@ -690,6 +690,11 @@ class EntropyPackages: return yp def _pkg_get_orphans(self): + + # make sure we have these configured + self.get_groups("installed") + self.get_groups("reinstallable") + updates, remove, fine, spm_fine = self.Entropy.calculate_updates( critical_updates = False) # Filter out packages installed from unavailable repositories, this is