Skip to content

Colcon build failed - rmw_test_fixture #188

@KristijanPruzinac

Description

@KristijanPruzinac

Issue template

  • Hardware description: esp32 dev
  • Installation type: platformIO CLI
  • Version or commit hash: kilted

Steps to reproduce the issue

Running library installation in terminal

$ pio lib install

platformio.ini

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
board_microros_transport = serial
lib_deps =
    https://github.com/micro-ROS/micro_ros_platformio

Expected behavior

Successful build

Actual behavior

Building micro-ROS for ESP32 fails because the build system tries to compile rmw_test_fixture which seemingly requires desktop ROS 2 dependencies not available in PlatformIO environment.

Build fails with rmw_test_fixture error:

Start of build:

Resolving esp32dev dependencies...
Already up-to-date.
Updating metadata for the vscode IDE...
UserSideException: Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.12.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b 
 - tool-esptoolpy @ 2.40900.250804 (4.9.0) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Installing importlib-resources with pip at PlatformIO environment

. . .

Configuring esp32dev with transport serial
Downloading micro-ROS dev dependencies
	 - Downloaded ament_cmake
	 - Downloaded ament_lint
	 - Downloaded ament_package
	 - Downloaded googletest
	 - Downloaded ament_cmake_ros
	 - Downloaded ament_index
Building micro-ROS dev dependencies
Build dev micro-ROS environment failed: 
 /home/kristijan/.platformio/penv/lib/python3.12/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require'
  warnings.warn(msg)
/home/kristijan/.platformio/penv/lib/python3.12/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.

Actual error:

!!
  self._finalize_license_expression()
---
--- stderr: rmw_test_fixture
CMake Error at CMakeLists.txt:6 (find_package):
  By not providing "Findrmw.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "rmw", but
  CMake did not find one.

  Could not find a package configuration file provided by "rmw" with any of
  the following names:

    rmwConfig.cmake
    rmw-config.cmake

  Add the installation prefix of "rmw" to CMAKE_PREFIX_PATH or set "rmw_DIR"
  to a directory containing one of the above files.  If "rmw" provides a
  separate development package or SDK, be sure it has been installed.


---
Failed   <<< rmw_test_fixture [0.17s, exited with code 1]

Full build log:
https://gist.github.com/KristijanPruzinac/232e40f7eb1288f643e02b3601738d73

Additional information

The issue only presented itself when i tried to enable multithreading by adding

board_microros_user_meta = microros_multithread.meta

to platformio.ini

and creating a microros_multithread.meta file at same directory level as ini file

{
    "names": {
        "microxrcedds_client": {
            "cmake-args": [
                "-DUCLIENT_PROFILE_MULTITHREAD=ON"
            ]
        }
    }
}

It seems the multithreading also enables some tests which mess up the colcon build. Since doing this the issue remained and I have not been able to build the library without the option. It was working before trying this. Im not sure if something is corrupted in some library cache or not. I tried full clean, deleting cache, manually removing .pio and .vscode directories, pio pkg uninstall, and full PlatformIO rm -rf and reinstall but the issue persists.

I have also tried disabling tests by doing

{
    "names": {
        "microxrcedds_client": {
            "cmake-args": [
                "-DUCLIENT_BUILD_TESTS=OFF",
                "-DUCLIENT_BUILD_EXAMPLES=OFF", 
                "-DUCLIENT_BUILD_CI_TESTS=OFF"
            ]
        },
        "rmw_microxrcedds": {
            "cmake-args": [
                "-DBUILD_TESTING=OFF",
                "-DRMW_UXRCE_BUILD_TESTS=OFF"
            ]
        },
        "rcl": {
            "cmake-args": [
                "-DBUILD_TESTING=OFF"
            ]
        },
        "rcutils": {
            "cmake-args": [
                "-DENABLE_TESTING=OFF"
            ]
        }
    }
}

but to no avail.
My original goal was to enable multithreading so i can use multiple concurrent nodes in my system.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions