diff --git a/pisi/api.py b/pisi/api.py index cdc65be0..acc5da7a 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -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 diff --git a/pisi/dependency.py b/pisi/dependency.py index 02b49c1f..f95f214f 100644 --- a/pisi/dependency.py +++ b/pisi/dependency.py @@ -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): diff --git a/pisi/metadata.py b/pisi/metadata.py index 588bee0b..30935855 100644 --- a/pisi/metadata.py +++ b/pisi/metadata.py @@ -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 diff --git a/pisi/operations.py b/pisi/operations.py index 4dd9aea3..a6f7905d 100644 --- a/pisi/operations.py +++ b/pisi/operations.py @@ -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 diff --git a/pisi/packagedb.py b/pisi/packagedb.py index 2e213a5a..6fc7ce9d 100644 --- a/pisi/packagedb.py +++ b/pisi/packagedb.py @@ -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) ) diff --git a/pisi/specfile.py b/pisi/specfile.py index 35cb80d8..d46c6531 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -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):