eProsima/Integration-Service

Building Integration Service on Ubuntu 22.04.2 LTS (Jammy Jellyfish) + ROS2 (humble)

Closed this issue ยท 16 comments

jcheca commented

I would like to test FIWARE integration with ROS2, so I have installed ROS2 (humble) in my Ubuntu 22.04.02 fresh intallation and then eProsima Integration-Service with only just two system handle (ROS2 and FIWARE); I have installed all dependencies but when i build with NOFLAGs i have these error:

`Starting >>> xtypes
Starting >>> is-examples
[1.441s] WARNING:colcon.colcon_cmake.task.cmake.build:Could not run installation step for package 'is-examples' because it has no 'install' target
Finished <<< is-examples [0.16s]
Finished <<< xtypes [0.28s]
Starting >>> is-core
Finished <<< is-core [0.41s]
Starting >>> is-mock
Starting >>> is-json-xtypes
Finished <<< is-mock [0.26s]
Starting >>> is-ros2
Finished <<< is-json-xtypes [0.38s]
Starting >>> is-fiware
Finished <<< is-ros2 [0.29s]
Starting >>> is-ros2-mix-generator
Finished <<< is-fiware [0.36s]
--- stderr: is-ros2-mix-generator
CMake Error at /home/usuario/is-workspace/install/is-core/lib/cmake/is-core/cmake/is_mix_generator.cmake:596 (message):
Critical failure when trying to generate ros2 source files for std_msgs:

Unable to import rosidl_adapter. Please source a ROS2 installation first.
Call Stack (most recent call first):
/home/usuario/is-workspace/install/is-core/lib/cmake/is-core/cmake/is_mix_generator.cmake:341 (_is_mix_generate_source_files)
/home/usuario/is-workspace/install/is-core/lib/cmake/is-core/cmake/is_mix_generator.cmake:260 (_is_configure_mix_package)
cmake/is_ros2_rosidl_mix.cmake:69 (is_mix_generator)
CMakeLists.txt:91 (is_ros2_rosidl_mix)


Failed <<< is-ros2-mix-generator [1.49s, exited with code 1]

Summary: 7 packages finished [3.42s]
1 package failed: is-ros2-mix-generator
1 package had stderr output: is-ros2-mix-generator
`
I just only think that the only difference with documentation is ROS2 distribution (humble); in documentation describe ROS2 (foxy/Galactic) in Ubuntu 20.04

I would like to know is it is possible to build/run eProsima Integration Service in Ubuntu 22.04 with ROS2 (humble)

Thanks in advance.

That's odd because the build you are describing actually works in the ci I can only provide two advices:

  • try following step by step the worflow in the github runner.
  • for the FIWARE-SH use the branch (bugfix/advertise) associated to eProsima/FIWARE-SH#36 which introduces some fixes.
jcheca commented

Thanks Miguel for you replay. I will do step by step but in then workflow i can see conditional for the os "ubuntu-20.04" but not for "ubuntu 22.04", is it ok if i Change it ?

Thanks again.

It is ok.
Basically humble is the only distro that runs in ubuntu 22.04 (its goal OS) and ROS1 lacks support for it. The conditionals plainly disable all ROS1 features for humble.

jcheca commented

Thanks again for all your help. I only get to deploy via github-runner in ubuntu-22.04 Galactic Distribution of the 3 matrix.node, I have deleted in my fork matrix.node to only deploy humble and this is my logs https://github.com/jcheca/Integration-Service/actions/runs/5031799783/jobs/9025096313.

Thanks in advance.

Something odd happened in the runner you report. CMake says it cannot identify the compiler. In fact, the scheduled job on your main branch was built flawlessly yesterday https://github.com/jcheca/Integration-Service/actions/runs/5035067330/jobs/9030316127 though the job fail because a flaky test on ROS2-SH (this one only fails on humble from time to time, but we cannot reproduce it locally).

jcheca commented

I have to install "build-essential" to solve compiler problem, but now i have the nex issue https://github.com/jcheca/Integration-Service/actions/runs/5042372111/jobs/9042940679
Thank you very much for taking care of all the work that I am generating ๐Ÿ‘

Again I think is an issue with the runner. Python is not locating empy which for sure is installed with the ros2 & colon dependencies. My educated guess: is a networking issue: sometimes apt fails, sometime pip. Github actions free workflow approach is flooding the package managers in traffic. That would explain why the nightlies are passing, by definition they are run when the network traffic is low. ๐Ÿคทโ€โ™‚๏ธ

jcheca commented

Yes, "empy" I have managed to install it manually to try to solve the problem. Well, I'll try it at other times of the day to see if I have any luck.
Thank you.

We have reviewed your workflow and you are building ros humble on ubuntu focal instead of jammy. That may surely lead to build issues because humble expects the jammy apt packages.
Nevertheless, something is odd with the runner because despite your ci.yml config your former jobs work on jammy instead of focal as expected.

jcheca commented

But my ubuntu is (jammy)

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

jcheca commented

https://github.com/jcheca/Integration-Service/actions/runs/5044434860/jobs/9047479575, I'm not going to interrupt anymore, but when it can compile it stays in the same error already described in the beginning of this thread. Cannot generate package is-ros2-mix-generator.

Thxs.

Again something is wrong with the runner. It complains that rosidl_adapter is missing but in the faulty step it is located:

-- Found rosidl_adapter: 3.1.4 (/opt/ros/humble/share/rosidl_adapter/cmake)

You can introduce an extra step to check it can be reached:

. /opt/ros/${{ matrix.node }}/setup.sh
python3 -m rosidl_adapter --help
jcheca commented

Yes, it could be reached (https://github.com/jcheca/Integration-Service/actions/runs/5056218869/jobs/9073406481), but no pass "Build under ROS2 overlay".

Summary: 8 packages finished [8min 45s]

1 package failed: is-ros2-mix-generator
1 package aborted: is-websocket
8 packages had stderr output: is-core is-examples is-json-xtypes is-mock is-ros2 is-ros2-mix-generator is-websocket xtypes

That's the mystery. I've been launching similar workflows this morning without finding this issue. See here the branch comparison. It's unexplainable to me.

Finally, we found an explanation ... you are using a github self-hosted runner which is tagged as the ubuntu-22.04 github runner. The only advice we can provide is to compare your runner config with the github runner one and identify any missing python dependency or version issue.

Is understood this is not an Integration Service issue but a runner setup one.