Depending on software only available as source

asked 2019-05-08 20:34:35 -0500

Geoff gravatar image

I have a package that needs to use an external (non-ROS and not mine) software library that is only available as a source tarball or SVN repository. Ideally I'd like that software to be provided as an Ubuntu package so I can depend on it with rosdep, but there is no guarantee that I will be able to convince the authors to provide one.

I'm curious what methods others have used to depend on software that is only available as source. I can think of a few methods, but none of them stands out as being appealing and some will increase my maintenance burden.

  • Have a ROS package that downloads the source, extracts it, and compiles it into the work space.
  • Require the user of my package to install the software themselves and then use pkgconfig in my package's CMake files to find it.
  • Include the source (it is LGPL) in my package's repository or in a separate package of its own.
  • Make the binary release myself.
edit retag flag offensive close merge delete


A 5th option (which I don't like but is still supported/possible): use an .rdmanifest which is essentially an installation script that you ship with your package and which rosdep will accept as covering one of your build dependencies (ie: it'll resolve the key to it). See #q255238 for a question where I asked about the status of those and link to package that uses it (exactly for the reasons you list I believe) and ros-planning/moveit#1281 for a discussion in the context of MoveIt.

Reason I don't like them is that .rdmanifests are run with super-user priviliges and you can basically do everything in them without your user realising (until it is too late).

gvdhoorn gravatar image gvdhoorn  ( 2019-05-09 05:15:09 -0500 )edit
  • Make the binary release myself.

Note that a third party release is actually not that involved.

In the ideal case only a package manifest needs to be added.

gvdhoorn gravatar image gvdhoorn  ( 2019-05-09 05:16:03 -0500 )edit