v4hn / ros-o-builder

[ROS-O] Github CI system building ROS+universe for Ubuntu/Debian
https://v4hn.github.io/ros-o-builder/
MIT License
18 stars 8 forks source link

`catkin` package issue when ROS2 is co-installed #20

Closed mqcmd196 closed 1 month ago

mqcmd196 commented 1 month ago

Thank you for your nice project. I'm trying to work on JSK packages.

As your instruction, I added apt list and rosdep list to my Ubuntu 22.04 environment. It seems that there is an issue with ROS2 installed environment.

When I execute sudo apt install ros-one-desktop-full, it says

❯ sudo apt install ros-one-desktop-full
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-catkin-pkg : Conflicts: catkin but 0.8.10-7 is to be installed
 python3-catkin-pkg-modules : Conflicts: catkin but 0.8.10-7 is to be installed
E: Unable to correct problems, you have held broken packages.

Do you have any ideas for it?

❯ apt show -a python3-catkin-pkg
Package: python3-catkin-pkg
Version: 1.0.0-100
Priority: optional
Section: python
Maintainer: Dirk Thomas <dthomas@osrfoundation.org>
Installed-Size: 26.6 kB
Depends: python3:any (>= 3.6~), python3-catkin-pkg-modules (>= 1.0.0), python3-dateutil, python3-docutils
Conflicts: catkin, python-catkin-pkg
Homepage: http://wiki.ros.org/catkin_pkg
Download-Size: 3920 B
APT-Manual-Installed: yes
APT-Sources: http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages
Description: catkin package library
 Library for retrieving information about catkin packages.

Package: python3-catkin-pkg
Version: 0.4.24-2
Priority: optional
Section: universe/python
Source: ros-catkin-pkg
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 272 kB
Depends: python3-dateutil, python3-docutils, python3-pyparsing, python3:any, python3-pkg-resources
Homepage: https://wiki.ros.org/catkin_pkg
Download-Size: 46.5 kB
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
Description: Low-level build system macros for Robot OS -- Python 3 module
 This package is part of Robot OS (ROS). It is a library for
 retrieving information about catkin packages. Catkin contains CMake
 macros that are useful in the development of ROS-related systems. ROS
 provides libraries and tools to help software developers create robot
 applications.
 .
 This package is a Python 3 module needed to use Catkin.

❯ apt show -a catkin
Package: catkin
Version: 0.8.10-7
Priority: extra
Section: universe/devel
Source: ros-catkin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 461 kB
Depends: python3, python3-catkin-pkg (>= 0.4.14-2), python3-catkin, python3-empy, python3-setuptools, cmake-extras, ros-environment, python3:any
Recommends: bash-completion
Homepage: https://wiki.ros.org/catkin
Download-Size: 80.8 kB
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
Description: Low-level build system macros and infrastructure for Robot OS
 Catkin contains CMake macros that are useful in the development of
 ROS-related systems. In ROS (Robot OS) Fuerte and later, many of the
 lower-level libraries are being migrated to be CMake only.

❯ sudo apt install catkin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-catkin-pkg : Conflicts: catkin but 0.8.10-7 is to be installed
 python3-catkin-pkg-modules : Conflicts: catkin but 0.8.10-7 is to be installed
E: Unable to correct problems, you have held broken packages.
v4hn commented 1 month ago

Hi there @mqcmd196, thank you for your interest!

First concerning your goal:

I'm trying to work on JSK packages.

yay! Thank you for the attempt, but please give me a bit more time before looking deeper, as I'm currently migrating to a much faster parallelized CI infrastructure that also fixes a big blocker for JSK packages already (spoilers here). I plan to create upstream issues in the jsk repositories over the next weeks once I can pinpoint exact problems.

Now concerning the actual error:

It seems that there is an issue with ROS2 installed environment.

That is unfortunately expected at this point because the build uses the Debian packages for the low-level infrastructure and they are known to be incompatible with the ROS/ROS2 packages provided by OpenRobotics.

A bit of politics below to explain the issue:

There is not one correct way to resolve this. Debian Science Robotics attempts to package ROS in Debian (and thus theoretically also Ubuntu), but the ROS2 core team explicitly contradicts these efforts as they provide similar -but not identical- packages with the same files and slightly different package names in their build farm repositories. We can only rely on one or the other. It is possible to adjust the deb builder to rely on the OR ROS packages with a bit of work instead of the Debian ones, but that means working against an independently-moving dependency that does not acknowledge the existence of ROS (one) at this point. On the other hand, the current system can build on almost any version of Debian/Ubuntu after 2020 - theoretically by changing only one string.

Anyone can go either way with this project in the future. That's the beauty of open source! :heart:

mqcmd196 commented 1 month ago

Thank you for your kind reply!

yay! Thank you for the attempt, but please give me a bit more time before looking deeper, as I'm currently migrating to a much faster parallelized CI infrastructure that also fixes a big blocker for JSK packages already (spoilers here). I plan to create upstream issues in the jsk repositories over the next weeks once I can pinpoint exact problems.

I see. I am waiting for your issues and I'll fix them if needed.

Talking about EusLisp, it has been released as a Debian package from Bullseye (https://packages.debian.org/bullseye/euslisp ). We may use it to avoid conflict. I need @k-okada 's opinion.

It is possible to adjust the deb builder to rely on the OR ROS packages with a bit of work instead of the Debian ones, but that means working against an independently-moving dependency that does not acknowledge the existence of ROS (one) at this point.

I see. I'm watching Debian team trying to release ros1 things.

At this time, I separate the environment and develop ros1/ros2 things.

v4hn commented 1 month ago

Talking about EusLisp, it has been released as a Debian package from Bullseye (https://packages.debian.org/bullseye/euslisp ). We may use it to avoid conflict. I need @k-okada 's opinion.

That can make sense. :+1: Let me know if I should add a rosdep key and try.

Concerning ROS-O+ROS2 setups, please also be aware of https://ros.packages.techfak.net/ . This repository is significantly smaller in number of packages, but builds up on the respective ROS2 packages. So you might also experiment using the stack from there and compile all missing jsk deps in your own install workspace on top.

mqcmd196 commented 1 month ago

Thank you for your info. I've tested for a few days. For me

Concerning ROS-O+ROS2 setups, please also be aware of https://ros.packages.techfak.net/ . This repository is significantly smaller in number of packages, but builds up on the respective ROS2 packages. So you might also experiment using the stack from there and compile all missing jsk deps in your own install workspace on top

is the best way to develop ROS1/ROS2 things simultaneously now.