diff options
Diffstat (limited to 'openni2-camera.spec')
| -rw-r--r-- | openni2-camera.spec | 70 |
1 files changed, 63 insertions, 7 deletions
diff --git a/openni2-camera.spec b/openni2-camera.spec index 699ea0b..7c08d23 100644 --- a/openni2-camera.spec +++ b/openni2-camera.spec @@ -1,14 +1,17 @@ %define ros_distro humble %define RosPkgName openni2-camera %define src_version 2.0.3-1 +%define openni2_version 2.2.0.33 Name: ros-%{ros_distro}-%{RosPkgName} Version: 2.0.3 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Drivers for the Asus Xtion and Primesense Devices License: BSD URL: https://github.com/ros-drivers/openni2_camera/tree/iron Source0: %{RosPkgName}-%{src_version}.tar.gz +Source1: OpenNI2-%{openni2_version}.tar.gz +Patch0: openni2-aarch64-support.patch %global debug_package %{nil} %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') @@ -16,6 +19,8 @@ Source0: %{RosPkgName}-%{src_version}.tar.gz %global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$ BuildRequires: cmake +BuildRequires: libusbx-devel +BuildRequires: systemd-devel BuildRequires: ros-%{ros_distro}-ament-cmake BuildRequires: ros-%{ros_distro}-builtin-interfaces BuildRequires: ros-%{ros_distro}-camera-info-manager @@ -27,7 +32,6 @@ BuildRequires: ros-%{ros_distro}-rosidl-default-generators BuildRequires: ros-%{ros_distro}-rosidl-default-runtime BuildRequires: ros-%{ros_distro}-sensor-msgs BuildRequires: pkgconfig -BuildRequires: libopenni2-dev Requires: ros-%{ros_distro}-ros-workspace Requires: ros-%{ros_distro}-ament-cmake @@ -39,23 +43,52 @@ Requires: ros-%{ros_distro}-rclcpp Requires: ros-%{ros_distro}-rclcpp-components Requires: ros-%{ros_distro}-rosidl-default-runtime Requires: ros-%{ros_distro}-sensor-msgs -Requires: libopenni2-dev +Requires: libusbx +Requires: systemd-libs -Provides: %{name}-devel = %{version}-%{release} -Provides: %{name}-doc = %{version}-%{release} -Provides: %{name}-runtime = %{version}-%{release} +Provides: libopenni2-devel = %{openni2_version} +Provides: libopenni2-dev = %{openni2_version} %description Drivers for the Asus Xtion and Primesense Devices. For using a kinect with ROS, try the %prep -%autosetup -n %{RosPkgName}-%{src_version} +%setup -q -n %{RosPkgName}-%{src_version} -a1 +cd OpenNI2-%{openni2_version} +patch -p1 < %{_sourcedir}/openni2-aarch64-support.patch +cd .. %build [ -f /opt/ros/%{ros_distro}/setup.sh ] && source /opt/ros/%{ros_distro}/setup.sh || 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} + +# Build vendored OpenNI2 SDK (libopenni2 not available in openEuler repos) +cd OpenNI2-%{openni2_version} +make Source/Core %{?_smp_mflags} +OPENNI2_PREFIX=%{_builddir}/openni2_install +mkdir -p $OPENNI2_PREFIX/lib $OPENNI2_PREFIX/include/openni2 $OPENNI2_PREFIX/lib/pkgconfig +cp Bin/*/Release/libOpenNI2.so $OPENNI2_PREFIX/lib/ +cp Include/*.h $OPENNI2_PREFIX/include/openni2/ +cat > $OPENNI2_PREFIX/lib/pkgconfig/libopenni2.pc << PCEOF +prefix=$OPENNI2_PREFIX +exec_prefix=\${prefix} +libdir=\${exec_prefix}/lib +includedir=\${prefix}/include/openni2 + +Name: libopenni2 +Description: OpenNI2 framework +Version: %{openni2_version} +Libs: -L\${libdir} -lOpenNI2 +Cflags: -I\${includedir} +PCEOF +cp $OPENNI2_PREFIX/lib/pkgconfig/libopenni2.pc $OPENNI2_PREFIX/lib/pkgconfig/openni2.pc +export PKG_CONFIG_PATH=$OPENNI2_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH +export LD_LIBRARY_PATH=$OPENNI2_PREFIX/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +cd .. + +# Build openni2_camera ROS package cd openni2_camera mkdir -p .obj && cd .obj %cmake3 \ @@ -76,9 +109,32 @@ cd openni2_camera cd .obj make install DESTDIR=%{buildroot} +# Install vendored OpenNI2 library and headers +cd ../.. +mkdir -p %{buildroot}/%{_libdir} +mkdir -p %{buildroot}/%{_includedir}/openni2 +cp OpenNI2-%{openni2_version}/Bin/*/Release/libOpenNI2.so %{buildroot}/%{_libdir}/ +cp OpenNI2-%{openni2_version}/Include/*.h %{buildroot}/%{_includedir}/openni2/ + +# Install OpenNI2 drivers if available +mkdir -p %{buildroot}/%{_libdir}/OpenNI2/Drivers +for drv in OpenNI2-%{openni2_version}/Bin/*/Release/libPS*.so \ + OpenNI2-%{openni2_version}/Bin/*/Release/libOniFile.so \ + OpenNI2-%{openni2_version}/Bin/*/Release/libDummyDevice.so; do + [ -f "$drv" ] && cp "$drv" %{buildroot}/%{_libdir}/OpenNI2/Drivers/ || true +done + %files /opt/ros/%{ros_distro} +%{_libdir}/libOpenNI2.so +%{_libdir}/OpenNI2 +%{_includedir}/openni2 %changelog +* Thu Oct 22 2026 ai-importer <ai-importer@openeuler.org> - 2.0.3-2 +- Vendor OpenNI2 SDK (libopenni2 not available in openEuler) +- Add aarch64 platform support to OpenNI2 build system +- Replace libopenni2-dev BuildRequires/Requires with vendored library + * Thu Oct 22 2026 ai-importer <ai-importer@openeuler.org> - 2.0.3-1 - Initial import (ROS batch) |
