%define ros_distro humble %define RosPkgName web-video-server Name: ros-%{ros_distro}-%{RosPkgName} Version: 3.1.0 Release: 1%{?dist} Summary: HTTP Streaming of ROS Image Topics in Multiple Formats License: BSD URL: https://github.com/RobotWebTools/web_video_server Source0: %{RosPkgName}-%{version}-1.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-ros BuildRequires: ros-%{ros_distro}-async-web-server-cpp BuildRequires: ros-%{ros_distro}-cv-bridge BuildRequires: ros-%{ros_distro}-image-transport BuildRequires: ros-%{ros_distro}-pluginlib BuildRequires: ros-%{ros_distro}-rclcpp BuildRequires: ros-%{ros_distro}-rclcpp-components BuildRequires: ros-%{ros_distro}-rmw BuildRequires: ros-%{ros_distro}-sensor-msgs BuildRequires: boost-devel BuildRequires: pkgconfig Requires: ros-%{ros_distro}-ros-workspace Requires: ros-%{ros_distro}-ament-cmake Requires: ros-%{ros_distro}-async-web-server-cpp Requires: ros-%{ros_distro}-cv-bridge Requires: ros-%{ros_distro}-image-transport Requires: ros-%{ros_distro}-pluginlib Requires: ros-%{ros_distro}-rclcpp Requires: ros-%{ros_distro}-rclcpp-components Requires: ros-%{ros_distro}-rmw Requires: ros-%{ros_distro}-sensor-msgs Provides: %{name}-devel = %{version}-%{release} Provides: %{name}-doc = %{version}-%{release} Provides: %{name}-runtime = %{version}-%{release} %description HTTP Streaming of ROS Image Topics in Multiple Formats %prep %autosetup -n %{RosPkgName}-%{version}-1 %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} mkdir -p %{_builddir}/%{RosPkgName}-%{version}-1/.obj cd %{_builddir}/%{RosPkgName}-%{version}-1/.obj # async_web_server_cpp 的 find_dependencies.cmake 用数字格式请求 Boost(如108300), # 而系统 CMake FindBoost 要求点分格式(1.83)。/opt/ros 只读,故复制到本地再修改, # 并将本地副本目录置于 CMAKE_PREFIX_PATH 最前,让 CMake 优先找到修正版本。 _AWSC_LOCAL=%{_builddir}/%{RosPkgName}-%{version}-1/.awsc_cmake_fix if [ -f /opt/ros/%{ros_distro}/share/async_web_server_cpp/cmake/find_dependencies.cmake ]; then mkdir -p ${_AWSC_LOCAL}/share/async_web_server_cpp/cmake cp -a /opt/ros/%{ros_distro}/share/async_web_server_cpp/cmake/. \ ${_AWSC_LOCAL}/share/async_web_server_cpp/cmake/ sed -i 's/find_dependency(Boost [0-9]\{6\}/find_dependency(Boost 1.83/g' \ ${_AWSC_LOCAL}/share/async_web_server_cpp/cmake/find_dependencies.cmake # TargetsExport.cmake 中写死了 ${_AWSC_LOCAL}/lib/libasync_web_server_cpp.so.* # 需在本地副本目录创建 lib/ 并软链接真实 .so,让路径校验通过 mkdir -p ${_AWSC_LOCAL}/lib for _so in /opt/ros/%{ros_distro}/lib/libasync_web_server_cpp.so*; do [ -e "$_so" ] && ln -sf "$_so" "${_AWSC_LOCAL}/lib/$(basename $_so)" done # 将 TargetsExport.cmake 中的绝对路径替换为指向真实 /opt/ros 库 sed -i "s|${_AWSC_LOCAL}/lib/libasync_web_server_cpp|/opt/ros/%{ros_distro}/lib/libasync_web_server_cpp|g" \ ${_AWSC_LOCAL}/share/async_web_server_cpp/cmake/async_web_server_cppTargetsExport.cmake 2>/dev/null || true fi %cmake3 \ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \ -DCMAKE_PREFIX_PATH="${_AWSC_LOCAL};/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 \ .. make %{?_smp_mflags} %install 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} cd %{_builddir}/%{RosPkgName}-%{version}-1/.obj make install DESTDIR=%{buildroot} %files /opt/ros/%{ros_distro} %changelog * Tue Sep 16 2026 ai-importer - 3.1.0-1 - Initial import (ROS batch)