ros-infrastructure / rosdep

rosdep multi-package manager system dependency tool
http://ros.org/wiki/rosdep
BSD 3-Clause "New" or "Revised" License
75 stars 170 forks source link

Support for coral dev board running Mendel (a Debian based linux distribution) #784

Closed ghost closed 3 years ago

ghost commented 3 years ago

Hello - Mendel OS (debian based) which is the OS for coral edge development boards is not yet on the list for ross2/rosdep installations. I am trying to understand if Mendel is expected to become a standard OS for Ros2 installs so that we can leverage binaries (instead of having to compile ourselves) and to avoid having to use docker and cross compilation for the installations. Thank you!

mendel@undefined-bunny:~/ros2_foxy$ rosdep update reading in sources list data from /etc/ros/rosdep/sources.list.d Hit file:/etc/ros/rosdep/custom-rules/skip.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml Skip end-of-life distro "ardent" Skip end-of-life distro "bouncy" Skip end-of-life distro "crystal" Add distro "dashing"

ERROR: Rosdep experienced an error: Could not detect OS, tried ['zorin', 'windows', 'nixos', 'clearlinux', 'ubuntu', 'slackware', 'rhel', 'qnx', 'pop', 'osx', 'sailfishos', 'tizen', 'opensuse', 'opensuse', 'opensuse', 'opensuse', 'openembedded', 'neon', 'mx', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'elementary', 'debian', 'cygwin', 'centos', 'manjaro', 'arch', 'alpine'] Please go to the rosdep page [1] and file a bug report with the stack trace below. [1] : http://www.ros.org/wiki/rosdep

rosdep version: 0.19.0

Traceback (most recent call last): File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/main.py", line 144, in rosdep_main exit_code = _rosdep_main(args) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/main.py", line 428, in _rosdep_main return _no_args_handler(command, parser, options, args) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/main.py", line 437, in _no_args_handler return command_handlerscommand File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/main.py", line 649, in command_update ros_distro=options.ros_distro) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/sources_list.py", line 507, in update_sources_list rosdep_data = get_gbprepo_as_rosdep_data(dist_name) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/gbpdistro_support.py", line 150, in get_gbprepo_as_rosdep_data ctx = create_default_installer_context() File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/init.py", line 90, in create_default_installer_context m.register_platforms(context) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/platforms/debian.py", line 55, in register_platforms register_elementary(context) File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/platforms/debian.py", line 82, in register_elementary (os_name, os_version) = context.get_os_name_and_version() File "/home/mendel/.local/lib/python3.7/site-packages/rosdep2/installers.py", line 115, in get_os_name_and_version os_name = self.os_detect.get_name() File "/home/mendel/.local/lib/python3.7/site-packages/rospkg/os_detect.py", line 698, in get_name self.detect_os() File "/home/mendel/.local/lib/python3.7/site-packages/rospkg/os_detect.py", line 668, in detect_os raise OsNotDetected("Could not detect OS, tried %s" % attempted) rospkg.os_detect.OsNotDetected: Could not detect OS, tried ['zorin', 'windows', 'nixos', 'clearlinux', 'ubuntu', 'slackware', 'rhel', 'qnx', 'pop', 'osx', 'sailfishos', 'tizen', 'opensuse', 'opensuse', 'opensuse', 'opensuse', 'openembedded', 'neon', 'mx', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'elementary', 'debian', 'cygwin', 'centos', 'manjaro', 'arch', 'alpine']

nuclearsandwich commented 3 years ago

If Mendel is Debian-based you could try specifying a compatible Debian distribution using the --os option. See the rosdep comand docs http://docs.ros.org/en/independent/api/rosdep/html/commands.html for details.

If Mendel is Debian-derived but not compatible with any existing Debian or Ubuntu distribution supported by ROS then binary packages will not be available for the platform.

If Mendel is compatible, you could contribute an OsDetector to rospkg http://docs.ros.org/en/independent/api/rospkg/html/developers_guide.html#developing-new-osdetectors

ghost commented 3 years ago

Thanks for the feedback. The --os option (1) above works along with setting ROS__OS_OVERRIDE="Debian:buster". But the compilation fails when compiling fastrtps due to a lack of memory. It looks like the only option is to cross compile. It would be good to have binary downloads for this environment.

nuclearsandwich commented 3 years ago

Ah yeah, I didn't see that you were using Foxy. We do provide ROS Noetic binaries for Debian Buster but we don't currently provide ROS 2 binaries.

ghost commented 3 years ago

HI again, thanks for the feedback. Good to know. Do you know if ROS2 binaries are in progress for Debian Buster? How can I find out if this is in the roadmap, before we revert to ROS?

nuclearsandwich commented 3 years ago

Do you know if ROS2 binaries are in progress for Debian Buster? How can I find out if this is in the roadmap, before we revert to ROS?

It's not on the roadmap for the official build farm. Debian Buster is a Tier 3 platform for Foxy. You could take a look at the cross-compile tooling https://github.com/ros-tooling/cross_compile/ and see if that makes it easier to set up a cross-compilation environment.

Even if you were able to build Fast-DDS I expect you'll continue to have trouble building ROS 2 with less than 4G (or 8G if using the ros1_bridge) of RAM.