Fix installation of dependencies#820
Conversation
Dependencies of the extended workspace are available by construction.
|
I think both your commits must get mixed. So that we ignore packages in |
|
Maybe, you are right. We would need the following paths:
|
4d7b6d5 to
6cba5b2
Compare
6cba5b2 to
e97b6c0
Compare
|
I have no clue why the installation of The changes of this PR become effective much later... |
| ici_step "setup_rosdep" ici_setup_rosdep | ||
|
|
||
| extend=${UNDERLAY:?} | ||
| export ROSDEP_SOURCE_FOLDERS=("${UNDERLAY:?}") # source folders to be ignored for rosdep install |
There was a problem hiding this comment.
I think this should go into env.sh
There was a problem hiding this comment.
This variable is configured only here (incrementally for all stages).
Moving the initialization into another file seems odd.
|
|
||
| ici_step "setup_${name}_workspace" ici_prepare_sourcespace "$ws/src" "${sources[@]}" | ||
| ici_step "install_${name}_dependencies" ici_install_dependencies "$extend" "$ROSDEP_SKIP_KEYS" "$ws/src" | ||
| ici_step "install_${name}_dependencies" ici_install_dependencies "$extend" "$ROSDEP_SKIP_KEYS" "$ws/src" "${ROSDEP_SOURCE_FOLDERS[@]}" |
There was a problem hiding this comment.
We might even move this into ici_install_dependencies, then it would always use the UNDERLAY by default
There was a problem hiding this comment.
The key is that this variable incrementally changes. Using UNDERLAY always is not intended. I would have made the variable local in run_source_tests but it needs to propagate here.
There was a problem hiding this comment.
I meant that it will always start from UNDERLAY, just like you intended.
|
The current version couples Right now I am leaning towards making |
|
I think I know why it is stalling.. |
|
I have been digging a little bit deeper:
As far as I can tell, ici_install_dependencies does not install them directly
And those packages will be excluded by rosdep, because they are list in ROS_PACKAGE_PATH. Your example builds Your counter-example (which didn't work before) installs Works fine with the current master version:
|
ici_install_dependencies shouldn't install dependencies that are available in an underlay. Usually, this is ensure by construction, starting from a clean /opt/ros and then installing dependencies for upstream, target, and downstream in turn. However, there is the
UNDERLAYvariable, which allows to use another underlay than /opt/ros. In that case, the underlay might provide packages, which would be required for install.Here is an example using
UNDERLAY=/root/ws_moveit/installfrom a custom docker image. In that case, installation shouldn't care aboutmoveit-*packages, which didn't work before.