Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No 'rosidl_typesupport_c' found on AlmaLinux 8 #944

Open
christianrauch opened this issue Dec 18, 2024 · 10 comments
Open

No 'rosidl_typesupport_c' found on AlmaLinux 8 #944

christianrauch opened this issue Dec 18, 2024 · 10 comments
Labels
bug Something isn't working

Comments

@christianrauch
Copy link
Contributor

christianrauch commented Dec 18, 2024

Description

Building a package on AlmaLinux 8 humble fails with No 'rosidl_typesupport_c' found.

Expected Behavior

Build should succeed.

Actual Behavior

  CMake Error at /opt/ros/humble/share/rosidl_typesupport_c/cmake/get_used_typesupports.cmake:35 (message):
    No 'rosidl_typesupport_c' found
  Call Stack (most recent call first):
    /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_c-extras.cmake:8 (get_used_typesupports)
    /opt/ros/humble/share/rosidl_typesupport_c/cmake/rosidl_typesupport_cConfig.cmake:41 (include)
    /opt/ros/humble/share/builtin_interfaces/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
    /opt/ros/humble/share/builtin_interfaces/cmake/builtin_interfacesConfig.cmake:41 (include)
    /opt/ros/humble/share/libstatistics_collector/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
    /opt/ros/humble/share/libstatistics_collector/cmake/libstatistics_collectorConfig.cmake:41 (include)
    /opt/ros/humble/share/rclcpp/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
    /opt/ros/humble/share/rclcpp/cmake/rclcppConfig.cmake:41 (include)
    CMakeLists.txt:35 (find_package)

To Reproduce

I am using the following GitHub workflow to test building https://github.com/christianrauch/apriltag_ros.git on different Linux distributions with the ros-tooling/action-ros-ci action and manually with rosdep & colcon.

name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    name: "${{ matrix.distribution.image }} / ${{ matrix.distribution.ros }} (${{ matrix.steps }})"

    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        steps: ['action', 'manual']
        distribution: [
          {image: 'ubuntu:22.04', ros: humble},
          {image: 'ubuntu:24.04', ros: jazzy},
          {image: 'almalinux:8', ros: humble},
          {image: 'almalinux:9', ros: jazzy},
        ]

    container:
      image: ${{ matrix.distribution.image }}

    steps:
      - uses: ros-tooling/setup-ros@v0.7

      - name: generate repos file
        run: |
          cat << EOF > sources.repos
          repositories:
            src/apriltag_ros:
              type: git
              url: https://github.com/christianrauch/apriltag_ros.git
          EOF

      - name: build (action)
        uses: ros-tooling/action-ros-ci@v0.3
        if: ${{ matrix.steps == 'action' }}
        with:
          target-ros2-distro: ${{ matrix.distribution.ros }}
          no-symlink-install: true
          vcs-repo-file-url: sources.repos

      - name: build (manual)
        if: ${{ matrix.steps == 'manual' }}
        run: |
          rosdep update
          vcs import --input sources.repos
          rosdep install --from-paths src --ignore-src -y --rosdistro ${{ matrix.distribution.ros }}
          . /opt/ros/${{ matrix.distribution.ros }}/setup.sh
          colcon build --event-handlers=console_cohesion+

All but the almalinux:8 / humble (action) workflows will succeed. Since the manual rosdep & colcon procedure succeeds also with almalinux:8 (almalinux:8 / humble (manual)), I assume that this is caused by the action and not the rosidl_typesupport_c package.

Failure with action: 2_almalinux8 _ humble (action).txt

Success with manual stpes: 6_almalinux8 _ humble (manual).txt

System (please complete the following information)

  • OS: AlmaLinux 8
  • ROS 2 Distro: humble
@christianrauch christianrauch added the bug Something isn't working label Dec 18, 2024
@christophebedard
Copy link
Member

christophebedard commented Dec 18, 2024

I feel like I remember seeing a similar error a while ago, but I can't remember exactly where or what. I also looked at the setup-ros and action-ros-ci code and I don't see anything that could explain rosidl_typesupport_c being not found/missing.

@christianrauch
Copy link
Contributor Author

A full text search for No 'rosidl_typesupport_c' found in $YOUR_FAVOURITE_SEARCH_ENGINE shows a couple of places where this issue came up to in different settings.

A recent issue would be ros2/rosidl_typesupport#129, which points to https://github.com/sloretz/sensors_for_ros/blob/master/docs/problems_encountered.md#typesupports-are-found-using-the-ament-index, which mentions issues with the amend index and as workaround setting AMENT_PREFIX_PATH. Maybe something goes wrong during sourcing and the environment is not fully set?

