Ask Your Question
0

rosdep: installing dependency from non-apt-source

asked 2020-03-26 10:31:31 -0500

w-haag gravatar image

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:

  1. Is it correct that my rosdep rule will not be accepted into the rosdistro repository?
  2. 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!

edit retag flag offensive close merge delete

Comments

1

Related: #q255238. I don't believe anything has changed wrt the status of .rdmanifests. 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.

gvdhoorn gravatar image gvdhoorn  ( 2020-03-26 11:47:08 -0500 )edit
1

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 .debs, just ask users to install those before trying to build your ROS package. With suitable find_library(..) or find_package(..) (or similar) statements in your CMakeLists.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 .rdmanifests.

gvdhoorn gravatar image gvdhoorn  ( 2020-03-26 11:49:18 -0500 )edit

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.

w-haag gravatar image w-haag  ( 2020-03-26 12:05:56 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-03-26 12:35:00 -0500

tfoote gravatar image

The links from @gvdhoorn are good.

If you have your own deb packages for your local purposes you can add your own custom rosdep rules to resolve them on your systems. rosdep can take extra items in the sources.list.d folder just like apt can. And if you add it on your systems rosdep will resolve it on your systems. (This does not need to be even a rdmanifest, it can be a standard debian rule. The only thing for it to work is that you also need to make sure to add your private apt repository

We will not accept rdmanifests to the main repository, but like above you can add your own rosdep sources to use them.

However as discussed in the comments releasing the package onto the ros buildfarm using bloom might make sense too. As long as it's open source and we can build and redistribute it.

edit flag offensive delete link more

Comments

Thank you for the answer!

w-haag gravatar image w-haag  ( 2020-03-26 12:38:20 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-03-26 10:31:31 -0500

Seen: 15 times

Last updated: Mar 26