summaryrefslogtreecommitdiff
path: root/rclcpp.spec
diff options
context:
space:
mode:
Diffstat (limited to 'rclcpp.spec')
-rw-r--r--rclcpp.spec135
1 files changed, 135 insertions, 0 deletions
diff --git a/rclcpp.spec b/rclcpp.spec
new file mode 100644
index 0000000..4da7e9a
--- /dev/null
+++ b/rclcpp.spec
@@ -0,0 +1,135 @@
+# rclcpp: ROS 2 C++ client library (multi-package repository)
+# Bundles: rclcpp, rclcpp_action, rclcpp_components, rclcpp_lifecycle
+# topdir: rclcpp-16.0.21
+# Installs to /opt/ros/humble (ROS standard prefix)
+
+%global debug_package %{nil}
+%global __provides_exclude_from ^/opt/ros/humble/.*$
+%global __requires_exclude_from ^/opt/ros/humble/.*$
+# Strip brp-python-bytecompile (ROS Python files under /opt are not standard sitelib)
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+
+Name: rclcpp
+Version: 16.0.21
+Release: 1%{?dist}
+Summary: The ROS client library in C++
+
+License: Apache-2.0
+URL: https://github.com/ros2/rclcpp
+Source0: https://github.com/ros2/rclcpp/archive/16.0.21.tar.gz#/rclcpp-16.0.21.tar.gz
+
+# System build tools
+BuildRequires: cmake
+BuildRequires: gcc-c++
+BuildRequires: make
+BuildRequires: python3-devel
+
+# ROS buildtool dependencies (from ROS SIG repo)
+BuildRequires: ros-humble-ament-cmake-ros
+BuildRequires: ros-humble-ament-cmake-gen-version-h
+BuildRequires: ros-humble-ament-cmake
+
+# ROS runtime base
+BuildRequires: ros-humble-ros-workspace
+
+# ROS library dependencies — rclcpp sub-package
+BuildRequires: ros-humble-ament-index-cpp
+BuildRequires: ros-humble-builtin-interfaces
+BuildRequires: ros-humble-libstatistics-collector
+BuildRequires: ros-humble-rcl
+BuildRequires: ros-humble-rcl-interfaces
+BuildRequires: ros-humble-rcl-yaml-param-parser
+BuildRequires: ros-humble-rcpputils
+BuildRequires: ros-humble-rcutils
+BuildRequires: ros-humble-rmw
+BuildRequires: ros-humble-rosgraph-msgs
+BuildRequires: ros-humble-rosidl-runtime-cpp
+BuildRequires: ros-humble-rosidl-typesupport-c
+BuildRequires: ros-humble-rosidl-typesupport-cpp
+BuildRequires: ros-humble-statistics-msgs
+BuildRequires: ros-humble-tracetools
+
+# ROS library dependencies — rclcpp_action sub-package
+BuildRequires: ros-humble-action-msgs
+BuildRequires: ros-humble-rcl-action
+BuildRequires: ros-humble-rosidl-runtime-c
+
+# ROS library dependencies — rclcpp_components sub-package
+BuildRequires: ros-humble-class-loader
+BuildRequires: ros-humble-composition-interfaces
+
+# ROS library dependencies — rclcpp_lifecycle sub-package
+BuildRequires: ros-humble-lifecycle-msgs
+BuildRequires: ros-humble-rcl-lifecycle
+
+# Runtime Requires (ROS /opt auto-deps disabled, must be explicit)
+Requires: ros-humble-ros-workspace
+Requires: ros-humble-ament-cmake
+
+# Virtual provides for compatibility with -devel/-doc/-runtime naming
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+The ROS client library in C++.
+This package bundles the rclcpp, rclcpp_action, rclcpp_components,
+and rclcpp_lifecycle sub-packages from the rclcpp repository,
+providing the C++ client library for ROS 2.
+
+%prep
+%autosetup -n %{name}-%{version}
+
+%build
+# Source ROS environment if available (provides PYTHONPATH, AMENT_PREFIX_PATH)
+[ -f /opt/ros/humble/setup.sh ] && source /opt/ros/humble/setup.sh || true
+export PYTHONPATH=/opt/ros/humble/lib/python%{python3_version}/site-packages${PYTHONPATH:+:$PYTHONPATH}
+export PKG_CONFIG_PATH=/opt/ros/humble/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}
+
+ROSPREFIX=/opt/ros/humble
+BROSEROOT=%{buildroot}/opt/ros/humble
+export AMENT_PREFIX_PATH=${BROSEROOT}:${ROSPREFIX}
+export CMAKE_PREFIX_PATH=${BROSEROOT}:${ROSPREFIX}
+
+CMAKE_FLAGS="\
+ -DCMAKE_INSTALL_PREFIX=${ROSPREFIX} \
+ -DAMENT_PREFIX_PATH=${ROSPREFIX} \
+ -DCMAKE_PREFIX_PATH=${ROSPREFIX} \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DBUILD_TESTING=OFF \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX"
+
+# Build and install a single sub-package to buildroot
+build_one() {
+ pkg=$1
+ echo "=== Building ${pkg} ==="
+ cd "${pkg}"
+ mkdir -p build
+ cd build
+ cmake ${CMAKE_FLAGS} ..
+ cmake --build .
+ DESTDIR=%{buildroot} cmake --install .
+ cd ../..
+}
+
+# Layer 0: rclcpp (base library, all others depend on it)
+build_one rclcpp
+
+# Layer 1: packages depending on rclcpp (independent of each other)
+build_one rclcpp_action
+build_one rclcpp_lifecycle
+build_one rclcpp_components
+
+%install
+# All sub-packages already installed to buildroot/opt/ros/humble during build phase
+
+%files
+/opt/ros/humble/
+
+%changelog
+* Thu Oct 08 2026 openEuler Builder <builder@openeuler.org> - 16.0.21-1
+- Initial package