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 diff --git a/patch/dependencies.yaml b/patch/dependencies.yaml index d712cde..f88cbfc 100644 --- a/patch/dependencies.yaml +++ b/patch/dependencies.yaml @@ -81,6 +81,42 @@ 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"] +# 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 }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libhwdrivers: + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libgui: + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libmaps: + 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 }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libobs: + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libopengl: + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libposes: + add_host: ["${{ 'libsystemd0 <258' if linux }}", "${{ 'libudev1 <258' if linux }}"] + remove_host: ["libudev"] +mrpt_libslam: + 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"] add_run: ["ros-noetic-roscpp", "ros-noetic-roslz4"] 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/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 diff --git a/pkg_additional_info.yaml b/pkg_additional_info.yaml index 3c110ba..853ede7 100644 --- a/pkg_additional_info.yaml +++ b/pkg_additional_info.yaml @@ -100,6 +100,10 @@ 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: generate_dummy_package_with_run_deps: dep_name: octomap diff --git a/vinca.yaml b/vinca.yaml index 8bbced8..78cfe05 100644 --- a/vinca.yaml +++ b/vinca.yaml @@ -196,6 +196,8 @@ packages_select_by_deps: - camera_ros # Depends on libcamera that is only available on linux - 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