66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# temp unit testing code
|
|
if __name__ == "__main__":
|
|
|
|
from entropy.graph import Graph
|
|
from entropy.client.interfaces import Client
|
|
from entropy.const import etpConst
|
|
cl = Client()
|
|
|
|
# test with zillions of atoms
|
|
repo = cl.open_repository("sabayonlinux.org")
|
|
atoms = [x[1] for x in repo._listAllDependencies()]
|
|
atoms = [x for x in atoms if not x.startswith("!")]
|
|
|
|
graph = Graph()
|
|
|
|
for atom in atoms:
|
|
|
|
# match string, translate into (x, y) pointer
|
|
pkg_id, repoid = cl.atom_match(atom)
|
|
if pkg_id == -1:
|
|
continue
|
|
|
|
# open matched repisitory and retrieve list of dependencies
|
|
# for pkg_id
|
|
repo = cl.open_repository(repoid)
|
|
my_lame_deps = repo.retrieveDependenciesList(pkg_id,
|
|
exclude_deptypes = etpConst['dependency_type_ids']['bdepend_id'])
|
|
my_lame_deps = [x for x in my_lame_deps if not x.startswith("!")]
|
|
|
|
# match every dependency and build a raw list of dependencies
|
|
atom_deps_list = set()
|
|
for lame_dep in my_lame_deps:
|
|
dep_pkg_id, dep_repoid = cl.atom_match(lame_dep)
|
|
if dep_pkg_id == -1:
|
|
continue # lame thing
|
|
atom_deps_list.add((dep_pkg_id, dep_repoid,))
|
|
|
|
# eventually add atom (it's x,y pointer) and its deps to graph
|
|
graph.add((pkg_id, repoid,), atom_deps_list)
|
|
|
|
# now print our adjacency map
|
|
adj_map = graph.get_adjacency_map()
|
|
print "=" * 20
|
|
print "adjacency map:"
|
|
for pkg in sorted(adj_map):
|
|
deps = '\n\t'.join([str(x) for x in adj_map[pkg]])
|
|
if not deps:
|
|
deps = 'no dependencies'
|
|
else:
|
|
deps = "\n\t" + deps
|
|
print pkg, "=>", deps
|
|
print "=" * 20
|
|
|
|
print "solving:"
|
|
sorted_map = graph.solve()
|
|
for dep_level in sorted(sorted_map, reverse = True):
|
|
print dep_level, sorted_map[dep_level], "{",
|
|
for pkg_id, repoid in sorted_map[dep_level]:
|
|
repo = cl.open_repository(repoid)
|
|
print repo.retrieveAtom(pkg_id),
|
|
print "}"
|
|
print "=" * 20
|
|
|
|
cl.destroy()
|
|
raise SystemExit(0) |