blob: bf48d6612dd54a7787764de5f50994269cd8c630 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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)
|