rosidl_generate_interfaces fails (with no error message) with baroque path names
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.