%define ros_distro humble %define RosPkgName clips-vendor %define src_version 6.4.4-1 Name: ros-%{ros_distro}-%{RosPkgName} Version: 6.4.4 Release: 1%{?dist} Summary: Vendor package for the CLIPS rule based production system License: MIT-0 URL: https://github.com/carologistics/clips_vendor/tree/main Source0: %{RosPkgName}-%{src_version}.tar.gz # ament_cmake_vendor_package cmake 模块(绕过 aarch64 RPM 的 python3-vcstool 缺口依赖) Source1: ament-cmake-vendor-package-1.3.14.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: git BuildRequires: unzip Requires: ros-%{ros_distro}-ros-workspace Requires: ros-%{ros_distro}-ament-cmake Requires: ros-%{ros_distro}-ament-cmake-vendor-package Provides: %{name}-devel = %{version}-%{release} Provides: %{name}-doc = %{version}-%{release} Provides: %{name}-runtime = %{version}-%{release} %description Vendor package for the CLIPS rule based production system %prep %autosetup -n %{RosPkgName}-%{src_version} # 手动安装 ament_cmake_vendor_package cmake 模块文件到 ROS 前缀, # 绕过官方 aarch64 RPM 错误声明的 Requires: python3-vcstool(该包在 openEuler 24.03 SP3 不存在) _ACVP_DIR=$(mktemp -d) tar xzf %{SOURCE1} -C "${_ACVP_DIR}" _SHARE_DIR="/opt/ros/%{ros_distro}/share/ament_cmake_vendor_package" install -d "${_SHARE_DIR}/cmake/templates" install -m 644 "${_ACVP_DIR}"/ament-cmake-vendor-package-1.3.14/cmake/ament_vendor.cmake \ "${_SHARE_DIR}/cmake/" install -m 644 "${_ACVP_DIR}"/ament-cmake-vendor-package-1.3.14/cmake/templates/*.in \ "${_SHARE_DIR}/cmake/templates/" install -m 644 "${_ACVP_DIR}"/ament-cmake-vendor-package-1.3.14/ament_cmake_vendor_package-extras.cmake \ "${_SHARE_DIR}/cmake/" # 生成最小 Config.cmake(让 find_package(ament_cmake_vendor_package) 找到模块) cat > "${_SHARE_DIR}/cmake/ament_cmake_vendor_packageConfig.cmake" << 'EOF' set(ament_cmake_vendor_package_VERSION "1.3.14") set(ament_cmake_vendor_package_DIR "${CMAKE_CURRENT_LIST_DIR}") include("${CMAKE_CURRENT_LIST_DIR}/ament_cmake_vendor_package-extras.cmake") EOF cat > "${_SHARE_DIR}/cmake/ament_cmake_vendor_packageConfig-version.cmake" << 'EOF' set(PACKAGE_VERSION "1.3.14") if("${PACKAGE_FIND_VERSION}" VERSION_LESS_EQUAL "${PACKAGE_VERSION}") set(PACKAGE_VERSION_COMPATIBLE TRUE) if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") set(PACKAGE_VERSION_EXACT TRUE) endif() endif() EOF rm -rf "${_ACVP_DIR}" # patch CMakeLists.txt:将 SATISFIED FALSE 改为 SATISFIED TRUE, # 跳过网络下载 CLIPS C 源码(COPR 构建环境网络隔离,无法访问外网) sed -i 's/SATISFIED FALSE/SATISFIED TRUE/g' CMakeLists.txt %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 .obj && cd .obj %cmake3 \ -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 -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 .obj make install DESTDIR=%{buildroot} %files /opt/ros/%{ros_distro} %changelog * Sun Sep 20 2026 ai-importer - 6.4.4-1 - Initial import (ROS batch)