Depending on software only available as source
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.
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 whichrosdep
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
.rdmanifest
s are run with super-user priviliges and you can basically do everything in them without your user realising (until it is too late).Note that a third party release is actually not that involved.
In the ideal case only a package manifest needs to be added.