ros2-rust / ros2_rust

Rust bindings for ROS 2
Apache License 2.0
923 stars 126 forks source link

Support for building Debian packages #310

Open ashquarky opened 1 year ago

ashquarky commented 1 year ago

It would be useful if it was possible to make Debian packages from a project using ros2_rust. There's official documentation for doing this, but bloom-generate claims to not support ament_cargo builds, along with rclrs and rosidl_runtime_rs not being in rosdep.

My project at least doesn't seem to have ended up with any dynamic dependencies outside the standard ROS libs, so if that's the common case it might not be that complicated to support (dependencies can mostly be ignored?)

There are other potential distribution methods too:

Of these, I think debian packages are the best option. What work has to be done for bloom to support cargo; if that's even possible before being in the core distribution?

esteve commented 1 year ago

@ashquarky thanks for your interest in ros2-rust. Adding support for building Debian packages out of ros2-rust is not currently possible, we'd need at least these two before we can do that:

As a first step, we want to submit rosidl_runtime_rs to the ROS buildfarm, as it's just a regular ROS package written in Python, and eventually enable it as one of the default message generators. Before that we want to add support for actions (see https://github.com/ros2-rust/ros2_rust/pull/295), which would bring it to pretty much feature parity with other message generators. Once we have that included in the standard ROS distribution, all messages will be generated as Rust structs and although rclrs will still be distributed as a crate, the barrier to entry for having ROS 2 applications written in Rust will be much lower.