summaryrefslogtreecommitdiff
path: root/apt/cache.py
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-08-21 16:55:11 +0200
committerJulian Andres Klode <jak@debian.org>2009-08-21 16:55:11 +0200
commitdea3fad6d30e85f184d34e80490ad24ac89a9438 (patch)
treecc437e0777a88423199bcd15ac464e400b35ffe8 /apt/cache.py
parente3c630140e6595126046866a40e11e90c74278f2 (diff)
parent63ea10b9f81725c9304aa729de4a3768a28b4c81 (diff)
downloadpython-apt-dea3fad6d30e85f184d34e80490ad24ac89a9438.tar.gz
Merge 0.7.13.0 from unstable.
Diffstat (limited to 'apt/cache.py')
-rw-r--r--apt/cache.py40
1 files changed, 38 insertions, 2 deletions
diff --git a/apt/cache.py b/apt/cache.py
index ae4254e0..eff07ef8 100644
--- a/apt/cache.py
+++ b/apt/cache.py
@@ -278,7 +278,7 @@ class Cache(object):
return providers
@deprecated_args
- def update(self, fetch_progress=None):
+ def update(self, fetch_progress=None, pulse_interval=0):
"""Run the equivalent of apt-get update.
The first parameter *fetch_progress* may be set to an instance of
@@ -287,13 +287,15 @@ class Cache(object):
"""
lockfile = apt_pkg.config.find_dir("Dir::State::Lists") + "lock"
lock = apt_pkg.get_lock(lockfile)
+
if lock < 0:
raise LockFailedException("Failed to lock %s" % lockfile)
try:
if fetch_progress is None:
fetch_progress = apt.progress.FetchProgress()
- return self._cache.update(fetch_progress, self._list)
+ return self._cache.update(fetch_progress, self._list,
+ pulse_interval)
finally:
os.close(lock)
@@ -434,6 +436,40 @@ class Cache(object):
cachePreChange = function_deprecated_by(cache_pre_change)
+class ProblemResolver(object):
+ """Resolve problems due to dependencies and conflicts.
+
+ The first argument 'cache' is an instance of apt.Cache.
+ """
+
+ def __init__(self, cache):
+ self._resolver = apt_pkg.ProblemResolver(cache._depcache)
+
+ def clear(self, package):
+ """Reset the package to the default state."""
+ self._resolver.clear(package._pkg)
+
+ def install_protect(self):
+ """mark protected packages for install or removal."""
+ self._resolver.install_protect()
+
+ def protect(self, package):
+ """Protect a package so it won't be removed."""
+ self._resolver.protect(package._pkg)
+
+ def remove(self, package):
+ """Mark a package for removal."""
+ self._resolver.remove(package._pkg)
+
+ def resolve(self):
+ """Resolve dependencies, try to remove packages where needed."""
+ self._resolver.resolve()
+
+ def resolve_by_keep(self):
+ """Resolve dependencies, do not try to remove packages."""
+ self._resolver.resolve_by_keep()
+
+
# ----------------------------- experimental interface