summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clips-vendor.spec56
1 files changed, 28 insertions, 28 deletions
diff --git a/clips-vendor.spec b/clips-vendor.spec
index 1ae4b53..bad3eab 100644
--- a/clips-vendor.spec
+++ b/clips-vendor.spec
@@ -24,7 +24,6 @@ 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}
@@ -36,25 +35,34 @@ 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'
+# 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}
+
+# 将 ament_cmake_vendor_package cmake 模块解压到构建目录内的临时前缀,
+# 避免在 %prep 阶段向 /opt/ros(无写权限)写文件
+_ACVP_PREFIX="%{_builddir}/acvp_prefix"
+_ACVP_SHARE="${_ACVP_PREFIX}/share/ament_cmake_vendor_package/cmake"
+install -d "${_ACVP_SHARE}/templates"
+_ACVP_TMP=$(mktemp -d)
+tar xzf %{SOURCE1} -C "${_ACVP_TMP}"
+install -m 644 "${_ACVP_TMP}"/ament-cmake-vendor-package-1.3.14/cmake/ament_vendor.cmake \
+ "${_ACVP_SHARE}/"
+install -m 644 "${_ACVP_TMP}"/ament-cmake-vendor-package-1.3.14/cmake/templates/*.in \
+ "${_ACVP_SHARE}/templates/"
+install -m 644 "${_ACVP_TMP}"/ament-cmake-vendor-package-1.3.14/ament_cmake_vendor_package-extras.cmake \
+ "${_ACVP_SHARE}/"
+cat > "${_ACVP_SHARE}/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'
+cat > "${_ACVP_SHARE}/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)
@@ -63,24 +71,16 @@ if("${PACKAGE_FIND_VERSION}" VERSION_LESS_EQUAL "${PACKAGE_VERSION}")
endif()
endif()
EOF
-rm -rf "${_ACVP_DIR}"
+rm -rf "${_ACVP_TMP}"
-# 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 \
+cmake \
-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 \
+ -DCMAKE_PREFIX_PATH="${_ACVP_PREFIX};/opt/ros/%{ros_distro}" \
-DSETUPTOOLS_DEB_LAYOUT=OFF \
-DBUILD_TESTING=OFF -DTESTING=OFF -DCMAKE_SUPPRESS_REGENERATION=ON \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
..
make %{?_smp_mflags}