Skip to content
Snippets Groups Projects
Commit 179d3472 authored by Johannes Meyer's avatar Johannes Meyer Committed by Leroy Rügemer
Browse files

Fix for genjava ignoring most packages in standalone mode

The genjava_message_artifacts tool in package genjava calls rosjava_build_tools.catkin.index_message_package_dependencies_from_local_environment()
to generate a list of all message packages and their dependencies in topological order from the list of package names given in the command line.

Especially in cases where ROS_PACKAGE_PATH lists the package paths for each individual package separately, which is the case in isolated
builds using catkin_make_isolated or catkin_tools, the relative path returned by catkin_pkg.packages.find_packages() is only `.`. In general, the
relative package path is not unique, but it is used as key of a dictionary when passed to topological_order_packages a few lines below.
As a consequence, all packages but one of each group that have the same relative package path were missing in the returned list and hence no
artifacts were generated by genjava_message_artifacts.

This patch adds a line that transforms the relative to the absolute package path, avoiding the above problem.
parent f24fc254
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,8 @@ def index_message_package_dependencies_from_local_environment(package_name_list= ...@@ -53,6 +53,8 @@ def index_message_package_dependencies_from_local_environment(package_name_list=
# i.e. no duplicates! # i.e. no duplicates!
for path in reversed(package_paths): for path in reversed(package_paths):
for package_path, package in catkin_pkg.packages.find_packages(path).items(): for package_path, package in catkin_pkg.packages.find_packages(path).items():
# resolve and normalize absolute path because it is used as a key below
package_path = os.path.normpath(os.path.join(path, package_path))
all_packages[package.name] = (package_path, package) all_packages[package.name] = (package_path, package)
if has_build_depend_on_message_generation(package) or package.name in message_package_whitelist: if has_build_depend_on_message_generation(package) or package.name in message_package_whitelist:
if package_name_list: if package_name_list:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment