summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-09-20 03:08:52 +0000
committerCoprDistGit <infra@openeuler.org>2026-09-20 03:08:52 +0000
commit4b11b789ad8a911d96d3b8ca3718f30a6615e765 (patch)
tree6011d724a81c12aaa54583a2742ff27f30b25a60
parenta1cdfd4783a1d66e674567cb6f1275359ab0d47e (diff)
automatic import of ros-humble-cartographer-rosopeneuler24.03_LTS_SP3
-rw-r--r--cartographer-ros-fix-absl-macros.patch19
-rw-r--r--cartographer-ros.spec11
-rw-r--r--sources2
3 files changed, 22 insertions, 10 deletions
diff --git a/cartographer-ros-fix-absl-macros.patch b/cartographer-ros-fix-absl-macros.patch
new file mode 100644
index 0000000..9442cdc
--- /dev/null
+++ b/cartographer-ros-fix-absl-macros.patch
@@ -0,0 +1,19 @@
+--- a/cartographer_ros/CMakeLists.txt
++++ b/cartographer_ros/CMakeLists.txt
+@@ -18,6 +18,15 @@ cmake_minimum_required(VERSION 3.5)
+
+ project(cartographer_ros)
+
++# Abseil thread-safety annotation macros contain parentheses which break
++# shell command-line parsing when passed via CXXFLAGS. Define them here
++# via CMake so they never reach the shell.
++add_compile_definitions(
++ "GUARDED_BY(x)="
++ "EXCLUSIVE_LOCKS_REQUIRED(x)="
++ "GUARDED_BY_CONTENTION(x)="
++ "SHARED_LOCKS_REQUIRED(x)="
++)
++
+ find_package(ament_cmake REQUIRED)
+
+ # Default to C++17
diff --git a/cartographer-ros.spec b/cartographer-ros.spec
index 6f48752..e5211c2 100644
--- a/cartographer-ros.spec
+++ b/cartographer-ros.spec
@@ -9,6 +9,7 @@ Summary: Cartographer is a system that provides real-time simultaneous lo
License: Apache 2.0
URL: https://github.com/ros2/cartographer_ros/tree/ros2
Source0: %{RosPkgName}-%{src_version}.tar.gz
+Patch1: cartographer-ros-fix-absl-macros.patch
%global debug_package %{nil}
%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
@@ -84,7 +85,7 @@ Cartographer is a system that provides real-time simultaneous localization
configurations. This package provides Cartographer's ROS integration.
%prep
-%autosetup -n %{RosPkgName}-%{src_version}
+%autosetup -p1 -n %{RosPkgName}-%{src_version}
%build
source /opt/ros/%{ros_distro}/setup.sh 2>/dev/null || true
@@ -92,15 +93,7 @@ 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}
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}" \
diff --git a/sources b/sources
index 455a5bf..ff39d46 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8a04a488149d5b33495c9d1c46c9ab5a cartographer-ros-2.0.9002-1.tar.gz
+2ff82638a0578c475eef53d2a866a0da cartographer-ros-2.0.9002-1.tar.gz