* implement component dependencies
This commit is contained in:
+2
-2
@@ -140,7 +140,7 @@ def package_graph(A, ignore_installed = False):
|
|||||||
for x in B:
|
for x in B:
|
||||||
pkg = packagedb.get_package(x)
|
pkg = packagedb.get_package(x)
|
||||||
#print pkg
|
#print pkg
|
||||||
for dep in pkg.runtimeDependencies:
|
for dep in pkg.runtimeDependencies():
|
||||||
if ignore_installed:
|
if ignore_installed:
|
||||||
if dependency.installed_satisfies_dep(dep):
|
if dependency.installed_satisfies_dep(dep):
|
||||||
continue
|
continue
|
||||||
@@ -162,7 +162,7 @@ def configure_pending():
|
|||||||
Bp = set()
|
Bp = set()
|
||||||
for x in B.keys():
|
for x in B.keys():
|
||||||
pkg = packagedb.get_package(x)
|
pkg = packagedb.get_package(x)
|
||||||
for dep in pkg.runtimeDependencies:
|
for dep in pkg.runtimeDependencies():
|
||||||
if dep.package in G_f.vertices():
|
if dep.package in G_f.vertices():
|
||||||
G_f.add_dep(x, dep)
|
G_f.add_dep(x, dep)
|
||||||
B = Bp
|
B = Bp
|
||||||
|
|||||||
+1
-1
@@ -101,7 +101,7 @@ def satisfies_dependencies(pkg, deps, sat = installed_satisfies_dep):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def satisfies_runtime_deps(pkg):
|
def satisfies_runtime_deps(pkg):
|
||||||
deps = packagedb.get_package(pkg).runtimeDependencies
|
deps = packagedb.get_package(pkg).runtimeDependencies()
|
||||||
return satisfies_dependencies(pkg, deps)
|
return satisfies_dependencies(pkg, deps)
|
||||||
|
|
||||||
def installable(pkg):
|
def installable(pkg):
|
||||||
|
|||||||
+2
-1
@@ -85,7 +85,8 @@ class MetaData(xmlfile.XmlFile):
|
|||||||
self.package.isA = pkg.isA
|
self.package.isA = pkg.isA
|
||||||
self.package.partOf = pkg.partOf
|
self.package.partOf = pkg.partOf
|
||||||
self.package.license = pkg.license
|
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
|
self.package.files = pkg.files
|
||||||
# FIXME: no need to copy full history with comments
|
# FIXME: no need to copy full history with comments
|
||||||
self.package.history = src.history
|
self.package.history = src.history
|
||||||
|
|||||||
+4
-4
@@ -92,7 +92,7 @@ def install_pkg_files(package_URIs):
|
|||||||
dep_unsatis = []
|
dep_unsatis = []
|
||||||
for name in d_t.keys():
|
for name in d_t.keys():
|
||||||
pkg = d_t[name]
|
pkg = d_t[name]
|
||||||
deps = pkg.runtimeDependencies
|
deps = pkg.runtimeDependencies()
|
||||||
for dep in deps:
|
for dep in deps:
|
||||||
if not satisfiesDep(dep):
|
if not satisfiesDep(dep):
|
||||||
dep_unsatis.append(dep)
|
dep_unsatis.append(dep)
|
||||||
@@ -136,7 +136,7 @@ in the respective order to satisfy extra dependencies:
|
|||||||
Bp = set()
|
Bp = set()
|
||||||
for x in B:
|
for x in B:
|
||||||
pkg = packagedb.get_package(x)
|
pkg = packagedb.get_package(x)
|
||||||
for dep in pkg.runtimeDependencies:
|
for dep in pkg.runtimeDependencies():
|
||||||
if dependency.dict_satisfies_dep(d_t, dep):
|
if dependency.dict_satisfies_dep(d_t, dep):
|
||||||
if not dep.package in G_f.vertices():
|
if not dep.package in G_f.vertices():
|
||||||
Bp.add(str(dep.package))
|
Bp.add(str(dep.package))
|
||||||
@@ -218,7 +218,7 @@ def install_pkg_names(A):
|
|||||||
Bp = set()
|
Bp = set()
|
||||||
for x in B:
|
for x in B:
|
||||||
pkg = packagedb.get_package(x)
|
pkg = packagedb.get_package(x)
|
||||||
for dep in pkg.runtimeDependencies:
|
for dep in pkg.runtimeDependencies():
|
||||||
ctx.ui.debug('checking %s' % str(dep))
|
ctx.ui.debug('checking %s' % str(dep))
|
||||||
# we don't deal with already *satisfied* dependencies
|
# we don't deal with already *satisfied* dependencies
|
||||||
if not dependency.installed_satisfies_dep(dep):
|
if not dependency.installed_satisfies_dep(dep):
|
||||||
@@ -320,7 +320,7 @@ version %s, release %s, build %s.')
|
|||||||
Bp = set()
|
Bp = set()
|
||||||
for x in B:
|
for x in B:
|
||||||
pkg = packagedb.get_package(x)
|
pkg = packagedb.get_package(x)
|
||||||
for dep in pkg.runtimeDependencies:
|
for dep in pkg.runtimeDependencies():
|
||||||
# add packages that can be upgraded
|
# add packages that can be upgraded
|
||||||
if dependency.repo_satisfies_dep(dep):
|
if dependency.repo_satisfies_dep(dep):
|
||||||
#TODO: distinguish must upgrade and upgradable
|
#TODO: distinguish must upgrade and upgradable
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ class PackageDB(object):
|
|||||||
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.runtimeDependencies:
|
for dep in package_info.runtimeDependencies():
|
||||||
dep_name = str(dep.package)
|
dep_name = str(dep.package)
|
||||||
if self.dr.has_key(dep_name):
|
if self.dr.has_key(dep_name):
|
||||||
self.dr[dep_name].append( (name, dep) )
|
self.dr[dep_name].append( (name, dep) )
|
||||||
|
|||||||
+7
-2
@@ -167,7 +167,7 @@ class Package:
|
|||||||
t_PartOf = [autoxml.String, autoxml.optional]
|
t_PartOf = [autoxml.String, autoxml.optional]
|
||||||
t_License = [ [autoxml.String], autoxml.optional]
|
t_License = [ [autoxml.String], autoxml.optional]
|
||||||
t_Icon = [ 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_ComponentDependencies = [ [autoxml.String], autoxml.optional, "RuntimeDependencies/Component"]
|
||||||
t_Files = [ [Path], autoxml.optional]
|
t_Files = [ [Path], autoxml.optional]
|
||||||
t_Conflicts = [ [autoxml.String], autoxml.optional, "Conflicts/Package"]
|
t_Conflicts = [ [autoxml.String], autoxml.optional, "Conflicts/Package"]
|
||||||
@@ -176,6 +176,11 @@ class Package:
|
|||||||
t_AdditionalFiles = [ [AdditionalFile], autoxml.optional]
|
t_AdditionalFiles = [ [AdditionalFile], autoxml.optional]
|
||||||
t_History = [ [Update], 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):
|
def pkg_dir(self):
|
||||||
packageDir = self.name + '-' \
|
packageDir = self.name + '-' \
|
||||||
+ self.version + '-' \
|
+ self.version + '-' \
|
||||||
@@ -185,7 +190,7 @@ class Package:
|
|||||||
|
|
||||||
def installable(self):
|
def installable(self):
|
||||||
"""calculate if pkg is installable currently"""
|
"""calculate if pkg is installable currently"""
|
||||||
deps = self.runtimeDependencies
|
deps = self.runtimeDependencies()
|
||||||
return pisi.dependency.satisfies_dependencies(self.name, deps)
|
return pisi.dependency.satisfies_dependencies(self.name, deps)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user