From: Michael Tremer Date: Wed, 7 Dec 2016 22:12:03 +0000 (+0100) Subject: Move downgrade() to PakfireContext X-Git-Tag: 0.9.28~1285^2~1373 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93f4100613298974f800229434f25b16ac61cf31;p=pakfire.git Move downgrade() to PakfireContext Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/base.py b/src/pakfire/base.py index 0af0142da..2d240a916 100644 --- a/src/pakfire/base.py +++ b/src/pakfire/base.py @@ -106,51 +106,6 @@ class Pakfire(object): if not ret: raise NotAnIPFireSystemError("You can run pakfire only on an IPFire system") - def downgrade(self, pkgs, logger=None, **kwargs): - assert pkgs - - if logger is None: - logger = logging.getLogger("pakfire") - - # Create a new request. - request = self.pool.create_request() - - # Fill request. - for pattern in pkgs: - best = None - for pkg in self.repos.whatprovides(pattern): - # Only consider installed packages. - if not pkg.is_installed(): - continue - - if best and pkg > best: - best = pkg - elif best is None: - best = pkg - - if best is None: - logger.warning(_("\"%s\" package does not seem to be installed.") % pattern) - else: - rel = self.pool.create_relation("%s < %s" % (best.name, best.friendly_version)) - request.install(rel) - - # Solve the request. - solver = self.pool.solve(request, allow_downgrade=True, **kwargs) - assert solver.status is True - - # Create the transaction. - t = transaction.Transaction.from_solver(self, solver) - t.dump(logger=logger) - - if not t: - logger.info(_("Nothing to do")) - return - - if not t.cli_yesno(): - return - - t.run() - def remove(self, pkgs, logger=None): if logger is None: logger = logging.getLogger("pakfire") @@ -545,6 +500,51 @@ class PakfireContext(object): # Run the transaction. t.run(logger=logger) + def downgrade(self, pkgs, logger=None, **kwargs): + assert pkgs + + if logger is None: + logger = logging.getLogger("pakfire") + + # Create a new request. + request = self.pakfire.pool.create_request() + + # Fill request. + for pattern in pkgs: + best = None + for pkg in self.pakfire.repos.whatprovides(pattern): + # Only consider installed packages. + if not pkg.is_installed(): + continue + + if best and pkg > best: + best = pkg + elif best is None: + best = pkg + + if best is None: + logger.warning(_("\"%s\" package does not seem to be installed.") % pattern) + else: + rel = self.pakfire.pool.create_relation("%s < %s" % (best.name, best.friendly_version)) + request.install(rel) + + # Solve the request. + solver = self.pakfire.pool.solve(request, allow_downgrade=True, **kwargs) + assert solver.status is True + + # Create the transaction. + t = transaction.Transaction.from_solver(self.pakfire, solver) + t.dump(logger=logger) + + if not t: + logger.info(_("Nothing to do")) + return + + if not t.cli_yesno(): + return + + t.run() + class PakfireBuilder(Pakfire): mode = "builder"