summaryrefslogtreecommitdiff
path: root/apt
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-06-20 21:26:23 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-06-20 21:26:23 +0000
commitc25600f6cfb209dde14fbfc17aaef78519411a30 (patch)
treefb9e5b57e2404b76e568689b7d719461d5f10e90 /apt
parent33c18310943c8ee582fe57b1295e753f417d5eb8 (diff)
downloadpython-apt-c25600f6cfb209dde14fbfc17aaef78519411a30.tar.gz
* added support for the pkgProblemResolver()
Diffstat (limited to 'apt')
-rw-r--r--apt/cache.py6
-rw-r--r--apt/package.py20
2 files changed, 20 insertions, 6 deletions
diff --git a/apt/cache.py b/apt/cache.py
index 39dca925..9852f26f 100644
--- a/apt/cache.py
+++ b/apt/cache.py
@@ -142,11 +142,13 @@ class FilteredCache(object):
" set the current active filter "
self._filters = []
self._filters.append(filter)
- self._reapplyFilter()
+ #self._reapplyFilter()
+ # force a cache-change event that will result in a refiltering
+ self.cache.CachePostChange()
def FilterCachePostChange(self):
" called internally if the cache changes, emit a signal then "
- print "FilterCachePostChange()"
+ #print "FilterCachePostChange()"
self._reapplyFilter()
# def connect(self, name, callback):
diff --git a/apt/package.py b/apt/package.py
index de9a9dbb..806cb0c3 100644
--- a/apt/package.py
+++ b/apt/package.py
@@ -19,12 +19,18 @@ class Package(object):
ver = self._depcache.GetCandidateVer(self._pkg)
else:
ver = self._pkg.CurrentVer
+
+ # check if we found a version
+ if ver == None:
+ print "No version for: %s (Candiate: %s)" % (self._pkg.Name, UseCandidate)
+ return False
+
if ver.FileList == None:
- print "got: %s " % ver.FileList
- return
+ print "No FileList for: %s " % self._pkg.Name()
+ return False
file, index = ver.FileList.pop(0)
self._records.Lookup((file,index))
-
+ return True
# basic information
def Name(self):
@@ -123,9 +129,15 @@ class Package(object):
self._pcache.CachePreChange()
self._depcache.MarkDelete(self._pkg)
self._pcache.CachePostChange()
- def MarkInstall(self):
+ def MarkInstall(self, autoFix=True):
self._pcache.CachePreChange()
self._depcache.MarkInstall(self._pkg)
+ # try to fix broken stuff
+ if autoFix and self._depcache.BrokenCount > 0:
+ fixer = apt_pkg.GetPkgProblemResolver(self._depcache)
+ fixer.Clear(self._pkg)
+ fixer.Protect(self._pkg)
+ fixer.Resolve(True)
self._pcache.CachePostChange()
def MarkUpgrade(self):
if self.IsUpgradable():