rosdep: installing dependency from non-apt-source
Hello,
a ROS package we maintain depends on a third-party-library which we build and host on our own server; we maintain .deb-packages for several architectures as well as a Windows installer.
After reading some rosdep tutorials and questions as well as looking at the base.yaml, I have written a .rdmanifest-file to get the package from our server and install it. I wanted to create a pull request today and checked the CONTRIBUTING.md before doing so; there, I read that only apt sources are accepted into rosdep. As it would be a lot of effort with not much gain to add our package to the official apt sources, we do not consider this a viable alternative.
Therefore, I have two questions:
- Is it correct that my rosdep rule will not be accepted into the rosdistro repository?
- Is there any way to use the .rdmanifest without adding it to the official rosdistro, e.g. using it as an argument for
rosdep install
?
Thanks in advance!
Related: #q255238. I don't believe anything has changed wrt the status of
.rdmanifest
s. Also: #q322777.You could look at how pylon_camera handles this. That package is not released through the ROS buildfarm, so users have to build it from source in their workspace. See the Installation section for how they handle the Basler SDK dependency and their use of
.rdmanifest
.Is your intent to be able to release your ROS package through the ROS buildfarm? If not: there would not seem to be an actual need to use
rosdep
here, nor.rdmanifest
. As you already have.deb
s, just ask users to install those before trying to build your ROS package. With suitablefind_library(..)
orfind_package(..)
(or similar) statements in yourCMakeLists.txt
, missing dependencies are easily reported to users.If you do intent to release through the ROS buildfarm, I don't believe this will be possible with packages depending on
.rdmanifest
s.Thank you very much!
Yes, the original intent was to release the ROS package through the buildfarm. Using
bloom
for the third party release seems to be the correct way of handling it.