Robotics StackExchange | Archived questions

ROSserial trys to build all packages in catkin workspace

I have a simple catkin workspace with two packages:

gababot_core
jake

The gababotcore depends on ROSserial. The jake package does not. If I 'purge' my workspace and remove build/ and devel/ and then try to rebuild `catkinmake` it crashes with the following error:

*** Warning, failed to generate libraries for the following packages: ***
jake ('NoneType' object has no attribute '_md5sum')
Traceback (most recent call last):
  File "/opt/ros/kinetic/share/rosserial_arduino/make_libraries.py", line 91, in <module>
rosserial_generate(rospack, path+"/ros_lib", ROS_TO_EMBEDDED_TYPES)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosserial_client/make_library.py", line 561, in rosserial_generate
raise Exception("Failed to generate libraries for: " + str(failed))
Exception: Failed to generate libraries for: ["jake ('NoneType' object has no attribute '_md5sum')"]
gababot_core/CMakeFiles/gababot_core_ros_lib.dir/build.make:60: recipe for target 'gababot_core/ros_lib' failed 
make[2]: *** [gababot_core/ros_lib] Error 1
CMakeFiles/Makefile2:1110: recipe for target 'gababot_core/CMakeFiles/gababot_core_ros_lib.dir/all' failed
make[1]: *** [gababot_core/CMakeFiles/gababot_core_ros_lib.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

So ROSserial tries to generate arduino libraries for jake. It doesn't make sense, because jake doesn't depend on ROSserial (esp. not rosserialarduino). When I run `catkinmake` a second time it actually works fine and builds everything as I expect.

Update: Actually the error is due to makelibraries.py trying to build all messages from all packages. Including two custom messages in jake which are NOT needed in `gababotcore`. On the first run these messages have not yet been generated (no depenency between the two packets) and catkin fails to generate one target.

On the second pass the messages in jake have successfully been generated and it builds fine. This seems to be a 'bug' or at least an unwanted side effect in the current rosserial package. I suspect this is also the reason, why rosserial builds for the arduino are so big, as all messages are build into the roslib and stored on the arduino.

Asked by FirefoxMetzger on 2017-03-01 09:18:13 UTC

Comments

Answers