Skip to content

Instantly share code, notes, and snippets.

@dirk-thomas
Last active August 29, 2015 14:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dirk-thomas/e29076b8f1eb2bb84c8c to your computer and use it in GitHub Desktop.
Save dirk-thomas/e29076b8f1eb2bb84c8c to your computer and use it in GitHub Desktop.
Find released packages / repositories with a specific dependency
from catkin_pkg.package import parse_package_string
import rosdistro
result_repos = {}
result_pkgs = {}
i = rosdistro.get_index(rosdistro.get_index_url())
d = rosdistro.get_cached_distribution(i, 'indigo')
f = d._distribution_file
for name in sorted(f.release_packages.keys()):
xml = d.get_release_package_xml(name)
pkg = parse_package_string(xml)
#print(pkg.name)
for dep in pkg.build_depends + pkg.buildtool_depends + pkg.run_depends + pkg.test_depends:
if dep.name in ['console_bridge', 'urdfdom', 'urdfdom_headers']:
if dep.name not in result_repos:
result_repos[dep.name] = set([])
result_repos[dep.name].add(f.release_packages[name].repository_name)
if f.release_packages[name].repository_name not in result_pkgs:
result_pkgs[f.release_packages[name].repository_name] = set([])
result_pkgs[f.release_packages[name].repository_name].add(name)
for k, pkgs in result_repos.items():
print(k)
for p in sorted(pkgs):
print('* %s (%s)' % (p, ', '.join(sorted(result_pkgs[p]))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment