# 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.
edit retag 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).