Investigation: Making the Catkin plugin work on other distros

Part of this cycle’s roadmap is getting snapcraft to work with different bases, i.e. different distros. To that end, I just finished an investigation into what it would take to make the Catkin plugin work on other distros (Fedora 27, specifically).

The biggest difference is that, if the repo isn’t Debian-based, the OSRF doesn’t maintain a pre-built repo, which means ROS must be built from source. Thankfully that’s something that would be handled by the build VM and not by the Catkin plugin itself.

The Catkin plugin currently fetches rosdep and wstool from the repo as well, but this is also something that would be provided by the build VM, which could get them from pip if the distro isn’t Debian-based.

The most complex aspect will be supporting rosdep, which theoretically does actually support numerous distros (arch, fedora, gentoo, opensuse, and slackware, from a quick look). Since the Catkin plugin will need to remain distro-agnostic, it needs a generic way to request a rosdep dependency to be installed, regardless of the form of dependency it actually is (it could be a deb on Ubuntu, an RPM on fedora, come from pip, or need to be fetched and built from source). This would need to be a handler per VM, much like build- or stage-packages need a handler.