Skip to content

Commit

Permalink
modified dependency generation to be more debian-ish (direct build de…
Browse files Browse the repository at this point in the history
…pendencies + recursive runtime dependencies of these)
  • Loading branch information
dirk-thomas committed Jun 15, 2012
1 parent dda4154 commit f54745c
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions src/buildfarm/dependency_walker.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@
from rosdistro import sanitize_package_name, debianize_package_name


def _get_recursive_dependencies(dependency_dict, package_name, package_list):
def _get_dependencies(dependency_dict, package_name, package_list, recursive=False):
dependencies = set(package_list[p] for p in dependency_dict[package_name] if p in package_list)
for p in [ p for p in dependency_dict[package_name] if p in package_list ]:
dependencies.update(_get_recursive_dependencies(dependency_dict, p, package_list))
if recursive:
for p in [ p for p in dependency_dict[package_name] if p in package_list ]:
dependencies.update(_get_dependencies(dependency_dict, p, package_list, recursive))
return dependencies

def get_dependencies(workspace, repository_list, rosdistro):
if not os.path.isdir(workspace):
os.makedirs(workspace)

dependencies = {}
build_dependencies = {}
runtime_dependencies = {}

packages = {}
package_urls = {}
Expand Down Expand Up @@ -46,7 +48,8 @@ def get_dependencies(workspace, repository_list, rosdistro):
if not os.path.isfile(stack_xml_path):
if rosdistro == 'backports':
packages[name] = sanitize_package_name(name)
dependencies[name] = []
build_dependencies[name] = []
runtime_dependencies[name] = []
package_urls[name] = url
print "Processing backport %s, no stack.xml file found in repo %s. Continuing"%(name, url)
else:
Expand All @@ -56,17 +59,24 @@ def get_dependencies(workspace, repository_list, rosdistro):
stack = rospkg.stack.parse_stack_file(stack_xml_path)
catkin_project_name = stack.name

print "Dependencies:", ', '.join([d.name for d in stack.build_depends])
packages[catkin_project_name] = debianize_package_name(rosdistro, catkin_project_name)

dependencies[catkin_project_name] = [d.name for d in stack.build_depends]
build_dependencies[catkin_project_name] = [d.name for d in stack.build_depends]
runtime_dependencies[catkin_project_name] = [d.name for d in stack.depends]

package_urls[catkin_project_name] = url

result = {}
urls = {}

for k, v in dependencies.iteritems():
result[packages[k]] = _get_recursive_dependencies(dependencies, k, packages)
# combines direct buildtime- and recursive runtime-dependencies
for k in package_urls.keys():
print '\nDependencies for: ', k
result[packages[k]] = _get_dependencies(build_dependencies, k, packages)
print 'Direct build-dependencies:', ', '.join(result[packages[k]])
recursive_runtime_dependencies = _get_dependencies(runtime_dependencies, k, packages, True)
print 'Recursive runtime-dependencies:', ', '.join(recursive_runtime_dependencies)
result[packages[k]].update(recursive_runtime_dependencies)
print 'Combined dependencies:', ', '.join(result[packages[k]])
urls[package_urls[k]] = packages[k]
return result, urls

0 comments on commit f54745c

Please sign in to comment.