ros-<distro_name>-catkin for dev jobs

36 views
Skip to first unread message

Tom Moore

unread,
May 11, 2016, 8:45:43 PM5/11/16
to ros-sig-buildfarm
Hi all,

I have added a custom distribution that we will call "mydist" for this question. I have my build server running and to the point where I can bloom packages into it. Using Mike Purvis' handy rosdep-generator script, I was able to make all dependencies for my packages point to the ros-indigo packages.

However, the dev script has three "special" packages that don't get resolved: build-essential, python3, and ros-<distro_name>-catkin. Here's some sample output from an attempt to build a fork of robot_localization (relevant text highlighted):

16:14:22 Add distro "groovy"
16:14:22 Add distro "hydro"
16:14:22 Add distro "indigo"
16:14:22 Add distro "jade"
16:14:22 Add distro "kinetic"
16:14:22 Add distro "mydist"
16:14:22 updated cache in /home/buildfarm/.ros/rosdep/sources.cache
16:14:22 Crawling for packages in workspace '/tmp/catkin_workspace/src'
16:14:22 Found the following packages:
16:14:22   - robot_localization
16:14:22 Package maintainer emails: ayrt...@gmail.com
16:14:24 Always install the following generic dependencies:
16:14:24   - build-essential
16:14:24   - python3
16:14:24   - ros-mydist-catkin
16:14:24 Identified the following build dependencies (ignoring packages available from source):
16:14:24   - catkin
16:14:24   - cmake_modules
16:14:24   - diagnostic_msgs
16:14:24   - diagnostic_updater
16:14:24   - eigen
16:14:24   - geographic_msgs
16:14:24   - geometry_msgs
16:14:24   - message_filters
16:14:24   - message_generation
16:14:24   - nav_msgs
16:14:24   - roscpp
16:14:24   - roslint
16:14:24   - sensor_msgs
16:14:24   - std_msgs
16:14:24   - tf2
16:14:24   - tf2_geometry_msgs
16:14:24   - tf2_ros
16:14:24 Resolved the dependencies to the following binary packages:
16:14:24   - libeigen3-dev
16:14:24   - ros-indigo-catkin
16:14:24   - ros-indigo-cmake-modules
16:14:24   - ros-indigo-diagnostic-msgs
16:14:24   - ros-indigo-diagnostic-updater
16:14:24   - ros-indigo-geographic-msgs
16:14:24   - ros-indigo-geometry-msgs
16:14:24   - ros-indigo-message-filters
16:14:24   - ros-indigo-message-generation
16:14:24   - ros-indigo-nav-msgs
16:14:24   - ros-indigo-roscpp
16:14:24   - ros-indigo-roslint
16:14:24   - ros-indigo-sensor-msgs
16:14:24   - ros-indigo-std-msgs
16:14:24   - ros-indigo-tf2
16:14:24   - ros-indigo-tf2-geometry-msgs
16:14:24   - ros-indigo-tf2-ros


As you can see, the script correctly resolves the package's dependencies. However, it assumes that there must be a package ros-mydist-catkin. This package does not get resolved as a rosdep key, but instead is assumed to be a package that is directly apt-get-able.

According to this page, "All packages have at least one dependency, a build tool dependency on catkin..." If that's true, then is it necessary for the script to manually add the dependency on catkin for the distribution in question, or would it be better to let the resolution of that rosdep key point to the correct catkin version? Is there a workaround for this?

Thanks,
Tom

Tully Foote

unread,
May 12, 2016, 6:04:28 PM5/12/16
to ros-sig-...@googlegroups.com
Hi Tom, 

I think that the always install logic is too aggressive in this case. It should be checking not just that catkin is in the list of packages but whether catkin is in the list of packages or the build dependencies. Moving the logic to insert catkin after this line would likely fix the problem. https://github.com/ros-infrastructure/ros_buildfarm/blob/5141d5dba2993718a363475abf86edbb0e958346/scripts/devel/create_devel_task_generator.py#L97

Tully

--
You received this message because you are subscribed to the Google Groups "ros-sig-buildfarm" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-buildf...@googlegroups.com.
To post to this group, send email to ros-sig-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ros-sig-buildfarm/b6b5b032-02a3-4d98-b4c1-cb5b823c68cc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Dirk Thomas

unread,
May 12, 2016, 6:15:03 PM5/12/16
to ros-sig-...@googlegroups.com
Even if `catkin` is not in the list of packages or the build dependencies it will need to be installed (that's why it is in the always-install-list). Simply because the devel jobs invokes `catkin_make_isolated` (https://github.com/ros-infrastructure/ros_buildfarm/blob/5141d5dba2993718a363475abf86edbb0e958346/ros_buildfarm/catkin_workspace.py#L34) to build the workspace.

For your case it might be necessary to resolve `catkin` via rosdep instead of just constructing the package name based on the passed rosdistro name.

Cheers,
- Dirk

Tom Moore

unread,
Aug 11, 2016, 9:15:11 AM8/11/16
to ros-sig-buildfarm
Whoops, just realized I never responded to this. Thanks for the help, Tully and Dirk. I ended up not going with our own distribution for a number of reasons, so the version of catkin that gets installed was fine as-is.
Reply all
Reply to author
Forward
0 new messages