summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Macken <lmacken@redhat.com>2011-04-12 21:33:31 -0400
committerLuke Macken <lmacken@redhat.com>2011-04-12 21:33:31 -0400
commit13d9a8971b2a0113ee4535e5a6f3e644032cb8fe (patch)
tree26937c6af9457ef90fd06f0ce2426ac19a8c5c86
parent8ecba28a63d36e656b03ef9d7b753608bb6655ee (diff)
downloadleafymiracle-13d9a8971b2a0113ee4535e5a6f3e644032cb8fe.tar.gz
leafymiracle-13d9a8971b2a0113ee4535e5a6f3e644032cb8fe.tar.xz
leafymiracle-13d9a8971b2a0113ee4535e5a6f3e644032cb8fe.zip
Improve populate.add_dependenciesdependencies
-rw-r--r--leafymiracle/populate.py44
1 files changed, 24 insertions, 20 deletions
diff --git a/leafymiracle/populate.py b/leafymiracle/populate.py
index 9859d58..87d578a 100644
--- a/leafymiracle/populate.py
+++ b/leafymiracle/populate.py
@@ -69,30 +69,34 @@ def populate(comps='comps-f16', do_dependencies=True):
session.commit()
def add_dependencies(package, session):
- try:
- pkg = yumobj.pkgSack.searchNevra(name=package.name)[0]
- deps_d = yumobj.findDeps([pkg])
- deps = [tup[0] for tup in deps_d[deps_d.keys()[0]].keys()]
+ deps = set()
+ pkg = yumobj.pkgSack.searchNevra(name=package.name)
+ if not pkg:
+ print "Cannot find package: %s" % package
+ return
- for dep in deps:
- base_query = session.query(Package).filter_by(name=dep)
- if base_query.count() == 0:
- _new_package = Package(name=dep)
- session.add(_new_package)
- session.flush()
- add_dependencies(_new_package, session)
+ deps_d = yumobj.findDeps([pkg[0]])
+ for dep in deps_d.itervalues():
+ for req in dep.itervalues():
+ deps.add(req[0].name)
- dep_as_package = base_query.one()
+ for dep in deps:
+ base_query = session.query(Package).filter_by(name=dep)
+ if base_query.count() == 0:
+ _new_package = Package(name=dep)
+ session.add(_new_package)
+ session.flush()
+ add_dependencies(_new_package, session)
- if dep_as_package not in package.dependencies:
- package.dependencies.append(dep_as_package)
+ dep_as_package = base_query.one()
- print "package: %s has (%i/%i) deps" % (
- package.name, len(package.dependencies), len(deps))
- session.flush()
- except Exception as e:
- # TODO -- figure out why some stuff breaks here.
- pass
+ if dep_as_package not in package.dependencies:
+ package.dependencies.append(dep_as_package)
+
+ print "package: %s has (%i/%i) deps" % (
+ package.name, len(package.dependencies), len(deps))
+
+ session.flush()
def build_comps():
import subprocess