%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 / )---- 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 - 0.8.1-1 - Initial import of gazebo-video-monitor-plugins monorepo (ROS 2 Humble)