def get_nonlocal_dependencies(catkin_packages, stacks, manifest_packages): append_pymodules_if_needed() from catkin_pkg import packages import rospkg depends = [] #First, we build the catkin deps for name, path in catkin_packages.iteritems(): pkg_info = packages.parse_package(path) depends.extend([d.name \ for d in pkg_info.build_depends + pkg_info.test_depends + pkg_info.run_depends \ if not d.name in catkin_packages and not d.name in depends]) #Next, we build the manifest deps for stacks for name, path in stacks.iteritems(): stack_manifest = rospkg.parse_manifest_file(path, rospkg.STACK_FILE) depends.extend([d.name \ for d in stack_manifest.depends + stack_manifest.rosdeps \ if not d.name in catkin_packages \ and not d.name in stacks \ and not d.name in depends]) #Next, we build manifest deps for packages for name, path in manifest_packages.iteritems(): pkg_manifest = rospkg.parse_manifest_file(path, rospkg.MANIFEST_FILE) depends.extend([d.name \ for d in pkg_manifest.depends + pkg_manifest.rosdeps \ if not d.name in catkin_packages \ and not d.name in stacks \ and not d.name in manifest_packages \ and not d.name in depends]) return depends
def get_nonlocal_dependencies(catkin_packages, stacks, manifest_packages, build_depends=True, test_depends=True): append_pymodules_if_needed() from catkin_pkg import packages import rospkg depends = [] #First, we build the catkin deps for name, path in catkin_packages.iteritems(): pkg_info = packages.parse_package(path) if build_depends: depends.extend([ d.name for d in pkg_info.buildtool_depends + pkg_info.build_depends if not d.name in catkin_packages and not d.name in depends ]) if test_depends: depends.extend([ d.name for d in pkg_info.test_depends + pkg_info.run_depends if not d.name in catkin_packages and not d.name in depends ]) #Next, we build the manifest deps for stacks for name, path in stacks.iteritems(): stack_manifest = rospkg.parse_manifest_file(path, rospkg.STACK_FILE) if stack_manifest.is_catkin: depends.extend( get_catkin_stack_deps(os.path.join(path, 'stack.xml'))) else: depends.extend([ d.name for d in stack_manifest.depends + stack_manifest.rosdeps if not d.name in catkin_packages and not d.name in stacks and not d.name in depends ]) #Next, we build manifest deps for packages for name, path in manifest_packages.iteritems(): pkg_manifest = rospkg.parse_manifest_file(path, rospkg.MANIFEST_FILE) depends.extend([ d.name for d in pkg_manifest.depends + pkg_manifest.rosdeps if not d.name in catkin_packages and not d.name in stacks and not d.name in manifest_packages and not d.name in depends ]) return depends
def get_repo_packages(repo_folder): append_pymodules_if_needed() from catkin_pkg import packages as catkin_packages paths = [] #find wet packages paths.extend([os.path.abspath(os.path.join(repo_folder, pkg_path)) for pkg_path in catkin_packages.find_package_paths(repo_folder)]) #Remove any duplicates paths = list(set(paths)) packages = {} for path in paths: pkg_info = catkin_packages.parse_package(path) packages[pkg_info.name] = path return packages
def get_pkg_desc(path): #Check whether we've got a catkin or non-catkin package if is_catkin(path): pkg_desc = packages.parse_package(path) print("Documenting a catkin package") else: rp = rospkg.RosPack() package = os.path.basename(path) try: ros_path = os.path.realpath(rp.get_path(package)) except rospkg.common.ResourceNotFound as e: sys.stderr.write("Rospack could not find the %s. Are you sure it's on your ROS_PACKAGE_PATH?\n" % package) sys.exit(1) if ros_path != path: sys.stderr.write("The path passed in does not match that returned \ by rospack. Requested path: %s. Rospack path: %s.\n" % (path, ros_path)) sys.exit(1) pkg_desc = rp.get_manifest(package) print("Documenting a non-catkin package") return pkg_desc
def get_nonlocal_dependencies(catkin_packages, stacks, manifest_packages, build_depends=True, test_depends=True): append_pymodules_if_needed() from catkin_pkg import packages import rospkg depends = [] #First, we build the catkin deps for name, path in catkin_packages.iteritems(): pkg_info = packages.parse_package(path) if build_depends: depends.extend([d.name for d in pkg_info.buildtool_depends + pkg_info.build_depends if not d.name in catkin_packages and not d.name in depends]) if test_depends: depends.extend([d.name for d in pkg_info.test_depends + pkg_info.run_depends if not d.name in catkin_packages and not d.name in depends]) #Next, we build the manifest deps for stacks for name, path in stacks.iteritems(): stack_manifest = rospkg.parse_manifest_file(path, rospkg.STACK_FILE) if stack_manifest.is_catkin: depends.extend(get_catkin_stack_deps(os.path.join(path, 'stack.xml'))) else: depends.extend([d.name for d in stack_manifest.depends + stack_manifest.rosdeps if not d.name in catkin_packages and not d.name in stacks and not d.name in depends]) #Next, we build manifest deps for packages for name, path in manifest_packages.iteritems(): pkg_manifest = rospkg.parse_manifest_file(path, rospkg.MANIFEST_FILE) depends.extend([d.name for d in pkg_manifest.depends + pkg_manifest.rosdeps if not d.name in catkin_packages and not d.name in stacks and not d.name in manifest_packages and not d.name in depends]) return depends
def main(): parser = get_optparse(NAME) options, args = parser.parse_args() if len(args) != 1: print("Please give %s exactly one package path" % NAME) parser.print_help() sys.exit(1) rp = rospkg.RosPack() path = os.path.realpath(args[0]) package = os.path.basename(path) #Check whether we've got a catkin or non-catkin package if is_catkin(path): pkg_desc = packages.parse_package(path) print("Documenting a catkin package") else: try: ros_path = os.path.realpath(rp.get_path(package)) except rospkg.common.ResourceNotFound as e: sys.stderr.write("Rospack could not find the %s. Are you sure it's on your ROS_PACKAGE_PATH?\n" % package) sys.exit(1) if ros_path != path: sys.stderr.write("The path passed in does not match that returned \ by rospack. Requested path: %s. Rospack path: %s.\n" % (path, ros_path)) sys.exit(1) pkg_desc = rp.get_manifest(package) print("Documenting a non-catkin package") manifest = rdcore.PackageInformation(pkg_desc) print("Documenting %s located here: %s" % (package, path)) try: generate_docs(path, package, manifest, options.docdir, options.tagfile, options.generate_tagfile, options.quiet) print("Done documenting %s you can find your documentation here: %s" % (package, os.path.realpath(options.docdir))) except: traceback.print_exc() sys.exit(1)
def build_local_dependency_graph(catkin_packages, manifest_packages): append_pymodules_if_needed() from catkin_pkg import packages import rospkg depends = {} #First, we build the catkin dep tree for name, path in catkin_packages.iteritems(): depends[name] = [] pkg_info = packages.parse_package(path) for d in pkg_info.buildtool_depends + pkg_info.build_depends + pkg_info.test_depends + pkg_info.run_depends: if d.name in catkin_packages and d.name != name: depends[name].append(d.name) #Next, we build the manifest dep tree for name, path in manifest_packages.iteritems(): manifest = rospkg.parse_manifest_file(path, rospkg.MANIFEST_FILE) depends[name] = [] for d in manifest.depends + manifest.rosdeps: if (d.name in catkin_packages or d.name in manifest_packages) and d.name != name: depends[name].append(str(d.name)) return depends
def build_local_dependency_graph(catkin_packages, manifest_packages): append_pymodules_if_needed() from catkin_pkg import packages import rospkg depends = {} #First, we build the catkin dep tree for name, path in catkin_packages.iteritems(): depends[name] = [] pkg_info = packages.parse_package(path) for dep in pkg_info.buildtool_depends + pkg_info.build_depends + pkg_info.test_depends + pkg_info.run_depends: if dep.name in catkin_packages and dep.name != name: depends[name].append(dep.name) #Next, we build the manifest dep tree for name, path in manifest_packages.iteritems(): manifest = rospkg.parse_manifest_file(path, rospkg.MANIFEST_FILE) depends[name] = [] for dep in manifest.depends + manifest.rosdeps: if (dep.name in catkin_packages or dep.name in manifest_packages) and dep.name != name: depends[name].append(str(dep.name)) return depends