Ask Your Question
0

How to get the latest commit of a dependency

asked 2019-09-19 09:48:45 -0500

HLaloge-LC gravatar image

Hi everyone,

I use the following dependency in my project: https://github.com/orocos/rtt_ros_integration, and installed it with apt via rosdep. However, there is a feature in the few lasts commits that I want to use, but no release has been done yet with these commits, and the project is in standby since May.

What is my best option to get the latest changes of this project? I would prefer not to clone it in my catkin workspace.. Can I use bloom or rosdep for this? I am not very familiar with the former.

For example, can I create a custom rosdep distribution file to build it from sources and install it in /opt/ros/kinetic, or whatever?

I am using ROS kinetic on Ubuntu 16.04.

Thanks for your attention, Hugo

edit retag flag offensive close merge delete

Comments

I would prefer not to clone it in my catkin workspace..

that would be the most straightforward way to do this however.

gvdhoorn gravatar imagegvdhoorn ( 2019-09-19 09:54:10 -0500 )edit

I know, but we have quite a complex workspace, and I would really prefer not to add a third-party package in it.

HLaloge-LC gravatar imageHLaloge-LC ( 2019-09-19 10:01:00 -0500 )edit

And using an underlay, would that be impossible/undesirable as well?

gvdhoorn gravatar imagegvdhoorn ( 2019-09-19 10:14:00 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-09-19 13:11:15 -0500

tfoote gravatar image

If you want something from the latest commits that's unreleased you will have to compile it from source.

Clearly the easiest thing to do is to just add it to your workspace. I'm not sure why you don't want to do that. That is the standard thing to do.

As @gvdhoorn mentions you can add one level of complexity and add an underlay. Tutorial here

If you want to you can build a custom binary package based off of master using tools like bloom. But that's generally not recommended. And as you mention you're not familiar with this, and it will be a lot of custom work for something that may be hard to reproduce.

rosdep is not the right tool, it's a meta package manager. If someone else was packaging this in a PPA you could update your rosdep sources to support that. But that's not the case.

Stepping back though. If you want the latest and greatest commits, you should be ready to put them into your workspace. The underlay is an optimization to improve performance with multiple workspaces extending the same one.

And remember when you use an updated version of something from source like this. If there's any API or ABI changes you also need to check out all the downstream dependencies from source and recompile them too to make sure you don't have crashes due to binary incompatibilities.

edit flag offensive delete link more

Comments

Thanks, I think I'll go with an underlay. However, my dependency already have release scripts for bloom (https://github.com/orocos-gbp/rtt_ros...), so i thought it would be easier to use that.

HLaloge-LC gravatar imageHLaloge-LC ( 2019-09-20 02:13:45 -0500 )edit

Using the current release repository would be possible too.

It would just mean more manual work.

An underlay would essentially come down to:

  • create underlay ws
  • put copy of pkg in underlay ws
  • (install all dependencies)
  • build underlay
  • source underlay
  • build your regular workspace

done.

gvdhoorn gravatar imagegvdhoorn ( 2019-09-20 06:11:18 -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: 2019-09-19 09:48:45 -0500

Seen: 35 times

Last updated: Sep 19