summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--clips-vendor.spec37
-rw-r--r--sources3
3 files changed, 40 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 6ccdbf5..c965e61 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/clips-vendor-6.4.4-1.tar.gz
+/ament-cmake-vendor-package-1.3.14.tar.gz
diff --git a/clips-vendor.spec b/clips-vendor.spec
index b0d9f73..1ae4b53 100644
--- a/clips-vendor.spec
+++ b/clips-vendor.spec
@@ -9,6 +9,8 @@ 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')
@@ -17,10 +19,12 @@ Source0: %{RosPkgName}-%{src_version}.tar.gz
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}
@@ -32,6 +36,39 @@ 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}
diff --git a/sources b/sources
index 6f25811..fc50d74 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-c7abf34ef2938ab354b62abddb09bae0 clips-vendor-6.4.4-1.tar.gz
+962cb9cd1125255aa3d2cec74f89b4b0 ament-cmake-vendor-package-1.3.14.tar.gz
+65a639a13062bea90bda3addcec1d51b clips-vendor-6.4.4-1.tar.gz