summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-09-22 06:25:43 +0000
committerCoprDistGit <infra@openeuler.org>2026-09-22 06:25:43 +0000
commit0131acf7bd1d49be8e9df3d998c2f52160ca0bee (patch)
treea1946e99fe7bd94ac9d80c57b4cd6d66a48a3a0c
parentb3e9312d47f904008f8060b3dc3bfac6eb954bff (diff)
automatic import of ros-humble-mrpt-appsopeneuler24.03_LTS_SP3
-rw-r--r--mrpt-apps.spec52
1 files changed, 44 insertions, 8 deletions
diff --git a/mrpt-apps.spec b/mrpt-apps.spec
index 13e9596..a4d1ba9 100644
--- a/mrpt-apps.spec
+++ b/mrpt-apps.spec
@@ -8,7 +8,7 @@
Name: ros-%{ros_distro}-%{RosPkgName}
Version: 2.15.20
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Mobile Robot Programming Toolkit (MRPT) applications
License: BSD
URL: https://github.com/MRPT/mrpt_ros.git
@@ -367,13 +367,35 @@ fi
# 硬失败。阈值取 5:apps/ 下 40 余个目标里,被 wx/nanogui/openni2/Qt 守护正常
# 跳过的约十余个,健康的构建远高于该阈值(已按上游 apps/*/CMakeLists.txt 的
# 守护条件逐目录统计:无守护 + 依赖已就位的目标 20 个以上)。
-_apps_bin=$(find mrpt-build/src/mrpt-build/apps -type f -perm -u+x 2>/dev/null \
- | grep -v -E '\.(sh|cmake|txt|in|py)$' | wc -l | tr -d '[:space:]')
-echo "apps 目录产出的可执行文件数: ${_apps_bin}"
-if [ "${_apps_bin:-0}" -lt 5 ]; then
- echo "ERROR: apps 目录产出可执行文件仅 ${_apps_bin} 个(阈值 5)—— 内层很可能因 find_package(mrpt-XXX) 未命中而把大量 app 静默置 OFF(残缺包)" >&2
- echo "---- apps 目录实际内容(顶层)----" >&2
- ls mrpt-build/src/mrpt-build/apps 2>/dev/null | head -50 >&2
+# ★ 判据路径必须取"产物落点",不能取源码/构建子目录:apps/ 下每个条目只是一
+# 个 app 的构建目录(apps/yaml2ini/...,里面只有 CMakeFiles 与 Makefile),
+# 可执行文件的落点是内层构建树顶层的 bin/ —— 内层每个 app 的链接命令都是
+# "Linking CXX executable ../../bin/<name>",相对 apps/<name>/ 展开即
+# <内层构建树>/bin/<name>。build 112612 实测内层构建全绿(各 app 逐条链接
+# 成功、"Built target apps_all"、"Completed 'mrpt'"),而上一版闸门写死
+# find apps/ 于是数出 0 个,纯属闸门自伤(同链 mrpt-libapps 的 build
+# 112607/112609 也是闸门判据写错导致的自伤,与包内容无关)。
+# ★ 为免再因路径假设写死而误报,下面改为对候选目录逐个 test -d 后取最大值;
+# 候选目录全都不存在时只告警不失败 —— 判据无法证真时不误报。
+_apps_bin=0
+_probe=""
+for _d in mrpt-build/src/mrpt-build/bin mrpt-build/src/mrpt-build/apps; do
+ [ -d "$_d" ] || continue
+ _n=$(find "$_d" -type f -perm -u+x 2>/dev/null \
+ | grep -v -E '\.(sh|cmake|txt|in|py)$' | wc -l | tr -d '[:space:]')
+ _probe="${_probe}${_d}=${_n:-0} "
+ if [ "${_n:-0}" -gt "$_apps_bin" ]; then _apps_bin="$_n"; fi
+done
+echo "内层产出的可执行文件数(候选目录逐个统计): ${_probe}"
+if [ -z "$_probe" ]; then
+ echo "WARNING: 产物候选目录均不存在,无法判定 app 产出,跳过本闸门" >&2
+elif [ "$_apps_bin" -lt 5 ]; then
+ echo "ERROR: 内层产出的可执行文件仅 ${_apps_bin} 个(阈值 5)—— 内层很可能因 find_package(mrpt-XXX) 未命中而把大量 app 静默置 OFF(残缺包)" >&2
+ echo "---- 候选目录实际内容(顶层)----" >&2
+ for _d in mrpt-build/src/mrpt-build/bin mrpt-build/src/mrpt-build/apps; do
+ echo " [$_d]" >&2
+ ls "$_d" 2>/dev/null | head -50 >&2
+ done
exit 1
fi
@@ -389,6 +411,20 @@ make install DESTDIR=%{buildroot}
/opt/ros/%{ros_distro}
%changelog
+* Tue Sep 22 2026 ai-importer <ai-importer@openeuler.org> - 2.15.20-4
+- 修复 build 112612 的 %build 段"闸门自伤"(aarch64,构建内容本身无误):
+ * 症状:内层 mrpt 构建全绿(apps 逐个链接成功、"Built target apps_all"、
+ "Completed 'mrpt'"),却在紧随其后的"产出可执行程序"闸门处 exit 1,
+ 报文为 "apps 目录产出可执行文件仅 0 个(阈值 5)"。
+ * 根因:闸门判据路径写错。apps/ 下每个条目只是一个 app 的构建目录
+ (apps/yaml2ini/...,内部只有 CMakeFiles 与 Makefile),可执行文件的落点
+ 是内层构建树顶层的 bin/ —— 内层链接命令均为
+ "Linking CXX executable ../../bin/<name>",相对 apps/<name>/ 展开即
+ <内层构建树>/bin/<name>。写死 find apps/ 在健康构建上必然数出 0 个,
+ 属闸门自伤(同链 mrpt-libapps 的 build 112607/112609 同类)。
+ * 修法:闸门改为对候选目录(bin 与 apps)逐个 test -d 后取可执行文件数
+ 的最大值;候选目录全不存在时只告警不硬失败(判据无法证真时不误报)。
+ 阈值 5 保留,失败诊断输出扩充为同时打印两个候选目录的内容。
* Tue Sep 22 2026 ai-importer <ai-importer@openeuler.org> - 2.15.20-3
- 修复 build 112611 的构建阶段(build 段)链接失败(aarch64):
* 症状:apps 下全部可执行程序在链接期倒下,