diff --git a/core/rospy/cmake/rospy.cmake b/core/rospy/cmake/rospy.cmake index db38ca2c..617f6456 100644 --- a/core/rospy/cmake/rospy.cmake +++ b/core/rospy/cmake/rospy.cmake @@ -15,10 +15,16 @@ macro(genmsg_py) set(_output_py ${PROJECT_SOURCE_DIR}/src/${PROJECT_NAME}/msg/_${_msg}) string(REPLACE ".msg" ".py" _output_py ${_output_py}) - # Add the rule to build the .h the .msg + # Add the rule to build the .h the .msg. + # + # Note the dependency on ${_autogen}. This is done to force serial + # execution of the message-generation steps, because genmsg_py is not + # parallel-safe. When that's fixed + # (https://code.ros.org/trac/ros/ticket/1827), this dependency can be + # removed. add_custom_command(OUTPUT ${_output_py} COMMAND ${genmsg_py_exe} ${_input} - DEPENDS ${_input} ${genmsg_py_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_msg}_GENDEPS} ${ROS_MANIFEST_LIST}) + DEPENDS ${_input} ${genmsg_py_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_msg}_GENDEPS} ${ROS_MANIFEST_LIST} ${_autogen}) list(APPEND _autogen ${_output_py}) endforeach(_msg) # Create a target that depends on the union of all the autogenerated @@ -48,9 +54,15 @@ macro(gensrv_py) string(REPLACE ".srv" ".py" _output_py ${_output_py}) # Add the rule to build the .h from the .srv + # + # Note the dependency on ${_autogen}. This is done to force serial + # execution of the service-generation steps, because genmsg_py is not + # parallel-safe. When that's fixed + # (https://code.ros.org/trac/ros/ticket/1827), this dependency can be + # removed. add_custom_command(OUTPUT ${_output_py} COMMAND ${gensrv_py_exe} ${_input} - DEPENDS ${_input} ${gensrv_py_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_srv}_GENDEPS} ${ROS_MANIFEST_LIST}) + DEPENDS ${_input} ${gensrv_py_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_srv}_GENDEPS} ${ROS_MANIFEST_LIST} ${_autogen}) list(APPEND _autogen ${_output_py}) endforeach(_srv) # Create a target that depends on the union of all the autogenerated