rosidl_generate_interfaces fails (with no error message) with baroque path names

asked 2022-03-01 16:13:07 -0600

scthornq gravatar image

For reasons that are silly and complicated, I'm stuck developing some ROS2 based tools within software that uses extremely complicated path names. For everything up to now, I haven't needed to build custom interfaces, but now that I have even the simple tutorial messages fail to build with colcon (I'm on Windows 10, ROS2 foxy) if they're within sufficiently complex directories. To reproduce this, I created fresh directories and played with the path until I could reproduce the failures:

If I make the directory "C:\dev\ros.2.0.1_505-25-3_f\src", copy the standard tutorial interface, and then from "C:\dev\ros.2.0.1_505-25-3_f" run colcon build --merge-install --packages-select tutorial_interfaces it builds fine. If instead I put src in "C:\dev\ros.2.0.1_505-25-3_f\stupidname\badname" and run colcon build --merge-install --packages-select tutorial_interfaces from "badname", I get

Starting >>> tutorial_interfaces
Failed   <<< tutorial_interfaces [9.92s, exited with code 1]

Summary: 0 packages finished [10.2s]
  1 package failed:  tutorial_interfaces

(No error information provided; took me a while to realize it just had to do with the path). It builds successfully if I make the root path slightly less complex e.g. "ros.2.0\stupidname\badname". In an ideal world, I just wouldn't deal with any of this and put it in a path that isn't as ridiculous, but I can't do that. Could someone advise me how to get interfaces to build? Everything else I've tried with colcon build in these directories seems to play nice, so it seems it's specifically something about rosidl_generate_interfaces when ament_packages() is called.

edit retag flag offensive close merge delete