summaryrefslogtreecommitdiff
path: root/mrpt-libapps.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-09-22 05:39:10 +0000
committerCoprDistGit <infra@openeuler.org>2026-09-22 05:39:10 +0000
commit84a125736ea35c8739fe0d73c10451d62e193dda (patch)
tree2f4e08e4e52117417053e0f24d3e282979044c46 /mrpt-libapps.spec
parent8902b09bbd034371ff3475b6a387cb3ac365e6cc (diff)
automatic import of ros-humble-mrpt-libapps
Diffstat (limited to 'mrpt-libapps.spec')
-rw-r--r--mrpt-libapps.spec38
1 files changed, 34 insertions, 4 deletions
diff --git a/mrpt-libapps.spec b/mrpt-libapps.spec
index 159c970..f7ef86f 100644
--- a/mrpt-libapps.spec
+++ b/mrpt-libapps.spec
@@ -8,7 +8,7 @@
Name: ros-%{ros_distro}-%{RosPkgName}
Version: 2.15.20
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Mobile Robot Programming Toolkit (MRPT) libraries (apps C++ libraries)
License: BSD
URL: https://github.com/MRPT/mrpt_ros.git
@@ -248,9 +248,18 @@ export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packa
export PKG_CONFIG_PATH=/opt/ros/%{ros_distro}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
# 闸门:兄弟库的 cmake config 必须可见。内层对 BUILD_mrpt-*=OFF 的库走
# find_package(mrpt-XXX),找不到只会 Warning + 静默禁用(产出空包);这里把
-# 最常见的"漏列 BuildRequires"提前变成可归因失败。topography 由 libobs 包提供、
-# tclap 由 libtclap 包提供,都是本包内层直接 find_package 的模块。
-for _m in base math poses opengl obs topography maps gui slam hwdrivers tclap; do
+# 最常见的"漏列 BuildRequires"提前变成可归因失败。
+# ★ 这里的名字必须是**上游 mrpt 库名**,不是 ROS 包装包名:
+# ros-humble-mrpt-libbase 装出的是 mrpt-core/-config/-io/-system/-rtti/... ——
+# 上游没有 "mrpt-base" 这个库(MRPT 1.x 才叫 base)。build 112607 就是踩在这:
+# `ls .../cmake/mrpt-base/mrpt-base-config.cmake` 对已装好的 libbase 恒为假,
+# 64 秒即在闸门误报"lib* 未装进 buildroot"(实测 rpm -qpl
+# ros-humble-mrpt-libbase-2.15.20-3.aarch64.rpm 只有 mrpt-core 等十个 config)。
+# 同理 mrpt-topography 由 libobs 包提供、mrpt-tclap 由 libtclap 包提供、
+# mrpt-hwdrivers/-comms 由 libhwdrivers、mrpt-slam/-vision 由 libslam、
+# mrpt-maps/-graphs 由 libmaps、mrpt-opengl/-img 由 libopengl、
+# mrpt-poses/-tfest/-bayes 由 libposes —— 包名与库名不同名是常态。
+for _m in core math poses opengl obs topography maps gui slam hwdrivers tclap; do
if ! ls /opt/ros/%{ros_distro}/lib64/cmake/mrpt-$_m/mrpt-$_m-config.cmake \
/opt/ros/%{ros_distro}/lib/cmake/mrpt-$_m/mrpt-$_m-config.cmake >/dev/null 2>&1; then
echo "ERROR: 未找到 mrpt-$_m 的 cmake config —— 对应 ros-%{ros_distro}-mrpt-lib* 未装进 buildroot" >&2
@@ -363,3 +372,24 @@ make install DESTDIR=%{buildroot}
EP_octomap / 产物三类闸门,避免 chroot 内走外部网络或静默产出空包。
* 不再预取 rplidar_sdk(包装工程已 -DMRPT_WITH_ROBEPEAK_LIDAR=OFF
-DMRPT_BUILD_rplidar_sdk=OFF,本包内层不建该静态库)。
+
+* Tue Sep 22 2026 ai-importer <ai-importer@openeuler.org> - 2.15.20-3
+- %build 兄弟库 cmake config 闸门误报修复(触发面 build_failed,build 112607
+ 在 %build 第 1 条闸门即失败:`ls .../cmake/mrpt-base/mrpt-base-config.cmake`
+ 找不到,报 "ERROR: 未找到 mrpt-base 的 cmake config"):
+ * 根因是本闸门自己写错了名字 —— 循环里的标识符必须是**上游 mrpt 库名**而非
+ ROS 包装包名:ros-humble-mrpt-libbase 装出的是 mrpt-core / -config / -io /
+ -system / -rtti / -serialization / -containers / -expr / -random /
+ -typemeta 这十个 config,**上游没有 mrpt-base 这个库**(MRPT 1.x 时代才叫
+ base)。故对已正确装进 buildroot 的 libbase,该判据恒为假,构建在 54 秒时
+ 被自己的闸门打死,根本没走到 cmake。
+ * 实证:`rpm -qpl ros-humble-mrpt-libbase-2.15.20-3.aarch64.rpm | grep cmake`
+ 只有 lib64/cmake/mrpt-core/... 等,无 mrpt-base;同理逐包核对过
+ libobs→mrpt-obs/mrpt-topography、libtclap→mrpt-tclap、
+ libhwdrivers→mrpt-hwdrivers/mrpt-comms、libslam→mrpt-slam/mrpt-vision、
+ libmaps→mrpt-maps/mrpt-graphs,其余标识符(math/poses/opengl/gui/slam/
+ maps/obs/topography/tclap/hwdrivers)均正确。
+ * 改动:闸门列表 base → core,并在注释里写明"包名 ≠ 库名"这条判据,避免
+ 后续再按 ROS 包名写库名。
+ * BuildRequires/Requires 本身无缺,未做增删;verify_spec_requires.py
+ 仍报 "OK: 36 个依赖…全部有 provider"。