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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions