diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | easynav-navmap-localizer.spec | 121 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 123 insertions, 0 deletions
@@ -0,0 +1 @@ +/703b73ae55bf6a419bf309b26084ca523b063ddf.tar.gz diff --git a/easynav-navmap-localizer.spec b/easynav-navmap-localizer.spec new file mode 100644 index 0000000..8fb88f2 --- /dev/null +++ b/easynav-navmap-localizer.spec @@ -0,0 +1,121 @@ +# spec-rules-ros 规范生成:ROS 2 ament_cmake 包 +# 本包为 monorepo EasyNavigation/easynav_plugins 的子包,源码位于 +# localizers/easynav_navmap_localizer/ 子目录,构建产物进 /opt/ros/%{ros_distro}。 + +%define ros_distro humble +%define RosPkgName easynav-navmap-localizer + +Name: ros-%{ros_distro}-%{RosPkgName} +Version: 0.5.0 +Release: 1%{?dist} +Summary: Easy Navigation: nAVmAP Localizer package + +# package.xml <license> Apache-2.0 +License: Apache-2.0 +URL: https://github.com/EasyNavigation/easynav_plugins + +# humble 分支 fetch 时的 HEAD commit(manifest target_version 0.5.0-1,无对应 tag, +# 固定 commit 保证产物可追溯) +%global commit 703b73ae55bf6a419bf309b26084ca523b063ddf +Source0: https://github.com/EasyNavigation/easynav_plugins/archive/%{commit}.tar.gz + +# debug 子包无意义(/opt 前缀),SIG 模板统一关闭 +%global debug_package %{nil} +# /opt 下 python 字节码会写标准 sitelib 路径,摘掉 brp-python-bytecompile +%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') +# ROS 包不做自动依赖扫描(.so 全在 /opt/ros 下,由 ament 间接依赖模型替代) +%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$ +%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$ + +# 单包策略:虚拟别名兼容依赖方,严禁拆实体 devel 子包(避免路径重叠冲突) +Provides: %{name}-devel = %{version}-%{release} +Provides: %{name}-doc = %{version}-%{release} +Provides: %{name}-runtime = %{version}-%{release} + +BuildRequires: ros-%{ros_distro}-ament-cmake +# package.xml <buildtool_depend>ament_cmake</buildtool_depend> 形态为 ament_cmake; +# <test_depend> 不写 BuildRequires(构建关闭测试) +BuildRequires: ros-%{ros_distro}-easynav-bonxai-maps-manager +BuildRequires: ros-%{ros_distro}-easynav-common +BuildRequires: ros-%{ros_distro}-easynav-core +BuildRequires: ros-%{ros_distro}-easynav-localizer +BuildRequires: ros-%{ros_distro}-easynav-sensors +BuildRequires: ros-%{ros_distro}-geometry-msgs +BuildRequires: ros-%{ros_distro}-nav-msgs +BuildRequires: ros-%{ros_distro}-navmap-core +BuildRequires: ros-%{ros_distro}-navmap-ros +BuildRequires: ros-%{ros_distro}-navmap-ros-interfaces +BuildRequires: ros-%{ros_distro}-pluginlib +BuildRequires: ros-%{ros_distro}-rclcpp +BuildRequires: ros-%{ros_distro}-tf2 +BuildRequires: ros-%{ros_distro}-tf2-geometry-msgs +BuildRequires: ros-%{ros_distro}-tf2-ros +# 系统依赖(package.xml <depend> 经 pkg.remap 映射 + dnf 实证) +BuildRequires: eigen3-devel +BuildRequires: pcl-devel + +# 运行时 Requires(/opt/ros 被 __requires_exclude_from 豁免,autodeps 扫不到,必须手写) +Requires: ros-%{ros_distro}-ros-workspace +Requires: ros-%{ros_distro}-ament-cmake +Requires: ros-%{ros_distro}-easynav-bonxai-maps-manager +Requires: ros-%{ros_distro}-easynav-common +Requires: ros-%{ros_distro}-easynav-core +Requires: ros-%{ros_distro}-easynav-localizer +Requires: ros-%{ros_distro}-easynav-sensors +Requires: ros-%{ros_distro}-geometry-msgs +Requires: ros-%{ros_distro}-nav-msgs +Requires: ros-%{ros_distro}-navmap-core +Requires: ros-%{ros_distro}-navmap-ros +Requires: ros-%{ros_distro}-navmap-ros-interfaces +Requires: ros-%{ros_distro}-pluginlib +Requires: ros-%{ros_distro}-rclcpp +Requires: ros-%{ros_distro}-tf2 +Requires: ros-%{ros_distro}-tf2-geometry-msgs +Requires: ros-%{ros_distro}-tf2-ros +# pcl 运行时库(plugin 链接 libpcl,autodeps 被豁免无法自动捕获) +Requires: pcl + +%description +Easy Navigation: nAVmAP Localizer package. An AMCL-like localizer operating on +NavMap meshes, provided as a plugin for the EasyNav framework, built for +ROS 2 %{ros_distro}. + +%prep +# 实测 GitHub commit 归档根目录名为 easynav_plugins-<完整SHA>(spec-rules-ros §2 强制实测) +%autosetup -n easynav_plugins-%{commit} + +%build +# ROS 基座环境(带守卫,buildroot 无 setup.sh 时不可直接 source) +[ -f /opt/ros/%{ros_distro}/setup.sh ] && source /opt/ros/%{ros_distro}/setup.sh || 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} + +# 本包源码位于 monorepo 子目录;显式 out-of-source 构建(规避 openEuler %cmake 位置参数坑) +cd localizers/easynav_navmap_localizer +mkdir -p .obj +cd .obj +cmake \ + -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \ + -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \ + -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \ + -UINCLUDE_INSTALL_DIR -ULIB_INSTALL_DIR -USYSCONF_INSTALL_DIR -USHARE_INSTALL_PREFIX -ULIB_SUFFIX \ + -DSETUPTOOLS_DEB_LAYOUT=OFF \ + -DBUILD_TESTING=OFF -DTESTING=OFF -DCMAKE_SUPPRESS_REGENERATION=ON \ + .. +%{__make} %{?_smp_mflags} + +%install +[ -f /opt/ros/%{ros_distro}/setup.sh ] && source /opt/ros/%{ros_distro}/setup.sh || 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} + +cd localizers/easynav_navmap_localizer/.obj +%{__make} install DESTDIR=%{buildroot} + +%files +# 整树拥有 /opt/ros/%{ros_distro}(SIG 模板标准做法,对"装了没打包"类错误免疫) +/opt/ros/%{ros_distro} + +%changelog +* Tue Oct 20 2026 ROS SIG <ros@openeuler.org> - 0.5.0-1 +- 初始引入 easynav_navmap_localizer 0.5.0(EasyNavigation/easynav_plugins humble 分支) @@ -0,0 +1 @@ +02ec9e42ac54d8e95a13c6f1a8916392 703b73ae55bf6a419bf309b26084ca523b063ddf.tar.gz |
