From 40a64997d58c59b1ce6adc3eee9decd1fa7ed3b4 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 18:21:39 +0200 Subject: [PATCH 01/11] Add MOLA and MRPT packages --- vinca.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/vinca.yaml b/vinca.yaml index 8bbced8..ab39b4a 100644 --- a/vinca.yaml +++ b/vinca.yaml @@ -196,6 +196,7 @@ packages_select_by_deps: - camera_ros # Depends on libcamera that is only available on linux - livox_ros_driver2 - mavros + - mola - py_binding_tools - swri_serial_util # Serial communication only implemented for linux - v4l2_camera # Depends on v4l that is only available on linux From 882919a6cf676ddcad1483e6c6097ad626b828aa Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 18:32:44 +0200 Subject: [PATCH 02/11] Add missing MP2P ICP dependencies --- patch/dependencies.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index d712cde..48ec0b5 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -81,6 +81,9 @@ mrpt2: add_host: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-lyrical-octomap"] add_run: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-lyrical-octomap"] add_build: ["${{ cdt('libxcomposite-devel') if linux }}"] +mp2p_icp: + add_host: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] + add_run: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] ros1_rosbag_storage_vendor: add_host: ["ros-noetic-roscpp", "ros-noetic-roslz4", "ros-noetic-rostest"] add_run: ["ros-noetic-roscpp", "ros-noetic-roslz4"] From 7be66ff36d9d4c855cea969ed6b374206c68763a Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 18:45:52 +0200 Subject: [PATCH 03/11] Find modern SuiteSparse headers in MRPT math --- pkg_additional_info.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg_additional_info.yaml b/pkg_additional_info.yaml index 3c110ba..360109a 100644 --- a/pkg_additional_info.yaml +++ b/pkg_additional_info.yaml @@ -100,6 +100,8 @@ magic_enum: max_pin: 'x.x' moveit_ros_visualization: additional_cmake_args: "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON" +mrpt_libmath: + additional_cmake_args: "-DCMAKE_CXX_FLAGS=-I$PREFIX/include/suitesparse" octomap: generate_dummy_package_with_run_deps: dep_name: octomap From 9bf4b734315a0ce5cf28e69062eedbcbba34c8c5 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 18:53:00 +0200 Subject: [PATCH 04/11] Forward compiler flags to nested MRPT build --- patch/ros-lyrical-mrpt-libmath.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 patch/ros-lyrical-mrpt-libmath.patch diff --git a/patch/ros-lyrical-mrpt-libmath.patch b/patch/ros-lyrical-mrpt-libmath.patch new file mode 100644 index 0000000..7dbe79e --- /dev/null +++ b/patch/ros-lyrical-mrpt-libmath.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 40a5930..61a0f4d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -50,6 +50,7 @@ ExternalProject_Add( + # Main settings: + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++ "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}" + # Disabled stuff: + -DDISABLE_JSONCPP=ON + -DMRPT_INSTALL_EXAMPLES=OFF From 8dceb56e4bd1c6e43ac9e476ceaf94b4dc6a76d4 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 19:03:36 +0200 Subject: [PATCH 05/11] Fix bundled nanogui assert declarations --- patch/ros-lyrical-mrpt-libgui.patch | 12 ++++++++++++ pkg_additional_info.yaml | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 patch/ros-lyrical-mrpt-libgui.patch diff --git a/patch/ros-lyrical-mrpt-libgui.patch b/patch/ros-lyrical-mrpt-libgui.patch new file mode 100644 index 0000000..9e37142 --- /dev/null +++ b/patch/ros-lyrical-mrpt-libgui.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1249e6e..1154834 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -50,6 +50,7 @@ ExternalProject_Add( + # Main settings: + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++ "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}" + # Disabled stuff: + -DDISABLE_JSONCPP=ON + -DMRPT_INSTALL_EXAMPLES=OFF diff --git a/pkg_additional_info.yaml b/pkg_additional_info.yaml index 360109a..853ede7 100644 --- a/pkg_additional_info.yaml +++ b/pkg_additional_info.yaml @@ -100,6 +100,8 @@ magic_enum: max_pin: 'x.x' moveit_ros_visualization: additional_cmake_args: "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON" +mrpt_libgui: + additional_cmake_args: "-DCMAKE_CXX_FLAGS=-includecassert" mrpt_libmath: additional_cmake_args: "-DCMAKE_CXX_FLAGS=-I$PREFIX/include/suitesparse" octomap: From eda7776d768d902740d05da02bb9ee3ba6c5b682 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 19:12:40 +0200 Subject: [PATCH 06/11] Use packaged OctoMap for MRPT maps --- patch/dependencies.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index 48ec0b5..81323cb 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -84,6 +84,9 @@ mrpt2: mp2p_icp: add_host: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] add_run: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] +mrpt_libmaps: + add_host: ["octomap"] + add_run: ["octomap"] ros1_rosbag_storage_vendor: add_host: ["ros-noetic-roscpp", "ros-noetic-roslz4", "ros-noetic-rostest"] add_run: ["ros-noetic-roscpp", "ros-noetic-roslz4"] From 89104c46766a9b5990d684cd305eb893c00d9cd5 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 19:18:42 +0200 Subject: [PATCH 07/11] Add missing MOLA launcher tclap dependency --- patch/dependencies.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index 81323cb..33c1cad 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -81,6 +81,9 @@ mrpt2: add_host: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-lyrical-octomap"] add_run: ["assimp", "octomap", "tinyxml2", "libboost-devel", "jsoncpp", "gtest", "libboost-python-devel", "libdc1394", "xorg-libxcomposite", "libftdi", "ros-lyrical-octomap"] add_build: ["${{ cdt('libxcomposite-devel') if linux }}"] +mola_launcher: + add_host: ["ros-lyrical-mrpt-libtclap"] + add_run: ["ros-lyrical-mrpt-libtclap"] mp2p_icp: add_host: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] add_run: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] From 8612bb74068b0cedb14b2dc5af991b47a5e8bf84 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sat, 1 Aug 2026 19:53:58 +0200 Subject: [PATCH 08/11] Build MRPT tclap for MOLA launcher --- vinca.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/vinca.yaml b/vinca.yaml index ab39b4a..78cfe05 100644 --- a/vinca.yaml +++ b/vinca.yaml @@ -197,6 +197,7 @@ packages_select_by_deps: - livox_ros_driver2 - mavros - mola + - mrpt_libtclap - py_binding_tools - swri_serial_util # Serial communication only implemented for linux - v4l2_camera # Depends on v4l that is only available on linux From c0479015dfc041b6f7d9aab22c0a1027b50d4722 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sun, 2 Aug 2026 21:38:50 +0200 Subject: [PATCH 09/11] Keep MRPT Linux builds compatible with the ROS sysroot --- patch/dependencies.yaml | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index 33c1cad..987373a 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -87,9 +87,36 @@ mola_launcher: mp2p_icp: add_host: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] add_run: ["ros-lyrical-mola-common", "ros-lyrical-mola-imu-preintegration", "ros-lyrical-mrpt-libbase", "ros-lyrical-mrpt-libgui", "ros-lyrical-mrpt-libtclap", "ros-lyrical-mrpt-libmaps", "ros-lyrical-mrpt-libobs", "ros-lyrical-mrpt-libposes", "tbb"] +# XSens support is disabled in these split MRPT builds. Avoid pulling libudev +# (and a systemd build requiring a newer glibc than the ROS sysroot) into them. +mrpt_libbase: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libhwdrivers: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libgui: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] mrpt_libmaps: - add_host: ["octomap"] + add_host: ["octomap", "${{ 'libsystemd0 <258' if linux }}"] add_run: ["octomap"] + remove_host: ["libudev"] +mrpt_libmath: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libobs: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libopengl: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libposes: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libslam: + add_host: ["${{ 'libsystemd0 <258' if linux }}"] + remove_host: ["libudev"] ros1_rosbag_storage_vendor: add_host: ["ros-noetic-roscpp", "ros-noetic-roslz4", "ros-noetic-rostest"] add_run: ["ros-noetic-roscpp", "ros-noetic-roslz4"] From 3a22fdc68f081d991821842ed44dc7ea8f040362 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sun, 2 Aug 2026 22:04:50 +0200 Subject: [PATCH 10/11] Pin glibc-compatible libudev for MRPT --- patch/dependencies.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index 987373a..f88cbfc 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -90,32 +90,32 @@ mp2p_icp: # XSens support is disabled in these split MRPT builds. Avoid pulling libudev # (and a systemd build requiring a newer glibc than the ROS sysroot) into them. mrpt_libbase: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libhwdrivers: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libgui: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libmaps: - add_host: ["octomap", "${{ 'libsystemd0 <258' if linux }}"] + add_host: ["octomap", "${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] add_run: ["octomap"] remove_host: ["libudev"] mrpt_libmath: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libobs: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libopengl: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libposes: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] mrpt_libslam: - add_host: ["${{ 'libsystemd0 <258' if linux }}"] + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] remove_host: ["libudev"] ros1_rosbag_storage_vendor: add_host: ["ros-noetic-roscpp", "ros-noetic-roslz4", "ros-noetic-rostest"] From a550311fc97fefea9184310f1c6c6116bbba3a53 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sun, 2 Aug 2026 22:20:02 +0200 Subject: [PATCH 11/11] Rebuild MRPT packages with compatible libudev --- .github/workflows/testpr.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/testpr.yml b/.github/workflows/testpr.yml index 9be3126..dbda0eb 100644 --- a/.github/workflows/testpr.yml +++ b/.github/workflows/testpr.yml @@ -103,7 +103,11 @@ jobs: - name: Delete specific outdated cache entries shell: bash -l {0} run: | - # rm -rf ${{ matrix.folder_cache }}/ros-lyrical-pcl-conversions* 2>/dev/null || true + # Rebuild the split MRPT libraries on Linux so their run exports use + # the glibc-2.28-compatible libudev pin. + if [[ "${{ matrix.platform }}" == linux-* ]]; then + rm -rf ${{ matrix.folder_cache }}/ros-lyrical-mrpt-* 2>/dev/null || true + fi mkdir -p ${{ matrix.folder_cache }} pixi run rattler-index fs ${{ matrix.folder_cache }}/.. --force