@@ -226,10 +226,11 @@ def merge(self, update_entry, override=False, verbose=False):
226226 db [dep_name ].reverse_merge (dep_data , update_entry .origin , verbose = verbose )
227227
228228
229- def prune_catkin_packages (rosdep_keys , verbose = False ):
229+ def prune_catkin_packages (rosdeps , verbose = False ):
230230 workspace_pkgs = catkin_packages .get_workspace_packages ()
231231 if not workspace_pkgs :
232- return rosdep_keys
232+ return rosdeps
233+ rosdep_keys = [d .name for d in rosdeps ]
233234 for i , rosdep_key in reversed (list (enumerate (rosdep_keys ))):
234235 if rosdep_key in workspace_pkgs :
235236 # If workspace packages listed (--catkin-workspace)
@@ -239,22 +240,23 @@ def prune_catkin_packages(rosdep_keys, verbose=False):
239240 print ("rosdep key '{0}'" .format (rosdep_key ) +
240241 ' is in the catkin workspace, skipping.' ,
241242 file = sys .stderr )
242- del rosdep_keys [i ]
243- return rosdep_keys
243+ del rosdeps [i ]
244+ return rosdeps
244245
245246
246- def prune_skipped_packages (rosdep_keys , skipped_keys , verbose = False ):
247+ def prune_skipped_packages (rosdeps , skipped_keys , verbose = False ):
247248 if not skipped_keys :
248- return rosdep_keys
249+ return rosdeps
250+ rosdep_keys = [d .name for d in rosdeps ]
249251 for i , rosdep_key in reversed (list (enumerate (rosdep_keys ))):
250252 if rosdep_key in skipped_keys :
251253 # If the key is in the list of keys to explicitly skip, skip it
252254 if verbose :
253255 print ("rosdep key '{0}'" .format (rosdep_key ) +
254256 ' was listed in the skipped packages, skipping.' ,
255257 file = sys .stderr )
256- del rosdep_keys [i ]
257- return rosdep_keys
258+ del rosdeps [i ]
259+ return rosdeps
258260
259261
260262class RosdepLookup (object ):
@@ -320,7 +322,7 @@ def get_resources_that_need(self, rosdep_name):
320322
321323 :returns: list of package names that require rosdep, ``[str]``
322324 """
323- return [k for k in self .loader .get_loadable_resources () if rosdep_name in self .get_rosdeps (k , implicit = False )]
325+ return [k for k in self .loader .get_loadable_resources () if rosdep_name in [ d . name for d in self .get_rosdeps (k , implicit = False )] ]
324326
325327 @staticmethod
326328 def create_from_rospkg (rospack = None , rosstack = None ,
@@ -390,15 +392,16 @@ def resolve_all(self, resources, installer_context, implicit=False):
390392 # TODO: resolutions dictionary should be replaced with resolution model instead of mapping (undefined) keys.
391393 for resource_name in resources :
392394 try :
393- rosdep_keys = self .get_rosdeps (resource_name , implicit = implicit )
395+ rosdeps = self .get_rosdeps (resource_name , implicit = implicit )
394396 if self .verbose :
395- print ('resolve_all: resource [%s] requires rosdep keys [%s]' % (resource_name , ', ' .join (rosdep_keys )), file = sys .stderr )
396- rosdep_keys = prune_catkin_packages (rosdep_keys , self .verbose )
397- rosdep_keys = prune_skipped_packages (rosdep_keys , self .skipped_keys , self .verbose )
398- for rosdep_key in rosdep_keys :
397+ print ('resolve_all: resource [%s] requires rosdep keys [%s]' % (resource_name , ', ' .join ([ d . name for d in rosdeps ] )), file = sys .stderr )
398+ rosdeps = prune_catkin_packages (rosdeps , self .verbose )
399+ rosdeps = prune_skipped_packages (rosdeps , self .skipped_keys , self .verbose )
400+ for rosdep in rosdeps :
399401 try :
400402 installer_key , resolution , dependencies = \
401- self .resolve (rosdep_key , resource_name , installer_context )
403+ self .resolve (rosdep , resource_name , installer_context )
404+ rosdep_key = rosdep .name
402405 depend_graph [rosdep_key ]['installer_key' ] = installer_key
403406 depend_graph [rosdep_key ]['install_keys' ] = list (resolution )
404407 depend_graph [rosdep_key ]['dependencies' ] = list (dependencies )
@@ -430,13 +433,13 @@ def resolve_all(self, resources, installer_context, implicit=False):
430433
431434 return resolutions_flat , errors
432435
433- def resolve (self , rosdep_key , resource_name , installer_context ):
436+ def resolve (self , rosdep , resource_name , installer_context ):
434437 """
435438 Resolve a :class:`RosdepDefinition` for a particular
436439 os/version spec.
437440
438441 :param resource_name: resource (e.g. ROS package) to resolve key within
439- :param rosdep_key : rosdep key to resolve
442+ :param rosdeps : rosdep key (catkin_pkg.package.Dependency object) to resolve
440443 :param os_name: OS name to use for resolution
441444 :param os_version: OS name to use for resolution
442445
@@ -450,6 +453,7 @@ def resolve(self, rosdep_key, resource_name, installer_context):
450453 :raises: :exc:`ResolutionError` If *rosdep_key* cannot be resolved for *resource_name* in *installer_context*
451454 :raises: :exc:`rospkg.ResourceNotFound` if *resource_name* cannot be located
452455 """
456+ rosdep_key = rosdep .name
453457 os_name , os_version = installer_context .get_os_name_and_version ()
454458
455459 view = self .get_rosdep_view_for_resource (resource_name )
@@ -489,7 +493,7 @@ def resolve(self, rosdep_key, resource_name, installer_context):
489493 installer = installer_context .get_installer (installer_key )
490494 except KeyError :
491495 raise ResolutionError (rosdep_key , definition .data , os_name , os_version , 'Unsupported installer [%s]' % (installer_key ))
492- resolution = installer .resolve (rosdep_args_dict )
496+ resolution = installer .resolve (rosdep , rosdep_args_dict )
493497 dependencies = installer .get_depends (rosdep_args_dict )
494498
495499 # cache value
0 commit comments