* install'u tersten orersek, remove yapariz. cok basit!

bilibiliblibliib
This commit is contained in:
Eray Özkural
2005-07-29 15:11:24 +00:00
parent 424fd885ec
commit c158fd38ae
4 changed files with 31 additions and 15 deletions
+1 -1
View File
@@ -60,7 +60,7 @@ def install_single_name(name):
pkg = packagedb.get_package(name) pkg = packagedb.get_package(name)
ui.info("Installing %s from repository %s\n" %(name, repo)) ui.info("Installing %s from repository %s\n" %(name, repo))
ui.debug("Package URI: %s\n" % pkg.packageURI) ui.debug("Package URI: %s\n" % pkg.packageURI)
install_single_uri(pkg.packageURI) install_single_file(pkg.packageURI)
else: else:
ui.error("Package %s not found in the repository file.\n" % pkg) ui.error("Package %s not found in the repository file.\n" % pkg)
+7 -4
View File
@@ -45,18 +45,21 @@ class PackageDB(object):
def get_rev_deps(self, name): def get_rev_deps(self, name):
name = str(name) name = str(name)
a = self.dr[name] if self.dr.has_key(name):
return a return self.dr[name]
else:
return []
def add_package(self, package_info): def add_package(self, package_info):
name = str(package_info.name) name = str(package_info.name)
self.d[name] = package_info self.d[name] = package_info
for dep in package_info.runtimeDeps: for dep in package_info.runtimeDeps:
dep_name = str(dep.package) dep_name = str(dep.package)
print '!!', name, dep.package
if self.dr.has_key(dep_name): if self.dr.has_key(dep_name):
self.dr[dep_name].append(dep) self.dr[dep_name].append( (name, dep) )
else: else:
self.dr[dep_name] = [dep] self.dr[dep_name] = [ (name, dep) ]
def clear(self): def clear(self):
self.d.clear() self.d.clear()
+12
View File
@@ -15,6 +15,18 @@ class PGraph(digraph):
pkg1 = packagedb.get_package(pkg) pkg1 = packagedb.get_package(pkg)
self.add_vertex(str(pkg), (pkg1.version, pkg1.release)) self.add_vertex(str(pkg), (pkg1.version, pkg1.release))
def add_plain_dep(self, pkg1name, pkg2name):
pkg1data = None
if not pkg1name in self.vertices():
pkg1 = packagedb.get_package(pkg1name)
pkg1data = (pkg1.version, pkg1.release)
pkg2data = None
if not pkg2name in self.vertices():
pkg2 = packagedb.get_package(pkg2name)
pkg2data = (pkg2.version, pkg2.release)
self.add_edge(str(pkg1name), str(pkg2name), ('d', None),
pkg1data, pkg2data )
def add_dep(self, pkg, depinfo): def add_dep(self, pkg, depinfo):
pkg1data = None pkg1data = None
if not pkg in self.vertices(): if not pkg in self.vertices():
+11 -10
View File
@@ -13,6 +13,7 @@ from ui import ui
from purl import PUrl from purl import PUrl
import util, dependency, pgraph, operations, packagedb import util, dependency, pgraph, operations, packagedb
from repodb import repodb from repodb import repodb
from installdb import installdb
from index import Index from index import Index
def install(packages): def install(packages):
@@ -122,22 +123,22 @@ def remove(A):
Bp = set() Bp = set()
for x in B: for x in B:
pkg = packagedb.get_package(x) pkg = packagedb.get_package(x)
print pkg print 'processing', pkg.name
rev_deps = packagedb.get_rev_deps(x) rev_deps = packagedb.get_rev_deps(x)
for dep in rev_deps: for (rev_dep, depinfo) in rev_deps:
print 'checking ', dep print 'checking ', rev_dep
# we don't deal with satisfied dependencies # we don't deal with unsatisfied dependencies
if not dependency.satisfiesDep(dep.package, dep): if dependency.satisfiesDep(rev_dep, depinfo):
if not dep.package in G_f.vertices(): if not rev_dep in G_f.vertices():
Bp.add(str(dep.package)) Bp.add(rev_dep)
G_f.add_rev_dep(dep, x) G_f.add_plain_dep(rev_dep, x)
B = Bp B = Bp
G_f.write_graphviz(sys.stdout) G_f.write_graphviz(sys.stdout)
l = G_f.topological_sort() l = G_f.topological_sort()
print l print l
for x in l: for x in l:
#operations.remove_single_name(x) if installdb.is_installed(x):
pass operations.remove_single(x)
return True # everything went OK :) return True # everything went OK :)