diff options
| author | CoprDistGit <infra@openeuler.org> | 2026-09-21 08:07:31 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2026-09-21 08:07:31 +0000 |
| commit | b7c16b8aef2e74ef582a3687c1a5a1bc7f0ce723 (patch) | |
| tree | b8247db36dbc0269ecfbe181ec2d496a155b1a61 | |
| parent | 29081660b747e292d3ad6e2eb2a8a00d7ec7540e (diff) | |
automatic import of ros-humble-mrpt-libbaseopeneuler24.03_LTS_SP3
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | mrpt-libbase.spec | 50 | ||||
| -rw-r--r-- | sources | 2 |
3 files changed, 52 insertions, 2 deletions
@@ -1,2 +1,4 @@ /mrpt-libbase-2.15.20.tar.gz /mrpt-2.15.21.tar.gz +/nanoflann-1.5.5.tar.gz +/simpleini-4.22.tar.gz diff --git a/mrpt-libbase.spec b/mrpt-libbase.spec index b5d8c86..e3bf581 100644 --- a/mrpt-libbase.spec +++ b/mrpt-libbase.spec @@ -2,16 +2,26 @@ %define RosPkgName mrpt-libbase %define src_version 2.15.20 %define mrpt_version 2.15.21 +# mrpt 的 git submodule 内容(GitHub archive tarball 不含),按需手工补: +%define nanoflann_version 1.5.5 +%define simpleini_version 4.22 Name: ros-%{ros_distro}-%{RosPkgName} Version: 2.15.20 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Mobile Robot Programming Toolkit (MRPT) libraries (core C++ libraries) License: BSD URL: https://github.com/MRPT/mrpt_ros.git Source0: %{RosPkgName}-%{src_version}.tar.gz # mrpt upstream source, pre-fetched to avoid ExternalProject git clone at build time Source1: https://github.com/MRPT/mrpt/archive/refs/tags/%{mrpt_version}.tar.gz#/mrpt-%{mrpt_version}.tar.gz +# mrpt 的两个 submodule(COPR chroot 无外网,构建期无法下载/克隆,须随 SRPM 携带): +# nanoflann —— mrpt 强制依赖(script_nanoflann.cmake: FATAL_ERROR if not found), +# openEuler 无系统包,只能喂 3rdparty/nanoflann 让内层自建(头文件库) +# simpleini —— mrpt-config 编译 CConfigFile.cpp 需要 SimpleIni.h(script_simpleini.cmake +# 回退到 3rdparty/simpleini 作为 include 目录) +Source2: https://github.com/jlblancoc/nanoflann/archive/refs/tags/v%{nanoflann_version}.tar.gz#/nanoflann-%{nanoflann_version}.tar.gz +Source3: https://github.com/brofield/simpleini/archive/refs/tags/v%{simpleini_version}.tar.gz#/simpleini-%{simpleini_version}.tar.gz %global debug_package %{nil} %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') @@ -21,8 +31,9 @@ Source1: https://github.com/MRPT/mrpt/archive/refs/tags/%{mrpt_version}.t BuildRequires: assimp-devel BuildRequires: eigen3-devel BuildRequires: ffmpeg-devel -BuildRequires: freeglut +BuildRequires: freeglut-devel BuildRequires: git +BuildRequires: gtest-devel BuildRequires: libXrandr-devel BuildRequires: libXxf86vm-devel BuildRequires: libpcap-devel @@ -71,6 +82,21 @@ sed -i 's|\${CMAKE_BINARY_DIR}/\.\./mrpt_libbase/mrpt-build|${CMAKE_CURRENT_LIST # HOME 非 /home/buildfarm,去掉后复用分支在任何构建环境都成立。 sed -i 's/AND (NOT "\$ENV{HOME}" STREQUAL "\/home\/buildfarm")//' \ mrpt_libbase/CMakeLists.txt +# 给内层 mrpt 追加开关(外层 cmake 命令行传的 MRPT_WITH_xxx 落在 ROS 包装工程上, +# 而包装工程只把它们原样忽略——真正生效的是写死在 ExternalProject_Add 的 +# CMAKE_ARGS,必须在此注入): +# MRPT_HAS_LIBFYAML=OFF openEuler 无 libfyaml,内置分支要 3rdparty/libfyaml +# (submodule 空目录)且会 file(READ .tarball-version) 报错; +# 该特性只影响 mrpt::containers::yaml,关掉即可(ROS 包 +# package.xml 里 libfyaml-dev 也被上游注释掉了) +# MRPT_WITH_KINECT=OFF libusb 存在时默认开启 Kinect,会去编译空的 +# 3rdparty/libfreenect(openEuler 无 libfreenect-devel) +# MRPT_HAS_OPENNI2=OFF 无 libopenni2 +# MRPT_BUILD_OCTOMAP=OFF 无系统 octomap 时 ExternalProject 会从 GitHub 下载 +# octomap(构建期无外网必失败);octomap 只被 maps/obs/ +# opengl 使用,本包(libbase 粒度)全部为 OFF +sed -i 's|^\(\s*-DDISABLE_JSONCPP=ON\)$|\1\n -DMRPT_HAS_LIBFYAML=OFF\n -DMRPT_WITH_KINECT=OFF\n -DMRPT_HAS_OPENNI2=OFF\n -DMRPT_BUILD_OCTOMAP=OFF|' \ + mrpt_libbase/CMakeLists.txt # 预置 ExternalProject 的 SOURCE_DIR:<top>/mrpt-build/src/mrpt mkdir -p mrpt-build/src tar -xzf %{SOURCE1} -C mrpt-build/src @@ -85,6 +111,12 @@ echo -n "%{mrpt_version}" > mrpt-build/MRPT_VERSION_TO_DOWNLOAD.txt # -DMRPT_BUILD_rplidar_sdk=OFF 关闭,不会被真正编译。 mkdir -p mrpt-build/src/mrpt/3rdparty/nanogui/include \ mrpt-build/src/mrpt/3rdparty/rplidar_sdk/sdk/src +# 填充 mrpt 的两个必需 submodule(见 Source2/Source3 说明):nanoflann 供内层 +# CMake 自建(头文件库),simpleini 仅作为 mrpt-config 的 include 目录。 +rm -rf mrpt-build/src/mrpt/3rdparty/nanoflann mrpt-build/src/mrpt/3rdparty/simpleini +mkdir -p mrpt-build/src/mrpt/3rdparty/nanoflann mrpt-build/src/mrpt/3rdparty/simpleini +tar -xzf %{SOURCE2} -C mrpt-build/src/mrpt/3rdparty/nanoflann --strip-components=1 +tar -xzf %{SOURCE3} -C mrpt-build/src/mrpt/3rdparty/simpleini --strip-components=1 # Override the version cmake reads from package.xml to match the pre-fetched source echo 'set(MRPT_VERSION_TO_DOWNLOAD "%{mrpt_version}")' > override_mrpt_version.cmake @@ -127,6 +159,20 @@ make install DESTDIR=%{buildroot} /opt/ros/%{ros_distro} %changelog +* Mon Sep 21 2026 ai-importer <ai-importer@openeuler.org> - 2.15.20-3 +- 内层 mrpt 配置期剩余的 "无 submodule" 阻断逐个消除: + * 注入 -DMRPT_HAS_LIBFYAML=OFF / -DMRPT_WITH_KINECT=OFF / -DMRPT_HAS_OPENNI2=OFF + / -DMRPT_BUILD_OCTOMAP=OFF(外层 cmake 传的 MRPT_WITH_* 是空转,必须写进 + 包装工程的 ExternalProject CMAKE_ARGS)。 + * 新增 Source2(nanoflann 1.5.5)、Source3(simpleini 4.22) 并在 %prep 填入 + 3rdparty/nanoflann、3rdparty/simpleini(mrpt 强制依赖 nanoflann;mrpt-config + 需要 SimpleIni.h)。 +- BuildRequires: freeglut → freeglut-devel(openEuler 的 freeglut 只有运行库, + 头文件/so 链接在 -devel;找不到系统 GLUT 时 mrpt 编内置 freeglut,会因 + -Werror=implicit-function-declaration 失败);新增 gtest-devel(避免编译内置 + googletest)。 +- 本地按同一组 CMAKE_ARGS 完整验证:内层 mrpt 配置 + mrpt-config/containers/core/ + io/random/rtti/serialization/system/expr/typemeta 全部编译通过。 * Mon Sep 21 2026 ai-importer <ai-importer@openeuler.org> - 2.15.20-2 - 修复 %build 期 ExternalProject 退回 git clone 导致构建失败(COPR 无外网): %prep 将 CMakeLists.txt 的本地复用路径 ${CMAKE_BINARY_DIR}/../mrpt_libbase/ @@ -1,2 +1,4 @@ 9f9a7c42d30f686dc66bc7df3c984d65 mrpt-2.15.21.tar.gz a281ecc4691e3992241aa296c1f93b94 mrpt-libbase-2.15.20.tar.gz +b7bc9c01f1408a3646a5b57feb1b7225 nanoflann-1.5.5.tar.gz +440bd308bbc5e1c39ab0ac3db14971f1 simpleini-4.22.tar.gz |
