use one catkin_find invocation instead of multiple to achieve correct workspace overlaying, keep order in uniquified result list
This commit is contained in:
parent
9814a5b6c5
commit
07f3b44e29
|
@ -494,13 +494,15 @@ def find_resource(pkg, resource_name, filter_fn=None, rospack=None):
|
||||||
# if found in binary dir, start with that. in any case, use matches
|
# if found in binary dir, start with that. in any case, use matches
|
||||||
# from ros_package_path
|
# from ros_package_path
|
||||||
matches = []
|
matches = []
|
||||||
for search_dirs in ['libexec', 'share']:
|
search_paths = catkin_find(search_dirs=['libexec', 'share'], project=pkg, first_matching_workspace_only=True)
|
||||||
try:
|
for search_path in search_paths:
|
||||||
search_paths = catkin_find(search_dirs=[search_dirs], project=pkg)
|
matches.extend(_find_resource(search_path, resource_name, filter_fn=filter_fn))
|
||||||
for search_path in search_paths:
|
|
||||||
matches.extend(_find_resource(search_path, resource_name, filter_fn=filter_fn))
|
|
||||||
except RuntimeError:
|
|
||||||
pass
|
|
||||||
matches.extend(_find_resource(pkg_path, resource_name, filter_fn=filter_fn))
|
matches.extend(_find_resource(pkg_path, resource_name, filter_fn=filter_fn))
|
||||||
# Uniquify the results, in case we found the same file twice
|
|
||||||
return list(set(matches))
|
# Uniquify the results, in case we found the same file twice, while keeping order
|
||||||
|
unique_matches = []
|
||||||
|
for match in matches:
|
||||||
|
if match not in unique_matches:
|
||||||
|
unique_matches.append(match)
|
||||||
|
return unique_matches
|
||||||
|
|
Loading…
Reference in New Issue