blob: a812086040de4c6907ca4503c50ba527b047a563 (
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
|
# topdir: ros-humble-mavros-extras-2.16.0 (via --transform)
%define ros_distro humble
%define RosPkgName mavros-extras
Name: ros-%{ros_distro}-%{RosPkgName}
Version: 2.16.0
Release: 1%{?dist}
Summary: Extra nodes and plugins for MAVROS
License: GPLv3 and LGPLv3 and BSD
URL: https://github.com/mavlink/mavros
Source0: https://github.com/mavlink/mavros/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
# debug subpackage not meaningful (/opt prefix, nonstandard strip paths)
%global debug_package %{nil}
# /opt python bytecode compilation writes standard sitelib paths — strip brp-python-bytecompile
%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
# ROS packages: .so under /opt/ros — autodeps disabled, ament indirect-dependency model instead
%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
BuildRequires: make
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# --- ROS buildtool dependencies (ament_cmake) ---
BuildRequires: ros-%{ros_distro}-ament-cmake
BuildRequires: ros-%{ros_distro}-ament-cmake-python
BuildRequires: ros-%{ros_distro}-eigen3-cmake-module
# --- ROS package dependencies ---
BuildRequires: ros-%{ros_distro}-angles
BuildRequires: ros-%{ros_distro}-diagnostic-msgs
BuildRequires: ros-%{ros_distro}-diagnostic-updater
BuildRequires: ros-%{ros_distro}-eigen-stl-containers
BuildRequires: ros-%{ros_distro}-geographic-msgs
BuildRequires: ros-%{ros_distro}-geometry-msgs
BuildRequires: ros-%{ros_distro}-libmavconn
BuildRequires: ros-%{ros_distro}-mavlink
BuildRequires: ros-%{ros_distro}-mavros
BuildRequires: ros-%{ros_distro}-mavros-msgs
BuildRequires: ros-%{ros_distro}-message-filters
BuildRequires: ros-%{ros_distro}-nav-msgs
BuildRequires: ros-%{ros_distro}-pluginlib
BuildRequires: ros-%{ros_distro}-rclcpp
BuildRequires: ros-%{ros_distro}-rclcpp-components
BuildRequires: ros-%{ros_distro}-rcpputils
BuildRequires: ros-%{ros_distro}-rosidl-default-runtime
BuildRequires: ros-%{ros_distro}-sensor-msgs
BuildRequires: ros-%{ros_distro}-std-msgs
BuildRequires: ros-%{ros_distro}-std-srvs
BuildRequires: ros-%{ros_distro}-tf2-eigen
BuildRequires: ros-%{ros_distro}-tf2-ros
BuildRequires: ros-%{ros_distro}-trajectory-msgs
BuildRequires: ros-%{ros_distro}-urdf
BuildRequires: ros-%{ros_distro}-visualization-msgs
BuildRequires: ros-%{ros_distro}-yaml-cpp-vendor
# --- System (non-ROS) build dependencies ---
BuildRequires: eigen3-devel
BuildRequires: yaml-cpp-devel
BuildRequires: geographiclib-devel
BuildRequires: geographiclib-tools
BuildRequires: python3-click
# --- Runtime requires (ROS-specific, autodeps disabled) ---
Requires: ros-%{ros_distro}-ros-workspace
Requires: ros-%{ros_distro}-ament-cmake
Requires: ros-%{ros_distro}-rclcpp
Requires: ros-%{ros_distro}-rclcpp-components
Requires: ros-%{ros_distro}-mavros
Requires: ros-%{ros_distro}-libmavconn
Requires: ros-%{ros_distro}-mavros-msgs
Requires: ros-%{ros_distro}-mavlink
Requires: ros-%{ros_distro}-pluginlib
Requires: ros-%{ros_distro}-tf2-ros
Requires: ros-%{ros_distro}-tf2-eigen
Requires: ros-%{ros_distro}-diagnostic-updater
Requires: ros-%{ros_distro}-message-filters
Requires: ros-%{ros_distro}-rcpputils
Requires: ros-%{ros_distro}-urdf
Requires: ros-%{ros_distro}-yaml-cpp-vendor
Requires: ros-%{ros_distro}-rclpy
Requires: ros-%{ros_distro}-rosidl-default-runtime
Requires: ros-%{ros_distro}-diagnostic-msgs
Requires: ros-%{ros_distro}-geographic-msgs
Requires: ros-%{ros_distro}-geometry-msgs
Requires: ros-%{ros_distro}-nav-msgs
Requires: ros-%{ros_distro}-sensor-msgs
Requires: ros-%{ros_distro}-std-msgs
Requires: ros-%{ros_distro}-std-srvs
Requires: ros-%{ros_distro}-trajectory-msgs
Requires: ros-%{ros_distro}-visualization-msgs
Requires: ros-%{ros_distro}-angles
Requires: ros-%{ros_distro}-eigen-stl-containers
Requires: ros-%{ros_distro}-eigen3-cmake-module
Requires: python3-click
# Virtual provides for compatibility
Provides: %{name}-devel = %{version}-%{release}
Provides: %{name}-doc = %{version}-%{release}
Provides: %{name}-runtime = %{version}-%{release}
%description
Extra nodes and plugins for MAVROS (MAVLink to ROS bridge).
This package provides additional MAVLink plugins (ADS-B, GPS RTK, camera,
distance sensor, obstacle distance, terrain, vision pose, etc.) and the
terrain tile server.
%prep
%autosetup -n %{name}-%{version}
%build
# The source tarball contains the whole mavros repo (multi-package layout).
# We build only the mavros_extras sub-package.
cd mavros_extras
# ROS bootstrap environment (chroot has ROS SIG repo; guard against missing setup.sh)
[ -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}
# Explicit out-of-source build (openEuler %cmake macro positional-arg pitfall)
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 \
-DCMAKE_CXX_STANDARD=20
%make_build
%install
cd mavros_extras/.obj
%make_install DESTDIR=%{buildroot}
%files
/opt/ros/%{ros_distro}
%changelog
* Mon Oct 12 2026 AI Importer <ai-importer@openeuler.org> - 2.16.0-1
- Initial package for openEuler (ROS 2 humble)
- Built from upstream mavros repo, mavros_extras sub-package
|