# 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 - 16.0.21-1 - Initial package