summaryrefslogtreecommitdiff
path: root/elite-cs-series-sdk.spec
blob: 73521e622a20d37db898a3110378f1dabcf05e3b (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
# topdir: elite-cs-series-sdk-1.3.0
Name:           elite-cs-series-sdk
Version:        1.3.0
Release:        1%{?dist}
Summary:        Elite Robots CS Series SDK for Elibot CS series robotic arms

License:        MIT
URL:            https://github.com/Elite-Robots/Elite_Robots_CS_SDK
Source0:        https://github.com/747309172a-cpu/elite_cs_series_sdk-release/archive/6ee8f50cf124391d0d5ea672fada96edacc80284.tar.gz#/elite-cs-series-sdk-1.3.0.tar.gz

Group:          Development/Libraries
Packager:       openEuler Builder <builder@openeuler.org>

BuildRequires:  cmake
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  make
BuildRequires:  boost-devel
BuildRequires:  libssh-devel
BuildRequires:  ament_cmake
# ament_cmake's RPM suppresses all Requires from /opt/ros/humble/ via
# __requires_exclude_from, so python3-ament-package is NOT auto-installed
# when ament_cmake is pulled in as a BuildRequires.  However ament_cmake's
# CMake template script (templates_2_cmake.py) imports ament_package at
# configure time, causing "ModuleNotFoundError: No module named 'ament_package'".
BuildRequires:  python3-ament-package
# ament_cmake's RPM also suppresses the catkin_pkg runtime dep: its
# package_xml_2_cmake.py imports catkin_pkg.package at configure time, but
# __requires_exclude_from strips all Requires from /opt/ros/humble/ paths, so
# python3-catkin_pkg is NOT auto-installed when ament_cmake is a BuildRequires.
BuildRequires:  python3-catkin_pkg

%description
Elite Robots CS Series SDK is a C++ library for Elibot CS series
robotic arms. It provides interfaces for primary port communication,
RTSI (Real-Time Socket Interface), dashboard control, and motion
control of Elite Robots CS series robotic arms.

%package devel
Summary:        Development files for %{name}
Group:          Development/Libraries
Packager:       openEuler Builder <builder@openeuler.org>
Requires:       %{name} = %{version}-%{release}

%description devel
Header files, static libraries, and CMake configuration files for
developing applications with %{name}.

%prep
%autosetup -n %{name}-%{version}

%build
# Set up ROS environment so cmake can find ament_cmake under /opt/ros/humble
export CMAKE_PREFIX_PATH=/opt/ros/humble${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}
export AMENT_PREFIX_PATH=/opt/ros/humble
export PKG_CONFIG_PATH=/opt/ros/humble/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}
for _p in /opt/ros/humble/lib/python3.*/site-packages; do
    [ -d "$_p" ] && export PYTHONPATH="$_p${PYTHONPATH:+:${PYTHONPATH}}"
done
%cmake \
    -DELITE_COMPILE_TESTS=OFF \
    -DELITE_COMPILE_DOC=OFF \
    -DELITE_COMPILE_EXAMPLES=OFF
# The %%cmake macro in this openEuler chroot performs an in-source build
# (build files written to the source dir, not a separate %%_target_platform
# build dir).  %%cmake_build expects an out-of-tree dir named %%_target_platform
# which was never created, so it fails with "is not a directory".  Use make
# directly to build in-place where CMake generated the Makefiles.
make %{?_smp_mflags}

%install
# Install from the in-source Makefiles (same reason as %%build above).
DESTDIR=%{buildroot} make install

%files
%license LICENSE
%doc README.md
%{_libdir}/libelite-cs-series-sdk.so
%{_datadir}/Elite/
%{_datadir}/elite_cs_series_sdk/
%{_datadir}/ament_index/resource_index/packages/elite_cs_series_sdk

%files devel
%{_includedir}/Elite/
%{_libdir}/libelite-cs-series-sdk.a
%{_libdir}/cmake/elite_cs_series_sdk/
%{_libdir}/cmake/elite-cs-series-sdk/

%changelog
* Fri Oct 09 2026 openEuler Builder <builder@openeuler.org> - 1.3.0-1
- Initial package