From 4b11b789ad8a911d96d3b8ca3718f30a6615e765 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Sun, 20 Sep 2026 03:08:52 +0000 Subject: automatic import of ros-humble-cartographer-ros --- cartographer-ros-fix-absl-macros.patch | 19 +++++++++++++++++++ cartographer-ros.spec | 11 ++--------- sources | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 cartographer-ros-fix-absl-macros.patch 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 -- cgit v1.2.3