blob: 9c18a928b78125724b46bdf70c7c18168b42f27b (
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
%define ros_distro humble
%define RosPkgName elite-robots-msgs
%define src_version 1.0.3-1
Name: ros-%{ros_distro}-%{RosPkgName}
Version: 1.0.3
Release: 1%{?dist}
Summary: Elite Robots CS series ROS 2 driver and message packages
License: Apache-2.0
URL: https://github.com/EliteRobots/Elite_Robots_CS_ROS2_Driver
Source0: %{RosPkgName}-%{src_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: ros-%{ros_distro}-ament-cmake
BuildRequires: ros-%{ros_distro}-ament-cmake-python
BuildRequires: ros-%{ros_distro}-rosidl-default-generators
# elite_robots_dashboard_msgs(无额外依赖,只需 ament_cmake + rosidl)
# elite_robots_msgs
BuildRequires: ros-%{ros_distro}-geometry-msgs
# elite_robots_calibration 依赖 elite_cs_series_sdk(尚未引入),跳过该子包构建
BuildRequires: ros-%{ros_distro}-rclcpp
# elite_robots_controllers
BuildRequires: ros-%{ros_distro}-angles
BuildRequires: ros-%{ros_distro}-controller-interface
BuildRequires: ros-%{ros_distro}-generate-parameter-library
BuildRequires: ros-%{ros_distro}-hardware-interface
BuildRequires: ros-%{ros_distro}-joint-trajectory-controller
BuildRequires: ros-%{ros_distro}-lifecycle-msgs
BuildRequires: ros-%{ros_distro}-pluginlib
BuildRequires: ros-%{ros_distro}-rclcpp-lifecycle
BuildRequires: ros-%{ros_distro}-rcpputils
BuildRequires: ros-%{ros_distro}-rcutils
BuildRequires: ros-%{ros_distro}-realtime-tools
BuildRequires: ros-%{ros_distro}-std-msgs
BuildRequires: ros-%{ros_distro}-std-srvs
# elite_robots_driver
BuildRequires: ros-%{ros_distro}-backward-ros
BuildRequires: ros-%{ros_distro}-tf2-geometry-msgs
BuildRequires: ros-%{ros_distro}-ros2-controllers
BuildRequires: ros-%{ros_distro}-ros2-control
BuildRequires: ros-%{ros_distro}-rclcpp-components
BuildRequires: ros-%{ros_distro}-rclcpp-action
BuildRequires: ros-%{ros_distro}-sensor-msgs
BuildRequires: ros-%{ros_distro}-control-msgs
BuildRequires: ros-%{ros_distro}-trajectory-msgs
BuildRequires: ros-%{ros_distro}-controller-manager-msgs
BuildRequires: ros-%{ros_distro}-controller-manager
BuildRequires: ros-%{ros_distro}-launch
BuildRequires: ros-%{ros_distro}-launch-ros
BuildRequires: ros-%{ros_distro}-rclpy
# elite_robots_moveit_config(仅 exec_depend,无需 BuildRequires)
Requires: ros-%{ros_distro}-ros-workspace
Requires: ros-%{ros_distro}-ament-cmake
# elite_robots_msgs 运行时
Requires: ros-%{ros_distro}-geometry-msgs
Requires: ros-%{ros_distro}-rosidl-default-runtime
# elite_robots_controllers 运行时
Requires: ros-%{ros_distro}-angles
Requires: ros-%{ros_distro}-controller-interface
Requires: ros-%{ros_distro}-generate-parameter-library
Requires: ros-%{ros_distro}-hardware-interface
Requires: ros-%{ros_distro}-joint-trajectory-controller
Requires: ros-%{ros_distro}-lifecycle-msgs
Requires: ros-%{ros_distro}-pluginlib
Requires: ros-%{ros_distro}-rclcpp
Requires: ros-%{ros_distro}-rclcpp-lifecycle
Requires: ros-%{ros_distro}-rcpputils
Requires: ros-%{ros_distro}-rcutils
Requires: ros-%{ros_distro}-realtime-tools
Requires: ros-%{ros_distro}-std-msgs
Requires: ros-%{ros_distro}-std-srvs
# elite_robots_calibration 运行时(elite_cs_series_sdk 未引入,跳过)
Requires: ros-%{ros_distro}-ament-index-cpp
Requires: yaml-cpp
# elite_robots_driver 运行时
Requires: ros-%{ros_distro}-backward-ros
Requires: ros-%{ros_distro}-tf2-geometry-msgs
Requires: ros-%{ros_distro}-ros2-controllers
Requires: ros-%{ros_distro}-ros2-control
Requires: ros-%{ros_distro}-rclcpp-components
Requires: ros-%{ros_distro}-rclcpp-action
Requires: ros-%{ros_distro}-sensor-msgs
Requires: ros-%{ros_distro}-control-msgs
Requires: ros-%{ros_distro}-trajectory-msgs
Requires: ros-%{ros_distro}-controller-manager-msgs
Requires: ros-%{ros_distro}-controller-manager
Requires: ros-%{ros_distro}-launch
Requires: ros-%{ros_distro}-launch-ros
Requires: ros-%{ros_distro}-rclpy
Requires: ros-%{ros_distro}-force-torque-sensor-broadcaster
Requires: ros-%{ros_distro}-joint-state-broadcaster
Requires: ros-%{ros_distro}-joint-state-publisher
Requires: ros-%{ros_distro}-robot-state-publisher
Requires: ros-%{ros_distro}-position-controllers
Requires: ros-%{ros_distro}-velocity-controllers
Requires: ros-%{ros_distro}-ros2-controllers-test-nodes
Requires: ros-%{ros_distro}-rviz2
Requires: ros-%{ros_distro}-urdf
Requires: ros-%{ros_distro}-xacro
Requires: ros-%{ros_distro}-builtin-interfaces
# elite_robots_description 不在任何已知清单中,跳过
# elite_robots_moveit_config 运行时
Requires: ros-%{ros_distro}-moveit-kinematics
Requires: ros-%{ros_distro}-moveit-planners-ompl
Requires: ros-%{ros_distro}-moveit-ros-move-group
Requires: ros-%{ros_distro}-moveit-ros-visualization
Requires: ros-%{ros_distro}-moveit-servo
Requires: ros-%{ros_distro}-moveit-simple-controller-manager
Requires: ros-%{ros_distro}-ament-index-python
Requires: python3-yaml
Requires: ros-%{ros_distro}-warehouse-ros-sqlite
Provides: %{name}-devel = %{version}-%{release}
Provides: %{name}-doc = %{version}-%{release}
Provides: %{name}-runtime = %{version}-%{release}
%description
Elite Robots CS series ROS 2 driver metapackage. Includes message definitions
(elite_robots_msgs, elite_robots_dashboard_msgs), hardware driver
(elite_robots_driver), controllers (elite_robots_controllers), calibration
tools (elite_robots_calibration), and MoveIt configuration
(elite_robots_moveit_config).
%prep
%autosetup -n %{RosPkgName}-%{src_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}
# ament 通过 AMENT_PREFIX_PATH 环境变量查找已安装包,把 buildroot 前置以找到本 spec 内前序子包
export AMENT_PREFIX_PATH=%{buildroot}/opt/ros/%{ros_distro}:/opt/ros/%{ros_distro}
# buildroot 内前序子包的 cmake config 目录前缀
%define br_cmake_dir %{buildroot}/opt/ros/%{ros_distro}/share
# 公共 cmake 参数
CMAKE_COMMON_ARGS="\
-DCMAKE_INSTALL_PREFIX=/opt/ros/%{ros_distro} \
-DCMAKE_PREFIX_PATH=%{buildroot}/opt/ros/%{ros_distro}:/opt/ros/%{ros_distro} \
-DAMENT_PREFIX_PATH=%{buildroot}/opt/ros/%{ros_distro}:/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"
# 1. elite_robots_dashboard_msgs
mkdir -p elite_robots_dashboard_msgs/.obj && cd elite_robots_dashboard_msgs/.obj
cmake ${CMAKE_COMMON_ARGS} ..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
# 2. elite_robots_msgs
mkdir -p elite_robots_msgs/.obj && cd elite_robots_msgs/.obj
cmake ${CMAKE_COMMON_ARGS} ..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
# 3. elite_robots_controllers(显式传入前序子包 _DIR,绕过 ament_index 查找路径问题)
mkdir -p elite_robots_controllers/.obj && cd elite_robots_controllers/.obj
cmake ${CMAKE_COMMON_ARGS} \
-Delite_robots_msgs_DIR=%{br_cmake_dir}/elite_robots_msgs/cmake \
-Delite_robots_dashboard_msgs_DIR=%{br_cmake_dir}/elite_robots_dashboard_msgs/cmake \
..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
# 4. elite_robots_calibration —— 依赖 elite_cs_series_sdk(未引入),跳过
# 5. elite_robots_driver(显式传入前序子包 _DIR)
mkdir -p elite_robots_driver/.obj && cd elite_robots_driver/.obj
cmake ${CMAKE_COMMON_ARGS} \
-Delite_robots_msgs_DIR=%{br_cmake_dir}/elite_robots_msgs/cmake \
-Delite_robots_dashboard_msgs_DIR=%{br_cmake_dir}/elite_robots_dashboard_msgs/cmake \
..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
# 6. elite_robots_moveit_config(ament_cmake_python:cmake 负责安装 Python 模块和 share 资源)
mkdir -p elite_robots_moveit_config/.obj && cd elite_robots_moveit_config/.obj
cmake ${CMAKE_COMMON_ARGS} ..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
# 7. elite_robots(元包,空 CMakeLists,仅注册 ament 包)
mkdir -p elite_robots/.obj && cd elite_robots/.obj
cmake ${CMAKE_COMMON_ARGS} ..
make %{?_smp_mflags}
make install DESTDIR=%{buildroot}
cd ../..
%install
# 所有子包已在 %build 中直接 install 到 %{buildroot},此处无需重复操作
%files
/opt/ros/%{ros_distro}
%changelog
* Tue Sep 15 2026 ai-importer <ai-importer@openeuler.org> - 1.0.3-1
- Initial import: Elite Robots CS series ROS 2 driver metapackage (multi-package repo)
|