space-ros / docker

Docker images to facilitate Docker-based development.
22 stars 33 forks source link

Improve rosdep install #124

Open xfiderek opened 10 months ago

xfiderek commented 10 months ago

Summary

We are using rosdep to install non-ROS packages from apt, such as uncrustify, eigen, clang-tidy. I suggest adding two improvements:

  1. Add list of installed packages to final artifact produced in CI (ideally with exact versions)
  2. Block installation of ROS packages with rosdep (e.g. by failing whenever we are about to install package with ros-${DISTRO}- prefix), as all ROS packages must be compiled from source in spaceros.
mkhansenbot commented 10 months ago

What about rviz? Do we have to build that from source?

xfiderek commented 10 months ago

Hi @mkhansenbot, good question.

For now our core spaceros image does not install RVIZ. I remember we had a brief discussion about having base and desktop images in the future, but whatever I stated here is applicable to base, which imo should exclude stuff like gazebo and rviz (gui tools in general). The proposed improvement will make sure that in core image, everything is traceable and subject to code analysis and tests.

I am not sure though what we should do for demos, where rviz and gazebo may be required. My guess would be that such packages are less critical than core ROS middleware etc, so installing debs may be acceptable, but I am of course happy to discuss it further and hear opinion of other people.

mkhansenbot commented 10 months ago

I agree we should be able to install from debs for the demos. I just want to make sure whatever change is made to block rosdep doesn't include demo dependencies like rviz.

asimonov commented 4 months ago

Summary

We are using rosdep to install non-ROS packages from apt, such as uncrustify, eigen, clang-tidy. I suggest adding two improvements:

1. Add list of installed packages to final artifact produced in CI (ideally with exact versions)

2. Block installation of ROS packages with rosdep (e.g. by failing whenever we are about to install package with `ros-${DISTRO}-` prefix), as all ROS packages must be compiled from source in spaceros.

Yes, I support both!

for 1 I usually use 'simulated' rosdep output then run it like this (this is example from our main Earthfile):

  RUN rosdep install -s -y \
      --from-paths src --ignore-src \
      --rosdistro ${ROSDISTRO} \
      # `urdfdom_headers` is cloned from source, however rosdep can't find it.
      # It is because package.xml manifest is missing. See: https://github.com/ros/urdfdom_headers
      # Additionally, IKOS must be excluded as per: https://github.com/space-ros/docker/issues/99
      --skip-keys "$(tr '\n' ' ' < 'excluded-pkgs.txt') urdfdom_headers ikos" \
      > rosdep-commands.sh && \
      chmod u+x rosdep-commands.sh && \
      ./rosdep-commands.sh
asimonov commented 4 months ago

Hi @mkhansenbot, good question.

For now our core spaceros image does not install RVIZ. I remember we had a brief discussion about having base and desktop images in the future, but whatever I stated here is applicable to base, which imo should exclude stuff like gazebo and rviz (gui tools in general). The proposed improvement will make sure that in core image, everything is traceable and subject to code analysis and tests.

I am not sure though what we should do for demos, where rviz and gazebo may be required. My guess would be that such packages are less critical than core ROS middleware etc, so installing debs may be acceptable, but I am of course happy to discuss it further and hear opinion of other people.

Think we discussed it on technical meeting since that comment was made...

My view is that in the demos we can build rviz and plugins from source (I do it in one of my current dockers, so it is not an issue).

With gazebo unfortunately it should come from apt, building from source seem to be difficult. But carefully to not pull some ros-* debs...