diff options
Diffstat (limited to 'gazebo-video-monitor-plugins.spec')
| -rw-r--r-- | gazebo-video-monitor-plugins.spec | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/gazebo-video-monitor-plugins.spec b/gazebo-video-monitor-plugins.spec new file mode 100644 index 0000000..bf48d66 --- /dev/null +++ b/gazebo-video-monitor-plugins.spec @@ -0,0 +1,161 @@ +%define ros_distro humble +%define RosPkgName gazebo-video-monitor-plugins + +Name: ros-%{ros_distro}-%{RosPkgName} +Version: 0.8.1 +Release: 1%{?dist} +Summary: ROS 2 Gazebo plugins for recording simulation videos with multiple camera views +License: GPLv3 +URL: https://github.com/nlamprian/gazebo_video_monitors +Source0: https://github.com/nlamprian/gazebo_video_monitors/archive/refs/tags/%{version}.tar.gz#/gazebo_video_monitors-%{version}.tar.gz + +%global debug_package %{nil} +%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') +%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$ +%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$ + +# ---- 构建工具 ---- +BuildRequires: cmake +BuildRequires: python3-devel +BuildRequires: python3-setuptools + +# ---- 来自 ros_pkg_manifest.json official_deps_rpm ---- +BuildRequires: ros-%{ros_distro}-ament-cmake +BuildRequires: ros-%{ros_distro}-builtin-interfaces +BuildRequires: ros-%{ros_distro}-rosidl-default-generators +BuildRequires: ros-%{ros_distro}-rosidl-default-runtime +BuildRequires: ros-%{ros_distro}-std-srvs + +# ---- gazebo_video_monitor_plugins 直接依赖(package.xml <build_depend> / <depend>)---- +BuildRequires: ros-%{ros_distro}-gazebo-dev +BuildRequires: ros-%{ros_distro}-gazebo-ros +BuildRequires: ros-%{ros_distro}-rclcpp +BuildRequires: ros-%{ros_distro}-yaml-cpp-vendor + +# ---- gazebo_video_monitor_utils 运行时(ament_python,exec_depend)---- +BuildRequires: ros-%{ros_distro}-gazebo-msgs +BuildRequires: ros-%{ros_distro}-rclpy + +# ---- 运行时 Requires ---- +Requires: ros-%{ros_distro}-ros-workspace +Requires: ros-%{ros_distro}-ament-cmake +Requires: ros-%{ros_distro}-builtin-interfaces +Requires: ros-%{ros_distro}-rosidl-default-runtime +Requires: ros-%{ros_distro}-std-srvs +Requires: ros-%{ros_distro}-gazebo-dev +Requires: ros-%{ros_distro}-gazebo-ros +Requires: ros-%{ros_distro}-rclcpp +Requires: ros-%{ros_distro}-yaml-cpp-vendor +Requires: ros-%{ros_distro}-gazebo-msgs +Requires: ros-%{ros_distro}-rclpy + +Provides: %{name}-devel = %{version}-%{release} +Provides: %{name}-doc = %{version}-%{release} +Provides: %{name}-runtime = %{version}-%{release} + +%description +gazebo-video-monitor-plugins is a monorepo containing four ROS 2 packages: +- gazebo_video_monitor_interfaces: ROS 2 message/service interface definitions +- gazebo_video_monitor_plugins: Gazebo plugins for recording simulation videos + with support for multiple camera views +- gazebo_video_monitor_utils: Python utility scripts for interacting with the + video monitor plugins +- gazebo_video_monitors: Metapackage grouping the above packages + +%prep +%autosetup -n gazebo_video_monitors-%{version} + +%build +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} + +# 1. gazebo_video_monitor_interfaces(ament_cmake,接口生成,其余包依赖它) +cd gazebo_video_monitor_interfaces +mkdir -p .obj && cd .obj +%cmake3 \ + -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} +cd ../.. + +# 2. gazebo_video_monitor_plugins(ament_cmake,依赖 interfaces) +# 先将 interfaces 安装到临时前缀,让后续 find_package 能找到 +cd gazebo_video_monitor_interfaces/.obj +make install DESTDIR=%{_builddir}/ros_install_staging +cd ../.. +export AMENT_PREFIX_PATH="/opt/ros/%{ros_distro}:%{_builddir}/ros_install_staging/opt/ros/%{ros_distro}" +export CMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}:%{_builddir}/ros_install_staging/opt/ros/%{ros_distro}" + +cd gazebo_video_monitor_plugins +mkdir -p .obj && cd .obj +%cmake3 \ + -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \ + -DAMENT_PREFIX_PATH="${AMENT_PREFIX_PATH}" \ + -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ + -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} +cd ../.. + +# 3. gazebo_video_monitors(ament_cmake 元包,仅 ament_package()) +cd gazebo_video_monitors +mkdir -p .obj && cd .obj +%cmake3 \ + -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \ + -DAMENT_PREFIX_PATH="${AMENT_PREFIX_PATH}" \ + -DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}" \ + -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} +cd ../.. + +# 4. gazebo_video_monitor_utils(ament_python,setuptools 安装) +cd gazebo_video_monitor_utils +export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages${PYTHONPATH:+:$PYTHONPATH} + +%install +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} +export AMENT_PREFIX_PATH="/opt/ros/%{ros_distro}:%{_builddir}/ros_install_staging/opt/ros/%{ros_distro}" +export CMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}:%{_builddir}/ros_install_staging/opt/ros/%{ros_distro}" + +# 1. interfaces +cd gazebo_video_monitor_interfaces/.obj +make install DESTDIR=%{buildroot} +cd ../.. + +# 2. plugins +cd gazebo_video_monitor_plugins/.obj +make install DESTDIR=%{buildroot} +cd ../.. + +# 3. 元包 +cd gazebo_video_monitors/.obj +make install DESTDIR=%{buildroot} +cd ../.. + +# 4. Python 工具包(ament_python) +cd gazebo_video_monitor_utils +%{__python3} setup.py install \ + --prefix=/opt/ros/%{ros_distro} \ + --root=%{buildroot} \ + --install-layout=rpm +cd .. + +%files +/opt/ros/%{ros_distro} + +%changelog +* Mon Sep 15 2026 ai-importer <ai-importer@openeuler.org> - 0.8.1-1 +- Initial import of gazebo-video-monitor-plugins monorepo (ROS 2 Humble) |
