r408 - branches/rewrite/src
Sergio Talens-Oliag
partial-mirror-devel@lists.alioth.debian.org
Tue, 14 Dec 2004 06:57:24 -0700
Author: sto
Date: Tue Dec 14 06:57:19 2004
New Revision: 408
Modified:
branches/rewrite/src/PackageList.py
Log:
Add recursiveResolveDepends
Modified: branches/rewrite/src/PackageList.py
==============================================================================
--- branches/rewrite/src/PackageList.py (original)
+++ branches/rewrite/src/PackageList.py Tue Dec 14 06:57:19 2004
@@ -123,8 +123,9 @@
self._provides[p].remove(package)
- def resolveDepends(self, pkglist):
- for p in self.values():
+ def _resolveDepends(self, plist, pkglist):
+ newdeps = []
+ for p in plist:
for field in ('Depends', 'Pre-Depends'):
if p.has_key(field):
for dependencies in p[field]:
@@ -136,7 +137,8 @@
# We have it on full list
# TODO: Add version cheking
if pkg in pkglist:
- self.add(pkglist[pkg])
+ if pkg not in newdeps:
+ newdeps.append(pkglist[pkg])
break
# When a package is not found, we should look
@@ -144,18 +146,36 @@
found = False
if pkglist._provides.has_key(pkg):
for vpkg in pkglist._provides[pkg]:
- if vpkg['Package'] in self:
+ if vpkg['Package'] in self or vpkg['Package'] in newdeps:
found = True
break
else:
- self.add(pkglist._provides[pkg][0])
+ if pkglist._provides[pkg][0] not in newdeps:
+ newdeps.append(pkglist._provides[pkg][0])
found = True
break
if found:
break
else:
print pkg, "unavailable. Your mirror could be broken seriously."
-
+ return newdeps
+
+ def resolveDepends(self, pkglist):
+ deplist = self._resolveDepends(self.values(), pkglist)
+ if len(deplist) > 0:
+ for p in deplist:
+ self.add(p)
+
+ def recursiveResolveDepends(self, pkglist):
+ deplist = self._resolveDepends(self.values(), pkglist)
+ while len(deplist) > 0:
+ for p in deplist:
+ try:
+ self.add(p)
+ except PackageAlreadyExists:
+ pass
+ deplist = self._resolveDepends(deplist, pkglist)
+
def filter(self, condition):
packages = PackageList()