Ejemplo n.º 1
0
def test_on_ros_path():
    from rospkg import on_ros_path, get_ros_root, get_ros_package_path
    from rospkg.environment import _resolve_paths

    assert not on_ros_path(tempfile.gettempdir())

    if get_ros_root() is not None:
        assert on_ros_path(get_ros_root())

        paths = _resolve_paths(get_ros_package_path()).split(os.pathsep)
        for p in paths:
            assert on_ros_path(p), "failed: %s, [%s]"%(p, paths)
Ejemplo n.º 2
0
def test_on_ros_path():
    from rospkg import on_ros_path, get_ros_root, get_ros_package_path
    from rospkg.environment import _resolve_paths

    assert not on_ros_path(tempfile.gettempdir())

    if get_ros_root() is not None:
        assert on_ros_path(get_ros_root())

        if get_ros_package_path() is not None:
            paths = _resolve_paths(get_ros_package_path()).split(os.pathsep)
            for p in paths:
                assert on_ros_path(p), "failed: %s, [%s]" % (p, paths)
Ejemplo n.º 3
0
def roscreatepkg_main():
    from optparse import OptionParser    
    parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]", prog=NAME)
    options, args = parser.parse_args()
    if not args:
        parser.error("you must specify a package name and optionally also list package dependencies")
    package = args[0]

    if not roslib.names.is_legal_resource_base_name(package):
        parser.error("illegal package name: %s\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package)

    # validate dependencies and turn into XML
    depends = args[1:]
    uses_roscpp = 'roscpp' in depends
    uses_rospy = 'rospy' in depends

    rospack = RosPack()
    for d in depends:
        try:
            rospack.get_path(d)
        except ResourceNotFound:
            print("ERROR: dependency [%s] cannot be found"%d, file=sys.stderr)
            sys.exit(1)

    depends = u''.join([u'  <depend package="%s"/>\n'%d for d in depends])

    if not on_ros_path(os.getcwd()):
        print('!'*80+"\nWARNING: current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n"+'!'*80, file=sys.stderr)
    if type(package) == str:
        package = package.decode('utf-8')
    create_package(package, author_name(), depends, uses_roscpp=uses_roscpp, uses_rospy=uses_rospy)
Ejemplo n.º 4
0
def roscreatepkg_main():
    from optparse import OptionParser    
    parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]", prog=NAME)
    options, args = parser.parse_args()
    if not args:
        parser.error("you must specify a package name and optionally also list package dependencies")
    package = args[0]

    if not roslib.names.is_legal_resource_base_name(package):
        parser.error("illegal package name: %s\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package)

    # validate dependencies and turn into XML
    depends = args[1:]
    uses_roscpp = 'roscpp' in depends
    uses_rospy = 'rospy' in depends

    rospack = RosPack()
    for d in depends:
        try:
            rospack.get_path(d)
        except ResourceNotFound:
            print("ERROR: dependency [%s] cannot be found"%d, file=sys.stderr)
            sys.exit(1)

    depends = u''.join([u'  <depend package="%s"/>\n'%d for d in depends])

    if not on_ros_path(os.getcwd()):
        print('!'*80+"\nWARNING: current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n"+'!'*80, file=sys.stderr)
    if type(package) == str:
        package = package.decode('utf-8')
    create_package(package, author_name(), depends, uses_roscpp=uses_roscpp, uses_rospy=uses_rospy)
Ejemplo n.º 5
0
def parse_arguments(extra_depends=[], is_catkin=True):
	"""
	Parse the command line arguments - in format <package-name> [dependencies]".

	This will need to upgrade from optparse to argparse post python 2.7 
	"""
	parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]")
	options, args = parser.parse_args()
	if not args:
		parser.error("You must specify a package name and optionally also list package dependencies")
	package = args[0]
	if type(package) == str:
		package = package.decode('utf-8')
	depends = args[1:] + extra_depends
		
	if not is_legal_resource_base_name(package):
		parser.error("illegal package name [%s]\n\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package)
	if os.path.exists(os.path.abspath(package)):
		parser.error("%s already exists, aborting"%package)
	
	print "Is_catkin? %r" % is_catkin
	if is_catkin == True: # not able to handle dependency checking
		print("WARNING: no ros environment found, skipping package and dependency checks\n")
	else: # legacy rosbuild, try and handle dependencies
		if not rospkg.get_ros_paths():
			print("WARNING: no ros environment found, skipping package and dependency checks\n")
		else:
			rospack = rospkg.RosPack()
			if package_already_exists(package, rospack): 
				parser.error("package already exists on the ROS_PACKAGE_PATH!")    
			if not rospkg.on_ros_path(package):
				parser.error("current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n")    
			if not dependencies_exist(depends, rospack):
			   parser.error("dependency [%s] cannot be found"%d)
	return (package,depends)
Ejemplo n.º 6
0
def roscreatestack_main():
    from optparse import OptionParser    
    parser = OptionParser(usage="usage: %prog <path-to-stack>", prog=NAME)
    parser.add_option("--show-deps", 
                      dest="show_deps", default=False,
                      action="store_true",
                      help="show stack dependencies, instead of generating stack.xml")
    options, args = parser.parse_args()
    if not args:
        parser.error("you must specify the path to a stack")
    stack_dir = args[0]
    stack = os.path.basename(os.path.abspath(stack_dir))

    if not on_ros_path(stack_dir):
        print("ERROR: roscreate-stack only work in directories in ROS_PACKAGE_PATH\nPlease update your ROS_PACKAGE_PATH environment variable.", file=sys.stderr)
        sys.exit(1)
    
    try:
        depends, licenses = compute_stack_depends_and_licenses(stack_dir)
    except rospkg.ResourceNotFound as e:
        print("Cannot find resource: %s"%str(e), file=sys.stderr)
        sys.exit(1)

    # defaults
    stack_manifest = None
    author = "Maintained by %s"%author_name()

    if not options.show_deps:
      # Check for existing stack.xml
      stack_xml_path = os.path.join(stack_dir, 'stack.xml')
      if os.path.exists(stack_xml_path):
          import shutil
          stack_xml_path_bak = os.path.join(stack_dir, 'stack.xml.bak')
          print('Backing up existing stack.xml to %s'%(stack_xml_path_bak))
          shutil.copyfile(stack_xml_path, stack_xml_path_bak)

      try:
          # load existing stack.xml properties (soft fail if there are issues with existing file)
          stack_manifest = rospkg.manifest.parse_manifest_file(stack_dir, rospkg.STACK_FILE)
          author = stack_manifest.author
      except:
          pass
  
    create_stack(stack, stack_dir, stack_manifest, author, depends, licenses, options.show_deps)
Ejemplo n.º 7
0
def roscreatepkg_main():
    from optparse import OptionParser    
    parser = OptionParser(usage="usage: %prog <package-name> [dependencies...]", prog=NAME)
    options, args = parser.parse_args()
    if not args:
        parser.error("you must specify a package name and optionally also list package dependencies")
    package = args[0]

    ###### BRSU EXTENSION ###############################################################
    if (not package.startswith('raw_')) and (not package.startswith('brsu_')) and (not package.startswith('hbrs_')):
        parser.error("illegal package name: %s\n\nPackage name must start either with 'raw_', 'brsu_' or 'hbrs_'"%package)

    if not roslib.names.is_legal_resource_base_name(package):
        parser.error("illegal package name: %s\n\nNames must start with a letter and contain only alphanumeric characters\nand underscores."%package)

    # validate dependencies and turn into XML
    depends = args[1:]
    uses_roscpp = 'roscpp' in depends
    uses_rospy = 'rospy' in depends

    ###### BRSU EXTENSION ###############################################################
    depends.append("roscpp")
    depends.append("sensor_msgs")
    depends.append("std_srvs")
    
    for d in depends:
        try:
            roslib.packages.get_pkg_dir(d)
        except roslib.packages.InvalidROSPkgException:
            print >> sys.stderr, "ERROR: dependency [%s] cannot be found"%d
            sys.exit(1)
    depends = u''.join([u'  <depend package="%s"/>\n'%d for d in depends])


    if not on_ros_path(os.getcwd()):
        print >> sys.stderr, '!'*80+"\nWARNING: current working directory is not on ROS_PACKAGE_PATH!\nPlease update your ROS_PACKAGE_PATH environment variable.\n"+'!'*80
    if type(package) == str:
        package = package.decode('utf-8')
    create_package(package, author_name(), depends, uses_roscpp=uses_roscpp, uses_rospy=uses_rospy)
Ejemplo n.º 8
0
try:
    import rospkg
    import os
    if rospkg.on_ros_path(os.path.dirname(__file__)):
        import roslib
        roslib.load_manifest('object_recognition_core')
except ImportError:
    pass
except Exception as e:
    pass
Ejemplo n.º 9
0
try:
    import rospkg
    import os
    if rospkg.on_ros_path(os.path.dirname(__file__)):
        import roslib; roslib.load_manifest('object_recognition_core')
except ImportError:
    pass
except Exception as e :
    pass