* Add --repository parameter to "pisi upgrade"

* Change short param -r to -b for bypass-repo-update

BUG:FIXED:6157
This commit is contained in:
Faik Uygur
2009-02-04 15:40:25 +00:00
parent 01c19c8694
commit da8fed6342
2 changed files with 16 additions and 10 deletions
+9 -6
View File
@@ -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)
+7 -4
View File
@@ -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)