@christophebedard
Copy link
Member

christophebedard commented Dec 19, 2024

Could you try building all of ROS 2 Humble from source instead of using the binaries? Just to see if that works.

@christianrauch
Copy link
Contributor Author

You mean, adding all the ROS 2 repos to the sources.repos and let the action and manual steps run over this?

@christophebedard
Copy link
Member

Yeah. You can download https://raw.githubusercontent.com/ros2/ros2/refs/heads/humble/ros2.repos, append your repo to it, and provide that to vcs-repo-file-url.

@christianrauch
Copy link
Contributor Author

Yeah. You can download https://raw.githubusercontent.com/ros2/ros2/refs/heads/humble/ros2.repos, append your repo to it, and provide that to vcs-repo-file-url.

Is there an example of this actually working? I had to remove a couple of packages from the ros2.repos because of rosdep dependencies. Eventually, I am stuck with dnf: Failed to detect successful installation of [asio-devel] in both cases and later get Not found a local version of Asio installed. for the action.

@clalancette
Copy link
Contributor

Is there an example of this actually working? I had to remove a couple of packages from the ros2.repos because of rosdep dependencies. Eventually, I am stuck with dnf: Failed to detect successful installation of [asio-devel] in both cases and later get Not found a local version of Asio installed. for the action.

I don't really know anything about action-ros-ci, but I can provide a bit of context about Humble.

Humble on RHEL-8 is a special snowflake, in that RHEL-8 does not have Asio packaged for it. The way we work around that in CI and on the buildfarm is by passing a special flag to CMake when we build Fast-RTPS, namely -DTHIRDPARTY_Asio=ON. Also, you'll need to tell rosdep to not attempt to install that key with a --skip-keys argument. You can see all of this in https://docs.ros.org/en/humble/Installation/Alternatives/RHEL-Development-Setup.html

@christianrauch
Copy link
Contributor Author

Thanks for that hint. I was with the jazzy instructions and just replaced jazzy with humble. I did not know about these special asio workarounds.

@christianrauch
Copy link
Contributor Author

Eventually, I managed to build the majority of ROS 2 packages, includig apriltag_ros, from source using the manual steps and the action.

For reference, this is the pipeline I used:

name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:

