summaryrefslogtreecommitdiff
path: root/cartographer-ros.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-09-20 03:02:21 +0000
committerCoprDistGit <infra@openeuler.org>2026-09-20 03:02:21 +0000
commita1cdfd4783a1d66e674567cb6f1275359ab0d47e (patch)
tree6ddc025ff7db3b5f8d869bc16c7608abf6a92877 /cartographer-ros.spec
parent9deb51153c26f47da56be03c40ef40b9b5ac4afb (diff)
automatic import of ros-humble-cartographer-ros
Diffstat (limited to 'cartographer-ros.spec')
-rw-r--r--cartographer-ros.spec11
1 files changed, 8 insertions, 3 deletions
diff --git a/cartographer-ros.spec b/cartographer-ros.spec
index 3dd8eed..6f48752 100644
--- a/cartographer-ros.spec
+++ b/cartographer-ros.spec
@@ -90,11 +90,17 @@ Cartographer is a system that provides real-time simultaneous localization
source /opt/ros/%{ros_distro}/setup.sh 2>/dev/null || true
export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages${PYTHONPATH:+:$PYTHONPATH}
export PKG_CONFIG_PATH=/opt/ros/%{ros_distro}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
-# GUARDED_BY / EXCLUSIVE_LOCKS_REQUIRED 是 Abseil 的 Clang 线程安全注解,GCC 不原生支持。
-# 通过 cmake 的 -DCMAKE_CXX_FLAGS 传入空宏定义,避免 shell 对括号的二次解析。
cd cartographer_ros
mkdir -p .obj && cd .obj
+# Abseil 线程安全注解宏 GUARDED_BY(x) 等含括号,在 shell 命令行(含 CXXFLAGS 赋值)
+# 均会触发 "syntax error near unexpected token '('"。
+# 解决方案:将含括号的宏定义写入 cmake 初始化缓存文件(-C),完全在 cmake 层处理,
+# 不经过 shell 括号解析。
+cat > /tmp/absl-cxx-init.cmake << 'CMAKEINIT'
+set(CMAKE_CXX_FLAGS "%{optflags} -DGUARDED_BY(x)= -DEXCLUSIVE_LOCKS_REQUIRED(x)= -DGUARDED_BY_CONTENTION(x)= -DSHARED_LOCKS_REQUIRED(x)=" CACHE STRING "" FORCE)
+CMAKEINIT
%cmake3 \
+ -C /tmp/absl-cxx-init.cmake \
-DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
-DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
-DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
@@ -102,7 +108,6 @@ mkdir -p .obj && cd .obj
-DSETUPTOOLS_DEB_LAYOUT=OFF \
-DBUILD_TESTING=OFF -DTESTING=OFF -DCMAKE_SUPPRESS_REGENERATION=ON \
-DABSL_PROPAGATE_CXX_STD=ON \
- "-DCMAKE_CXX_FLAGS=%{optflags} -DGUARDED_BY(x)= -DEXCLUSIVE_LOCKS_REQUIRED(x)= -DGUARDED_BY_CONTENTION(x)= -DSHARED_LOCKS_REQUIRED(x)=" \
..
make %{?_smp_mflags}