* implement component dependencies

This commit is contained in:
Eray Özkural
2005-11-17 18:15:50 +00:00
parent f49c259f4e
commit 62dd152428
6 changed files with 18 additions and 12 deletions
+2 -2
View File
@@ -140,7 +140,7 @@ def package_graph(A, ignore_installed = False):
for x in B:
pkg = packagedb.get_package(x)
#print pkg
for dep in pkg.runtimeDependencies:
for dep in pkg.runtimeDependencies():
if ignore_installed:
if dependency.installed_satisfies_dep(dep):
continue
@@ -162,7 +162,7 @@ def configure_pending():
Bp = set()
for x in B.keys():
pkg = packagedb.get_package(x)
for dep in pkg.runtimeDependencies:
for dep in pkg.runtimeDependencies():
if dep.package in G_f.vertices():
G_f.add_dep(x, dep)
B = Bp
+1 -1
View File
@@ -101,7 +101,7 @@ def satisfies_dependencies(pkg, deps, sat = installed_satisfies_dep):
return True
def satisfies_runtime_deps(pkg):
deps = packagedb.get_package(pkg).runtimeDependencies
deps = packagedb.get_package(pkg).runtimeDependencies()
return satisfies_dependencies(pkg, deps)
def installable(pkg):
+2 -1
View File
@@ -85,7 +85,8 @@ class MetaData(xmlfile.XmlFile):
self.package.isA = pkg.isA
self.package.partOf = pkg.partOf
self.package.license = pkg.license
self.package.runtimeDependencies = pkg.runtimeDependencies
self.package.packageDependencies = pkg.packageDependencies
self.package.componentDependencies = pkg.componentDependencies
self.package.files = pkg.files
# FIXME: no need to copy full history with comments
self.package.history = src.history
+4 -4
View File
@@ -92,7 +92,7 @@ def install_pkg_files(package_URIs):
dep_unsatis = []
for name in d_t.keys():
pkg = d_t[name]
deps = pkg.runtimeDependencies
deps = pkg.runtimeDependencies()
for dep in deps:
if not satisfiesDep(dep):
dep_unsatis.append(dep)
@@ -136,7 +136,7 @@ in the respective order to satisfy extra dependencies:
Bp = set()
for x in B:
pkg = packagedb.get_package(x)
for dep in pkg.runtimeDependencies:
for dep in pkg.runtimeDependencies():
if dependency.dict_satisfies_dep(d_t, dep):
if not dep.package in G_f.vertices():
Bp.add(str(dep.package))
@@ -218,7 +218,7 @@ def install_pkg_names(A):
Bp = set()
for x in B:
pkg = packagedb.get_package(x)
for dep in pkg.runtimeDependencies:
for dep in pkg.runtimeDependencies():
ctx.ui.debug('checking %s' % str(dep))
# we don't deal with already *satisfied* dependencies
if not dependency.installed_satisfies_dep(dep):
@@ -320,7 +320,7 @@ version %s, release %s, build %s.')
Bp = set()
for x in B:
pkg = packagedb.get_package(x)
for dep in pkg.runtimeDependencies:
for dep in pkg.runtimeDependencies():
# add packages that can be upgraded
if dependency.repo_satisfies_dep(dep):
#TODO: distinguish must upgrade and upgradable
+1 -1
View File
@@ -72,7 +72,7 @@ class PackageDB(object):
def add_package(self, package_info):
name = str(package_info.name)
self.d[name] = package_info
for dep in package_info.runtimeDependencies:
for dep in package_info.runtimeDependencies():
dep_name = str(dep.package)
if self.dr.has_key(dep_name):
self.dr[dep_name].append( (name, dep) )
+8 -3
View File
@@ -167,7 +167,7 @@ class Package:
t_PartOf = [autoxml.String, autoxml.optional]
t_License = [ [autoxml.String], autoxml.optional]
t_Icon = [ autoxml.String, autoxml.optional]
t_RuntimeDependencies = [ [Dependency], autoxml.optional]
t_PackageDependencies = [ [Dependency], autoxml.optional, "RuntimeDependencies/Dependency"]
t_ComponentDependencies = [ [autoxml.String], autoxml.optional, "RuntimeDependencies/Component"]
t_Files = [ [Path], autoxml.optional]
t_Conflicts = [ [autoxml.String], autoxml.optional, "Conflicts/Package"]
@@ -175,7 +175,12 @@ class Package:
#t_RequiresComar = [ [autoxml.String], autoxml.mandatory, "Requires/COMAR"]
t_AdditionalFiles = [ [AdditionalFile], autoxml.optional]
t_History = [ [Update], autoxml.optional]
def runtimeDependencies(self):
deps = self.packageDependencies
deps += [ ctx.componentdb.get_component[x].packages for x in self.componentDependencies ]
return deps
def pkg_dir(self):
packageDir = self.name + '-' \
+ self.version + '-' \
@@ -185,7 +190,7 @@ class Package:
def installable(self):
"""calculate if pkg is installable currently"""
deps = self.runtimeDependencies
deps = self.runtimeDependencies()
return pisi.dependency.satisfies_dependencies(self.name, deps)
def __str__(self):