jobs:
  build:
    name: "${{ matrix.distribution.image }} / ${{ matrix.distribution.ros }} (${{ matrix.steps }})"

    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        steps: ['action', 'manual']
        distribution: [
          # {image: 'ubuntu:22.04', ros: humble},
          # {image: 'ubuntu:24.04', ros: jazzy},
          {image: 'almalinux:8', ros: humble},
          # {image: 'almalinux:9', ros: jazzy},
        ]

    container:
      image: ${{ matrix.distribution.image }}

    steps:
      - uses: ros-tooling/setup-ros@v0.7

      - name: generate repos file
        run: |
          cat << EOF > sources.repos
          repositories:
            src/ament/ament_cmake:
              type: git
              url: https://github.com/ament/ament_cmake.git
              version: humble
            src/ament/ament_index:
              type: git
              url: https://github.com/ament/ament_index.git
              version: humble
            src/ament/ament_package:
              type: git
              url: https://github.com/ament/ament_package.git
              version: humble
            src/ament/google_benchmark_vendor:
              type: git
              url: https://github.com/ament/google_benchmark_vendor.git
              version: humble
            src/ament/googletest:
              type: git
              url: https://github.com/ament/googletest.git
              version: humble
            src/ament/uncrustify_vendor:
              type: git
              url: https://github.com/ament/uncrustify_vendor.git
              version: humble
            src/eProsima/Fast-CDR:
              type: git
              url: https://github.com/eProsima/Fast-CDR.git
              version: v1.0.24
            src/eProsima/Fast-DDS:
              type: git
              url: https://github.com/eProsima/Fast-DDS.git
              version: 2.6.x
            src/eProsima/foonathan_memory_vendor:
              type: git
              url: https://github.com/eProsima/foonathan_memory_vendor.git
              version: master
            src/eclipse-cyclonedds/cyclonedds:
              type: git
              url: https://github.com/eclipse-cyclonedds/cyclonedds.git
              version: releases/0.10.x
            src/eclipse-iceoryx/iceoryx:
              type: git
              url: https://github.com/eclipse-iceoryx/iceoryx.git
              version: release_2.0
            src/osrf/osrf_pycommon:
              type: git
              url: https://github.com/osrf/osrf_pycommon.git
              version: master
            src/osrf/osrf_testing_tools_cpp:
              type: git
              url: https://github.com/osrf/osrf_testing_tools_cpp.git
              version: humble
            src/ros-perception/image_common:
              type: git
              url: https://github.com/ros-perception/image_common.git
              version: humble
            src/ros/class_loader:
              type: git
              url: https://github.com/ros/class_loader.git
              version: humble
            src/ros/kdl_parser:
              type: git
              url: https://github.com/ros/kdl_parser.git
              version: humble
            src/ros/pluginlib:
              type: git
              url: https://github.com/ros/pluginlib.git
              version: humble
            src/ros/resource_retriever:
              type: git
              url: https://github.com/ros/resource_retriever.git
              version: humble
            src/ros/robot_state_publisher:
              type: git
              url: https://github.com/ros/robot_state_publisher.git
              version: humble
            src/ros/ros_environment:
              type: git
              url: https://github.com/ros/ros_environment.git
              version: humble
            src/ros/ros_tutorials:
              type: git
              url: https://github.com/ros/ros_tutorials.git
              version: humble
            src/ros/urdfdom:
              type: git
              url: https://github.com/ros/urdfdom.git
              version: humble
            src/ros/urdfdom_headers:
              type: git
              url: https://github.com/ros/urdfdom_headers.git
              version: humble
            src/ros2/ament_cmake_ros:
              type: git
              url: https://github.com/ros2/ament_cmake_ros.git
              version: humble
            src/ros2/common_interfaces:
              type: git
              url: https://github.com/ros2/common_interfaces.git
              version: humble
            src/ros2/console_bridge_vendor:
              type: git
              url: https://github.com/ros2/console_bridge_vendor.git
              version: humble
            src/ros2/demos:
              type: git
              url: https://github.com/ros2/demos.git
              version: humble
            src/ros2/eigen3_cmake_module:
              type: git
              url: https://github.com/ros2/eigen3_cmake_module.git
              version: humble
            src/ros2/example_interfaces:
              type: git
              url: https://github.com/ros2/example_interfaces.git
              version: humble
            src/ros2/examples:
              type: git
              url: https://github.com/ros2/examples.git
              version: humble
            src/ros2/geometry2:
              type: git
              url: https://github.com/ros2/geometry2.git
              version: humble
            src/ros2/launch:
              type: git
              url: https://github.com/ros2/launch.git
              version: humble
            src/ros2/launch_ros:
              type: git
              url: https://github.com/ros2/launch_ros.git
              version: humble
            src/ros2/libyaml_vendor:
              type: git
              url: https://github.com/ros2/libyaml_vendor.git
              version: humble
            src/ros2/message_filters:
              type: git
              url: https://github.com/ros2/message_filters.git
              version: humble
            src/ros2/mimick_vendor:
              type: git
              url: https://github.com/ros2/mimick_vendor.git
              version: humble
            src/ros2/orocos_kdl_vendor:
              type: git
              url: https://github.com/ros2/orocos_kdl_vendor.git
              version: humble
            src/ros2/performance_test_fixture:
              type: git
              url: https://github.com/ros2/performance_test_fixture.git
              version: humble
            src/ros2/python_cmake_module:
              type: git
              url: https://github.com/ros2/python_cmake_module.git
              version: humble
            src/ros2/rcl:
              type: git
              url: https://github.com/ros2/rcl.git
              version: humble
            src/ros2/rcl_interfaces:
              type: git
              url: https://github.com/ros2/rcl_interfaces.git
              version: humble
            src/ros2/rcl_logging:
              type: git
              url: https://github.com/ros2/rcl_logging.git
              version: humble
            src/ros2/rclcpp:
              type: git
              url: https://github.com/ros2/rclcpp.git
              version: humble
            src/ros2/rclpy:
              type: git
              url: https://github.com/ros2/rclpy.git
              version: humble
            src/ros2/rcpputils:
              type: git
              url: https://github.com/ros2/rcpputils.git
              version: humble
            src/ros2/rcutils:
              type: git
              url: https://github.com/ros2/rcutils.git
              version: humble
            src/ros2/realtime_support:
              type: git
              url: https://github.com/ros2/realtime_support.git
              version: humble
            src/ros2/rmw:
              type: git
              url: https://github.com/ros2/rmw.git
              version: humble
            src/ros2/rmw_connextdds:
              type: git
              url: https://github.com/ros2/rmw_connextdds.git
              version: humble
            src/ros2/rmw_cyclonedds:
              type: git
              url: https://github.com/ros2/rmw_cyclonedds.git
              version: humble
            src/ros2/rmw_dds_common:
              type: git
              url: https://github.com/ros2/rmw_dds_common.git
              version: humble
            src/ros2/rmw_fastrtps:
              type: git
              url: https://github.com/ros2/rmw_fastrtps.git
              version: humble
            src/ros2/rmw_implementation:
              type: git
              url: https://github.com/ros2/rmw_implementation.git
              version: humble
            src/ros2/ros2_tracing:
              type: git
              url: https://github.com/ros2/ros2_tracing.git
              version: humble
            src/ros2/ros2cli:
              type: git
              url: https://github.com/ros2/ros2cli.git
              version: humble
            src/ros2/ros2cli_common_extensions:
              type: git
              url: https://github.com/ros2/ros2cli_common_extensions.git
              version: humble
            src/ros2/ros_testing:
              type: git
              url: https://github.com/ros2/ros_testing.git
              version: humble
            src/ros2/rosbag2:
              type: git
              url: https://github.com/ros2/rosbag2.git
              version: humble
            src/ros2/rosidl:
              type: git
              url: https://github.com/ros2/rosidl.git
              version: humble
            src/ros2/rosidl_dds:
              type: git
              url: https://github.com/ros2/rosidl_dds.git
              version: humble
            src/ros2/rosidl_defaults:
              type: git
              url: https://github.com/ros2/rosidl_defaults.git
              version: humble
            src/ros2/rosidl_python:
              type: git
              url: https://github.com/ros2/rosidl_python.git
              version: humble
            src/ros2/rosidl_runtime_py:
              type: git
              url: https://github.com/ros2/rosidl_runtime_py.git
              version: humble
            src/ros2/rosidl_typesupport:
              type: git
              url: https://github.com/ros2/rosidl_typesupport.git
              version: humble
            src/ros2/rosidl_typesupport_fastrtps:
              type: git
              url: https://github.com/ros2/rosidl_typesupport_fastrtps.git
              version: humble
            src/ros2/rpyutils:
              type: git
              url: https://github.com/ros2/rpyutils.git
              version: humble
            src/ros2/spdlog_vendor:
              type: git
              url: https://github.com/ros2/spdlog_vendor.git
              version: humble
            src/ros2/sros2:
              type: git
              url: https://github.com/ros2/sros2.git
              version: humble
            src/ros2/system_tests:
              type: git
              url: https://github.com/ros2/system_tests.git
              version: humble
            src/ros2/test_interface_files:
              type: git
              url: https://github.com/ros2/test_interface_files.git
              version: humble
            src/ros2/tinyxml2_vendor:
              type: git
              url: https://github.com/ros2/tinyxml2_vendor.git
              version: humble
            src/ros2/tinyxml_vendor:
              type: git
              url: https://github.com/ros2/tinyxml_vendor.git
              version: humble
            src/ros2/tlsf:
              type: git
              url: https://github.com/ros2/tlsf.git
              version: humble
            src/ros2/unique_identifier_msgs:
              type: git
              url: https://github.com/ros2/unique_identifier_msgs.git
              version: humble
            src/ros2/urdf:
              type: git
              url: https://github.com/ros2/urdf.git
              version: humble
            src/ros2/yaml_cpp_vendor:
              type: git
              url: https://github.com/ros2/yaml_cpp_vendor.git
              version: humble
            src/apriltag_ros:
              type: git
              url: https://github.com/christianrauch/apriltag_ros.git
          EOF

      - name: build (action)
        uses: ros-tooling/action-ros-ci@v0.3
        if: ${{ matrix.steps == 'action' }}
        with:
          target-ros2-distro: ${{ matrix.distribution.ros }}
          no-symlink-install: true
          vcs-repo-file-url: sources.repos
          skip-tests: true
          rosdep-skip-keys: "asio cyclonedds fastcdr fastrtps python3-babeltrace"
          extra-cmake-args: "-D THIRDPARTY_Asio=ON"

      - name: build (manual)
        if: ${{ matrix.steps == 'manual' }}
        run: |
          rosdep update
          vcs import --input sources.repos
          rosdep install --from-paths src --ignore-src -y --rosdistro ${{ matrix.distribution.ros }} --skip-keys "asio cyclonedds fastcdr fastrtps python3-babeltrace rti-connext-dds-6.0.1"
          . /opt/ros/${{ matrix.distribution.ros }}/setup.sh
          colcon build --event-handlers=console_cohesion+ --cmake-args "-D THIRDPARTY_Asio=ON"

@christianrauch
Copy link
Contributor Author

I gave up on this and reported it to the rosidl_typesupport repo: ros2/rosidl_typesupport#162

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants