From da8fed6342eadf4bc22ebf229f1a3f60b8ed83ad Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Wed, 4 Feb 2009 15:40:25 +0000 Subject: [PATCH] * Add --repository parameter to "pisi upgrade" * Change short param -r to -b for bypass-repo-update BUG:FIXED:6157 --- pisi/cli/upgrade.py | 15 +++++++++------ pisi/operations/upgrade.py | 11 +++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/pisi/cli/upgrade.py b/pisi/cli/upgrade.py index 2f764f56..8f049755 100644 --- a/pisi/cli/upgrade.py +++ b/pisi/cli/upgrade.py @@ -58,7 +58,7 @@ expanded to package names. help=_("Do not take build no into account.")) group.add_option("--security-only", action="store_true", default=False, help=_("Security related package upgrades only")) - group.add_option("-r", "--bypass-update-repo", action="store_true", + group.add_option("-b", "--bypass-update-repo", action="store_true", default=False, help=_("Do not update repositories")) group.add_option("--ignore-file-conflicts", action="store_true", default=False, help=_("Ignore file conflicts")) @@ -66,6 +66,8 @@ expanded to package names. default=False, help=_("Ignore package conflicts")) group.add_option("-c", "--component", action="append", default=None, help=_("Upgrade component's and recursive components' packages")) + group.add_option("-r", "--repository", action="store", + type="string", default=None, help=_('Name of the to be upgraded packages\' repository')) group.add_option("-f", "--fetch-only", action="store_true", default=False, help=_("Fetch upgrades but do not install.")) group.add_option("-x", "--exclude", action="append", @@ -90,17 +92,18 @@ expanded to package names. else: ctx.ui.info(_('Will not update repositories')) + repository = ctx.get_option('repository') components = ctx.get_option('component') packages = [] if components: for name in components: if self.componentdb.has_component(name): - packages.extend(self.componentdb.get_union_packages(name, walk=True)) + if repository: + packages.extend(self.componentdb.get_packages(name, walk=True, repo=repository)) + else: + packages.extend(self.componentdb.get_union_packages(name, walk=True)) packages.extend(self.args) - if packages == []: - packages = pisi.api.list_installed() - packages = pisi.blacklist.exclude_from(packages, ctx.const.blacklist) if ctx.get_option('exclude_from'): @@ -109,4 +112,4 @@ expanded to package names. if ctx.get_option('exclude'): packages = pisi.blacklist.exclude(packages, ctx.get_option('exclude')) - pisi.api.upgrade(packages) + pisi.api.upgrade(packages, repository) diff --git a/pisi/operations/upgrade.py b/pisi/operations/upgrade.py index a36e29ed..07f35689 100644 --- a/pisi/operations/upgrade.py +++ b/pisi/operations/upgrade.py @@ -26,8 +26,8 @@ import pisi.util as util import pisi.dependency as dependency import pisi.db -def upgrade(A): - upgrade_pkg_names(A) +def upgrade(A, repo=None): + upgrade_pkg_names(A, repo) def find_upgrades(packages, replaces): packagedb = pisi.db.packagedb.PackageDB() @@ -89,18 +89,21 @@ def find_upgrades(packages, replaces): return Ap -def upgrade_pkg_names(A = []): +def upgrade_pkg_names(A = [], repo=None): """Re-installs packages from the repository, trying to perform a minimum or maximum number of upgrades according to options.""" packagedb = pisi.db.packagedb.PackageDB() installdb = pisi.db.installdb.InstallDB() replaces = packagedb.get_replaces() - if not A: # if A is empty, then upgrade all packages A = installdb.list_installed() + if repo: + repo_packages = set(packagedb.list_packages(repo)) + A = set(A).intersection(repo_packages) + A_0 = A = set(A) Ap = find_upgrades(A, replaces) A = set(Ap)