diff --git a/.gitignore b/.gitignore index 3257e85..f62c18f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ -libfreenect-*.tar.* +/libfreenect-v0.1.2.tar.bz2 +/libfreenect-de79349de52e0458da38f3eaa721f2ca4b45ff29.tar.gz +/libfreenect-a35642fefd533c6b21864cd3bab7fefb9f0e2f00.tar.gz +/libfreenect-9b671cd7210d16d330a88c7f4e80ce48f42d013e.tar.gz +/libfreenect-8d957924f8a82a235aaa44d8c455113f10c0373f.tar.bz2 +/libfreenect-b2043d02b66c9c59899bbf09cb1a13206e8fa10d.tar.gz +/libfreenect-baec1501c703c731f32eac2bf97c28c77b51fdd8.tar.gz +/libfreenect-ddf092cce09ab4bc97529827a061f1a54a046a17.tar.gz +/libfreenect-88166014859c09f6ad6a93f0862bdcc4e46dc87e.tar.gz diff --git a/0001-Build-libfreenect_cv-and-cvdemo-as-C-sources.patch b/0001-Build-libfreenect_cv-and-cvdemo-as-C-sources.patch new file mode 100644 index 0000000..73e9583 --- /dev/null +++ b/0001-Build-libfreenect_cv-and-cvdemo-as-C-sources.patch @@ -0,0 +1,66 @@ +From 9e98a0b11fddeabab6ef5e0915b96c950597e53e Mon Sep 17 00:00:00 2001 +From: Rich Mattes +Date: Sat, 26 May 2018 16:11:11 -0400 +Subject: [PATCH 1/2] Build libfreenect_cv and cvdemo as C++ sources + +Signed-off-by: Rich Mattes +--- + wrappers/opencv/CMakeLists.txt | 4 ++-- + wrappers/opencv/{cvdemo.c => cvdemo.cpp} | 0 + wrappers/opencv/{libfreenect_cv.c => libfreenect_cv.cpp} | 0 + wrappers/opencv/libfreenect_cv.h | 4 ++-- + 4 files changed, 4 insertions(+), 4 deletions(-) + rename wrappers/opencv/{cvdemo.c => cvdemo.cpp} (100%) + rename wrappers/opencv/{libfreenect_cv.c => libfreenect_cv.cpp} (100%) + +diff --git a/wrappers/opencv/CMakeLists.txt b/wrappers/opencv/CMakeLists.txt +index 0239075..bc5df19 100644 +--- a/wrappers/opencv/CMakeLists.txt ++++ b/wrappers/opencv/CMakeLists.txt +@@ -2,7 +2,7 @@ + # OpenCV Interface + ###################################################################################### + find_package(OpenCV REQUIRED) +-add_library (freenect_cv SHARED libfreenect_cv.c) ++add_library (freenect_cv SHARED libfreenect_cv.cpp) + set_target_properties (freenect_cv PROPERTIES + VERSION ${PROJECT_VER} + SOVERSION ${PROJECT_APIVER}) +@@ -16,7 +16,7 @@ install (TARGETS freenect_cv + install (FILES "libfreenect_cv.h" + DESTINATION ${PROJECT_INCLUDE_INSTALL_DIR}) + +-add_executable(freenect-cvdemo cvdemo.c) ++add_executable(freenect-cvdemo cvdemo.cpp) + target_link_libraries(freenect-cvdemo freenect freenect_sync freenect_cv ${OpenCV_LIBS}) + install (TARGETS freenect-cvdemo + DESTINATION bin) +diff --git a/wrappers/opencv/cvdemo.c b/wrappers/opencv/cvdemo.cpp +similarity index 100% +rename from wrappers/opencv/cvdemo.c +rename to wrappers/opencv/cvdemo.cpp +diff --git a/wrappers/opencv/libfreenect_cv.c b/wrappers/opencv/libfreenect_cv.cpp +similarity index 100% +rename from wrappers/opencv/libfreenect_cv.c +rename to wrappers/opencv/libfreenect_cv.cpp +diff --git a/wrappers/opencv/libfreenect_cv.h b/wrappers/opencv/libfreenect_cv.h +index b73b60c..55e3582 100644 +--- a/wrappers/opencv/libfreenect_cv.h ++++ b/wrappers/opencv/libfreenect_cv.h +@@ -1,11 +1,11 @@ + #pragma once + ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#include +- + IplImage *freenect_sync_get_depth_cv(int index); + IplImage *freenect_sync_get_rgb_cv(int index); + +-- +2.17.0 + diff --git a/0002-Fix-bugs-in-sync-library-error-handling.patch b/0002-Fix-bugs-in-sync-library-error-handling.patch new file mode 100644 index 0000000..f437b6b --- /dev/null +++ b/0002-Fix-bugs-in-sync-library-error-handling.patch @@ -0,0 +1,51 @@ +From db0e1825ff93133f3ca5735524d78279ede824db Mon Sep 17 00:00:00 2001 +From: Rich Mattes +Date: Sat, 26 May 2018 16:14:01 -0400 +Subject: [PATCH 2/2] Fix bugs in sync library error handling + +fnusb_open_subdevices checked for camera==NULL or res < 0 before +jumping to the failure case. If camera was NULL but res was not +0, the function would return 0 indicating success. This occurs +when a kinect is not plugged into the PC. Forcing res to be +negative when the camera == NULL case allows the failure to open +a device to propagate through an application. + +alloc_kinect in freenect_sync has a check for if freenect_open_device +fails, but the logic is incorrect. freenect_open_device returns 0 on +success and < 0 on error, so adding a check to see if the return is +< 0 corrects detection of the failure case. + +Signed-off-by: Rich Mattes +--- + src/usb_libusb10.c | 1 + + wrappers/c_sync/libfreenect_sync.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/usb_libusb10.c b/src/usb_libusb10.c +index 11de86a..614aeee 100644 +--- a/src/usb_libusb10.c ++++ b/src/usb_libusb10.c +@@ -465,6 +465,7 @@ FN_INTERNAL int fnusb_open_subdevices(freenect_device *dev, int index) + } + + if (res < 0 || camera == NULL) { ++ res = -1; + goto failure; + } + +diff --git a/wrappers/c_sync/libfreenect_sync.c b/wrappers/c_sync/libfreenect_sync.c +index 1b2e049..26a2261 100644 +--- a/wrappers/c_sync/libfreenect_sync.c ++++ b/wrappers/c_sync/libfreenect_sync.c +@@ -249,7 +249,7 @@ static int change_depth_format(sync_kinect_t *kinect, freenect_resolution res, f + static sync_kinect_t *alloc_kinect(int index) + { + sync_kinect_t *kinect = (sync_kinect_t*)malloc(sizeof(sync_kinect_t)); +- if (freenect_open_device(ctx, &kinect->dev, index)) { ++ if (freenect_open_device(ctx, &kinect->dev, index) < 0) { + free(kinect); + return NULL; + } +-- +2.17.0 + diff --git a/libfreenect-0.4.1-openni2.patch b/libfreenect-0.4.1-openni2.patch new file mode 100644 index 0000000..326621d --- /dev/null +++ b/libfreenect-0.4.1-openni2.patch @@ -0,0 +1,12 @@ +diff -up ./OpenNI2-FreenectDriver/CMakeLists.txt.openni2 ./OpenNI2-FreenectDriver/CMakeLists.txt +--- ./OpenNI2-FreenectDriver/CMakeLists.txt.openni2 2014-05-02 19:44:28.783577819 -0400 ++++ ./OpenNI2-FreenectDriver/CMakeLists.txt 2014-05-02 19:44:31.992726677 -0400 +@@ -10,8 +10,6 @@ set(CMAKE_CXX_FLAGS "-Wno-gnu-static-flo + + set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib/OpenNI2-FreenectDriver) + set_target_properties(FreenectDriver PROPERTIES +- VERSION ${PROJECT_VER} +- SOVERSION ${PROJECT_APIVER} + OUTPUT_NAME FreenectDriver) + + add_definitions(-DPROJECT_VER="${PROJECT_VER}") diff --git a/libfreenect-0.5.2-cmake30.patch b/libfreenect-0.5.2-cmake30.patch new file mode 100644 index 0000000..fa4f9ed --- /dev/null +++ b/libfreenect-0.5.2-cmake30.patch @@ -0,0 +1,43 @@ +diff -up ./wrappers/python/CMakeLists.txt.cmake30 ./wrappers/python/CMakeLists.txt +--- ./wrappers/python/CMakeLists.txt.cmake30 2015-01-26 22:01:37.000000000 -0500 ++++ ./wrappers/python/CMakeLists.txt 2016-02-21 11:19:40.995391145 -0500 +@@ -2,19 +2,18 @@ + # Python extension builder + ###################################################################################### + +-include(FindPythonInterp) +-include(FindPythonLibs) +- ++include(FindPkgConfig) ++pkg_check_modules(PYTHON python2) + find_program(CYTHON_EXECUTABLE cython) + + # Figure out installation path + execute_process(COMMAND +- ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(prefix='${CMAKE_INSTALL_PREFIX}')" ++ ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))" + OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE) + + # Figure out numpy include path + execute_process(COMMAND +- ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.get_include()" ++ ${PYTHON_EXECUTABLE} -c "import numpy; print (numpy.get_include())" + OUTPUT_VARIABLE NUMPY_INCLUDE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) + + # How to Cython the .pyx file +@@ -29,11 +28,13 @@ set_target_properties(cython_freenect PR + OUTPUT_NAME "freenect" + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + target_link_libraries(cython_freenect freenect_sync ${PYTHON_LIBRARIES}) +-include_directories(${PYTHON_INCLUDE_PATH} ../c_sync/ ${NUMPY_INCLUDE_PATH}) ++include_directories(${PYTHON_INCLUDE_DIRS} ../c_sync/ ${NUMPY_INCLUDE_PATH}) + + # Install the extension + install(TARGETS cython_freenect +- DESTINATION ${PYTHON_SITE_PACKAGES}) ++ ARCHIVE DESTINATION ${PYTHON_SITE_PACKAGES} ++ LIBRARY DESTINATION ${PYTHON_SITE_PACKAGES} ++ COMPONENT library) + + # TODO: decide on what to do with demo_ scripts and were to install + # them diff --git a/libfreenect-0.5.3-cpp11.patch b/libfreenect-0.5.3-cpp11.patch new file mode 100644 index 0000000..b20069b --- /dev/null +++ b/libfreenect-0.5.3-cpp11.patch @@ -0,0 +1,43 @@ +diff -up ./OpenNI2-FreenectDriver/src/ColorStream.hpp.cpp11 ./OpenNI2-FreenectDriver/src/ColorStream.hpp +--- ./OpenNI2-FreenectDriver/src/ColorStream.hpp.cpp11 2016-02-21 12:18:01.412029788 -0500 ++++ ./OpenNI2-FreenectDriver/src/ColorStream.hpp 2016-02-21 12:18:21.272807345 -0500 +@@ -13,9 +13,9 @@ namespace FreenectDriver + { + public: + // from NUI library & converted to radians +- static const float DIAGONAL_FOV = 73.9 * (M_PI / 180); +- static const float HORIZONTAL_FOV = 62 * (M_PI / 180); +- static const float VERTICAL_FOV = 48.6 * (M_PI / 180); ++ static constexpr float DIAGONAL_FOV = 73.9 * (M_PI / 180); ++ static constexpr float HORIZONTAL_FOV = 62 * (M_PI / 180); ++ static constexpr float VERTICAL_FOV = 48.6 * (M_PI / 180); + + private: + typedef std::map< OniVideoMode, std::pair > FreenectVideoModeMap; +diff -up ./OpenNI2-FreenectDriver/src/DepthStream.hpp.cpp11 ./OpenNI2-FreenectDriver/src/DepthStream.hpp +--- ./OpenNI2-FreenectDriver/src/DepthStream.hpp.cpp11 2016-02-21 12:22:59.048682374 -0500 ++++ ./OpenNI2-FreenectDriver/src/DepthStream.hpp 2016-02-21 12:23:27.387791861 -0500 +@@ -17,9 +17,9 @@ namespace FreenectDriver + { + public: + // from NUI library and converted to radians +- static const float DIAGONAL_FOV = 70 * (M_PI / 180); +- static const float HORIZONTAL_FOV = 58.5 * (M_PI / 180); +- static const float VERTICAL_FOV = 45.6 * (M_PI / 180); ++ static constexpr float DIAGONAL_FOV = 70 * (M_PI / 180); ++ static constexpr float HORIZONTAL_FOV = 58.5 * (M_PI / 180); ++ static constexpr float VERTICAL_FOV = 45.6 * (M_PI / 180); + // from DepthKinectStream.cpp + static const int MAX_VALUE = 10000; + static const unsigned long long GAIN_VAL = 42; +@@ -28,8 +28,8 @@ namespace FreenectDriver + static const unsigned long long PARAM_COEFF_VAL = 4; + static const unsigned long long SHIFT_SCALE_VAL = 10; + static const unsigned long long ZERO_PLANE_DISTANCE_VAL = 120; +- static const double ZERO_PLANE_PIXEL_SIZE_VAL = 0.10520000010728836; +- static const double EMITTER_DCMOS_DISTANCE_VAL = 7.5; ++ static constexpr double ZERO_PLANE_PIXEL_SIZE_VAL = 0.10520000010728836; ++ static constexpr double EMITTER_DCMOS_DISTANCE_VAL = 7.5; + + private: + typedef std::map< OniVideoMode, std::pair > FreenectDepthModeMap; diff --git a/libfreenect-0.5.3-noabort.patch b/libfreenect-0.5.3-noabort.patch new file mode 100644 index 0000000..67e0eba --- /dev/null +++ b/libfreenect-0.5.3-noabort.patch @@ -0,0 +1,18 @@ +diff -up ./wrappers/cpp/cppview.cpp.noabort ./wrappers/cpp/cppview.cpp +--- ./wrappers/cpp/cppview.cpp.noabort 2016-02-21 11:03:00.653334752 -0500 ++++ ./wrappers/cpp/cppview.cpp 2016-02-21 11:04:51.022655752 -0500 +@@ -348,7 +348,13 @@ void *gl_threadfunc(void *arg) + } + + int main(int argc, char **argv) { +- device = &freenect.createDevice(0); ++ try { ++ device = &freenect.createDevice(0); ++ } ++ catch (std::exception &e) { ++ std::cerr << std::endl << "Exception starting Freenect device : " << e.what() << std::endl; ++ exit(1); ++ } + device->startVideo(); + device->startDepth(); + gl_threadfunc(NULL); diff --git a/libfreenect-0.5.5-py3.patch b/libfreenect-0.5.5-py3.patch new file mode 100644 index 0000000..b9140f3 --- /dev/null +++ b/libfreenect-0.5.5-py3.patch @@ -0,0 +1,46 @@ +diff -up ./src/fwfetcher.py.py3 ./src/fwfetcher.py +--- ./src/fwfetcher.py.py3 2016-08-28 09:54:21.000000000 -0400 ++++ ./src/fwfetcher.py 2016-12-29 16:52:00.569437210 -0500 +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python2 +- + from __future__ import absolute_import, division, print_function + + import hashlib +@@ -10,10 +8,10 @@ import sys + import time + import zipfile + +-try: ++if sys.version_info[0] > 2: + # Python 3 + from urllib.request import Request, URLError, urlopen +-except ImportError: ++else: + # Python 2 + from urllib2 import Request, URLError, urlopen + +diff -up ./wrappers/python/CMakeLists.txt.py3 ./wrappers/python/CMakeLists.txt +--- ./wrappers/python/CMakeLists.txt.py3 2016-08-28 09:54:21.000000000 -0400 ++++ ./wrappers/python/CMakeLists.txt 2016-12-29 16:49:58.970814941 -0500 +@@ -50,7 +50,7 @@ endif() + # Figure out installation path + execute_process(COMMAND + ${PYTHON${Python_BUILD_VERSION}_EXECUTABLE} +- -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(prefix='${CMAKE_INSTALL_PREFIX}'))" ++ -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))" + OUTPUT_VARIABLE PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE) + + # Figure out numpy include path +@@ -84,7 +84,10 @@ target_include_directories(cython${Pytho + + # Install the extension + install(TARGETS cython${Python_BUILD_VERSION}_freenect +- DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES}) ++ DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES} ++ ARCHIVE DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES} ++ LIBRARY DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES} ++ ) + + # TODO: decide on what to do with demo_ scripts and were to install + # them diff --git a/libfreenect-0.7.5-notimestamp.patch b/libfreenect-0.7.5-notimestamp.patch deleted file mode 100644 index 54b6a6b..0000000 --- a/libfreenect-0.7.5-notimestamp.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up libfreenect-0.7.5/doc/Doxyfile.tstamp libfreenect-0.7.5/doc/Doxyfile ---- libfreenect-0.7.5/doc/Doxyfile.tstamp 2024-01-06 17:57:12.000000000 +0100 -+++ libfreenect-0.7.5/doc/Doxyfile 2025-11-24 23:51:39.844958326 +0100 -@@ -875,7 +875,7 @@ HTML_COLORSTYLE_GAMMA = 80 - # page will contain the date and time when the page was generated. Setting - # this to NO can help when comparing the output of multiple runs. - --HTML_TIMESTAMP = YES -+HTML_TIMESTAMP = NO - - # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, - # files or namespaces will be aligned in HTML using tables. If set to diff --git a/libfreenect-0.7.5-py3.patch b/libfreenect-0.7.5-py3.patch deleted file mode 100644 index e938de1..0000000 --- a/libfreenect-0.7.5-py3.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff -up libfreenect-0.7.5/src/fwfetcher.py.py3 libfreenect-0.7.5/src/fwfetcher.py ---- libfreenect-0.7.5/src/fwfetcher.py.py3 2024-01-06 17:57:12.000000000 +0100 -+++ libfreenect-0.7.5/src/fwfetcher.py 2025-11-25 00:20:24.085725755 +0100 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python3 - - from __future__ import absolute_import, division, print_function - -@@ -10,10 +10,10 @@ import sys - import time - import zipfile - --try: -+if sys.version_info[0] > 2: - # Python 3 - from urllib.request import Request, URLError, urlopen --except ImportError: -+else: - # Python 2 - from urllib2 import Request, URLError, urlopen - -diff -up libfreenect-0.7.5/wrappers/python/CMakeLists.txt.py3 libfreenect-0.7.5/wrappers/python/CMakeLists.txt ---- libfreenect-0.7.5/wrappers/python/CMakeLists.txt.py3 2024-01-06 17:57:12.000000000 +0100 -+++ libfreenect-0.7.5/wrappers/python/CMakeLists.txt 2025-11-11 09:48:50.045686564 +0100 -@@ -19,10 +19,7 @@ find_program(CYTHON_EXECUTABLE cython) - - # Figure out installation path - # CMake populates this var automatically but we need to specify prefix --execute_process(COMMAND -- ${Python${Python_BUILD_VERSION}_EXECUTABLE} -- -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=False, standard_lib=False, prefix='${CMAKE_INSTALL_PREFIX}'))" -- OUTPUT_VARIABLE Python${Python_BUILD_VERSION}_SITELIB OUTPUT_STRIP_TRAILING_WHITESPACE) -+set(Python${Python_BUILD_VERSION}_SITELIB "${Python${Python_BUILD_VERSION}_SITEARCH}") - - # Figure out numpy include path - # todo: CMake >= 3.14 populates this var automatically when using COMPONENTS NumPy -@@ -73,7 +70,10 @@ target_include_directories(cython${Pytho - - # Install the extension - install(TARGETS cython${Python_BUILD_VERSION}_freenect -- DESTINATION ${Python${Python_BUILD_VERSION}_SITELIB}) -+ DESTINATION ${Python${Python_BUILD_VERSION}_SITELIB} -+ ARCHIVE DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES} -+ LIBRARY DESTINATION ${PYTHON${Python_BUILD_VERSION}_SITE_PACKAGES} -+ ) - - # TODO: decide on what to do with demo_ scripts and were to install - # them -diff -up libfreenect-0.7.5/wrappers/python/setup.py.py3 libfreenect-0.7.5/wrappers/python/setup.py ---- libfreenect-0.7.5/wrappers/python/setup.py.py3 2024-01-06 17:57:12.000000000 +0100 -+++ libfreenect-0.7.5/wrappers/python/setup.py 2025-11-11 09:48:50.045794539 +0100 -@@ -1,6 +1,6 @@ - #!/usr/bin/env python --from distutils.core import setup --from distutils.extension import Extension -+from setuptools import setup -+from setuptools import Extension - import re - import numpy as np - diff --git a/libfreenect-openni2.patch b/libfreenect-openni2.patch deleted file mode 100644 index 36dc2da..0000000 --- a/libfreenect-openni2.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up libfreenect-0.6.1/OpenNI2-FreenectDriver/CMakeLists.txt.openni2 libfreenect-0.6.1/OpenNI2-FreenectDriver/CMakeLists.txt ---- libfreenect-0.6.1/OpenNI2-FreenectDriver/CMakeLists.txt.openni2 2020-05-25 11:14:11.573900769 +0200 -+++ libfreenect-0.6.1/OpenNI2-FreenectDriver/CMakeLists.txt 2020-05-25 11:22:13.057933733 +0200 -@@ -12,8 +12,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} - - set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib/OpenNI2-FreenectDriver) - set_target_properties(FreenectDriver PROPERTIES -- VERSION ${PROJECT_VER} -- SOVERSION ${PROJECT_APIVER} - OUTPUT_NAME FreenectDriver) - - add_definitions(-DPROJECT_VER="${PROJECT_VER}") diff --git a/libfreenect.spec b/libfreenect.spec index d3aa0e9..de708ae 100644 --- a/libfreenect.spec +++ b/libfreenect.spec @@ -1,33 +1,39 @@ -Name: libfreenect -Version: 0.7.5 -Release: 4%{?dist} -Summary: Device driver for the Kinect -# Core libfreenect is available as Apache-2.0 OR GPL-2.0-only -# OpenNI driver is available as Apache-2.0 -# fakenect/parson.{c,h} is MIT -# fwfetcher.py is BSD-2-Clause -License: Apache-2.0 AND (GPL-2.0-only OR Apache-2.0) AND MIT AND BSD-2-Clause -URL: https://github.com/OpenKinect/ +%global commit 88166014859c09f6ad6a93f0862bdcc4e46dc87e +%global shortcommit %(c=%{commit}; echo ${c:0:7}) -Source0: https://github.com/OpenKinect/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz +%{?filter_setup: +%filter_provides_in %{python_sitearch}/.*\.so$ +%filter_setup +} + +Name: libfreenect +Version: 0.5.7 +Release: 7%{?dist} +Summary: Device driver for the Kinect +# Core libfreenect is available as ASL 2.0 OR GPLv2 +# OpenNI driver is available as ASL 2.0 +License: ASL 2.0 and (GPLv2 or ASL 2.0) +URL: http://www.openkinect.org/ + +Source0: https://github.com/OpenKinect/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz # Edit udev rule to only allow access to the device from the video group Patch0: %{name}-0.5.7-videogroup.patch # Freenect openni driver is a plugin lib, and doesn't need soversion symlinks -Patch1: %{name}-openni2.patch +Patch1: %{name}-0.4.1-openni2.patch # Allow for proper libdir Patch3: %{name}-0.4.2-libdir.patch # BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1143912 Patch4: secarch.patch # Fix the installation path for python libs -Patch5: %{name}-0.7.5-py3.patch -# Avoid timestamps in generated docs -Patch6: %{name}-0.7.5-notimestamp.patch - -# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval -ExcludeArch: %{ix86} +Patch7: %{name}-0.5.5-py3.patch +# Fixes to OpenCV support +# https://github.com/OpenKinect/libfreenect/pull/555 +Patch8: 0001-Build-libfreenect_cv-and-cvdemo-as-C-sources.patch +Patch9: 0002-Fix-bugs-in-sync-library-error-handling.patch BuildRequires: gcc-c++ -BuildRequires: cmake3 +BuildRequires: cmake +BuildRequires: Cython BuildRequires: doxygen BuildRequires: freeglut-devel BuildRequires: libusb1-devel @@ -46,6 +52,7 @@ libfreenect is a free and open source library that provides access to the Kinect device. Currently, the library supports the RGB webcam, the depth image, the LED, and the tilt motor. + %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} @@ -65,8 +72,6 @@ developing applications that use %{name}. %package fakenect Summary: Library to play back recorded data for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} -# upstream commit f1bb6e7fbe347754fbfc4613bf43000ef0b0c2b2 -Provides: bundled(parson) %description fakenect Fakenect consists of a "record" program to save dumps from the kinect sensor @@ -86,6 +91,7 @@ library for OpenCV development. Summary: Python 3 bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: python3-numpy +%{?python_provide:%python_provide python3-%{name}} %description -n python3-%{name} The %{name}-python package contains python 3 bindings for %{name} @@ -99,18 +105,23 @@ OpenNI2 driver. It allows OpenNI2 to use Kinect hardware on Linux and OSX. It was originally a separate project but is now distributed with libfreenect. %prep -%setup -q -rm -rv platform/windows +%setup -qn %{name}-%{commit} +rm -rf platform/windows -%patch -P 0 -p0 -b .videogroup -%patch -P 1 -p1 -b .openni2 -%patch -P 3 -p0 -b .libdir -%patch -P 4 -p1 -b .secarch -%patch -P 5 -p1 -b .py3 -%patch -P 6 -p1 -b .tstamp +%patch0 -p0 -b .videogroup +%patch1 -p0 -b .openni2 +%patch3 -p0 -b .libdir +%patch4 -p1 -b .secarch +%patch7 -p1 -b .py3 +%patch8 -p1 +%patch9 -p1 %build -%cmake \ +mkdir build +pushd build +# FTBFS with opencv 3.4.1: +# https://bugzilla.redhat.com/show_bug.cgi?id=1551748 +%cmake .. \ -DBUILD_AUDIO=ON \ -DBUILD_C_SYNC=ON \ -DBUILD_CV=ON \ @@ -122,27 +133,28 @@ rm -rv platform/windows -DBUILD_PYTHON3=ON \ -DBUILD_OPENNI2_DRIVER=ON -%cmake_build +make %{?_smp_mflags} VERBOSE=1 +popd pushd doc doxygen Doxyfile popd %install -%cmake_install +rm -rf %{buildroot} +make -C build install DESTDIR=%{buildroot} # Install the kinect udev rule -mkdir -p %{buildroot}%{_udevrulesdir} +mkdir -p %{buildroot}/lib/udev/rules.d mkdir -p %{buildroot}%{_libdir}/openni2 -install -p -m 0644 platform/linux/udev/51-kinect.rules %{buildroot}%{_udevrulesdir} +install -p -m 0644 platform/linux/udev/51-kinect.rules %{buildroot}/lib/udev/rules.d # Delete libtool archives find %{buildroot} -name '*.la' -exec rm -f {} ';' # Move the fwfetcher script to the correct datadir mkdir -p %{buildroot}%{_datadir}/%{name} -mv %{buildroot}%{_datadir}/fwfetcher.py %{buildroot}%{_datadir}/%{name} -chmod +x %{buildroot}%{_datadir}/%{name}/fwfetcher.py +mv %{buildroot}%{_datadir}/fwfetcher.py %{buildroot}%{_datadir}/%{name} # Move openni plugin: rhbz#1094787 mv %{buildroot}%{_libdir}/OpenNI2-FreenectDriver %{buildroot}%{_libdir}/openni2/Drivers @@ -150,226 +162,43 @@ mv %{buildroot}%{_libdir}/OpenNI2-FreenectDriver %{buildroot}%{_libdir}/openni2/ %files %license APACHE20 GPL2 %doc README.md CONTRIB -%{_udevrulesdir}/51-kinect.rules -%{_libdir}/libfreenect.so.0{,.*} -%{_libdir}/libfreenect_sync.so.0{,.*} -%{_bindir}/freenect-camtest -%{_bindir}/freenect-chunkview -%{_bindir}/freenect-cpp_pcview -%{_bindir}/freenect-cppview -%{_bindir}/freenect-glpclview -%{_bindir}/freenect-glview -%{_bindir}/freenect-hiview -%{_bindir}/freenect-micview -%{_bindir}/freenect-regtest -%{_bindir}/freenect-regview -%{_bindir}/freenect-tiltdemo -%{_bindir}/freenect-wavrecord +/lib/udev/rules.d/* +%{_libdir}/libfreenect.so.* +%{_libdir}/libfreenect_sync.so.* +%exclude %{_bindir}/freenect-cvdemo +%exclude %{_bindir}/fakenect +%{_bindir}/freenect-* %{_datadir}/%{name} %files opencv %{_bindir}/freenect-cvdemo -%{_libdir}/libfreenect_cv.so.0{,.*} +%{_libdir}/libfreenect_cv.so.* %files devel %doc doc/html %doc examples/*.c wrappers/cpp/cppview.cpp %{_includedir}/libfreenect -%{_libdir}/libfreenect.so -%{_libdir}/libfreenect_cv.so -%{_libdir}/libfreenect_sync.so -%{_libdir}/pkgconfig/libfreenect.pc -%{_libdir}/fakenect/libfakenect.so +%{_libdir}/*.so +%{_libdir}/pkgconfig/* +%{_libdir}/fakenect/*.so %files static -%{_libdir}/libfreenect.a -%{_libdir}/libfreenect_sync.a +%{_libdir}/*.a %files -n python3-%{name} -%{python3_sitearch}/freenect.so +%{python3_sitearch}/*.so %files fakenect %dir %{_libdir}/fakenect %{_bindir}/fakenect-record -%{_libdir}/fakenect/libfakenect.so.0{,.*} +%{_libdir}/fakenect/*.so.* %{_bindir}/fakenect -%{_mandir}/man1/fakenect-record.1.* -%{_mandir}/man1/fakenect.1.* +%{_mandir}/man1/fakenect*1.* %files openni -%license APACHE20 GPL2 %{_libdir}/openni2 %changelog -* Fri Jan 02 2026 Marcin Juszkiewicz - 0.7.5-4 -- Add OpenNI2 driver on riscv64 - -* Wed Dec 10 2025 Nicolas Chauvet - 0.7.5-3 -- Rebuilt for OpenCV-4.12 - -* Mon Nov 24 2025 Dominik Mierzejewski - 0.7.5-2 -- fixed duplicate files warning -- made file lists more explicit -- corrected License tag -- added missing Provides: for bundled parson -- added executable bit to fwfetcher.py script and fixed shebang -- avoid timestamps in generated docs for reproducibility - -* Tue Nov 11 2025 Dominik Mierzejewski - 0.7.5-1 -- Updated to 0.7.5 -- Dropped obsolete patches -- Updated URL - -* Thu Jul 24 2025 Fedora Release Engineering - 0.7.0-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed Jun 04 2025 Python Maint - 0.7.0-15 -- Rebuilt for Python 3.14 - -* Tue Feb 04 2025 Sérgio Basto - 0.7.0-14 -- Rebuild for opencv-4.11.0 - -* Fri Jan 17 2025 Fedora Release Engineering - 0.7.0-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Dec 24 2024 Orion Poplawski - 0.7.0-12 -- Rebuild with numpy 2.x (rhbz#2333776) - -* Thu Jul 25 2024 Sérgio Basto - 0.7.0-11 -- Rebuild for opencv 4.10.0 - -* Thu Jul 18 2024 Fedora Release Engineering - 0.7.0-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sun Jun 09 2024 Python Maint - 0.7.0-9 -- Rebuilt for Python 3.13 - -* Mon Feb 05 2024 Sérgio Basto - 0.7.0-8 -- Rebuild for opencv 4.9.0 - -* Thu Jan 25 2024 Fedora Release Engineering - 0.7.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 0.7.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jan 04 2024 Florian Weimer - 0.7.0-5 -- Fix C compatibility issue in Cython wrapper - -* Mon Aug 07 2023 Rich Mattes - 0.7.0-4 -- Fix build error with cython 3 - -* Mon Aug 07 2023 Sérgio Basto - 0.7.0-4 -- Rebuild for opencv 4.8.0 - -* Thu Jul 20 2023 Fedora Release Engineering - 0.7.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jul 13 2023 Rich Mattes - 0.7.0-2 -- Updates for Python 3.12 compatibility -- Resolves: rhbz#2220025 - -* Sat Jun 17 2023 Python Maint - 0.7.0-2 -- Rebuilt for Python 3.12 - -* Thu May 04 2023 Nicolas Chauvet - 0.7.0-1 -- Update to 0.7.0 - -* Thu Jan 19 2023 Fedora Release Engineering - 0.6.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Jan 16 2023 Sérgio Basto - 0.6.4-2 -- Rebuild for opencv 4.7.0 - -* Sat Sep 24 2022 Phil Wyett - 0.6.4-1 -- New upstream version 0.6.4 -- Remove old globals - -* Thu Jul 21 2022 Fedora Release Engineering - 0.6.2-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jun 21 2022 Sérgio Basto - 0.6.2-8 -- Rebuilt for opencv 4.6.0 - -* Mon Jun 13 2022 Python Maint - 0.6.2-7 -- Rebuilt for Python 3.11 - -* Wed Jan 26 2022 Phil Wyett - 0.6.2-6 -- Fix FTBFS. Update cmake related OpenGL GLVND and GLUT. - -* Thu Jan 20 2022 Fedora Release Engineering - 0.6.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Sep 01 2021 Phil Wyett - 0.6.2-4 -- Drop not needed Cython BuildRequires -- Resolves: #1984287 - -* Thu Jul 22 2021 Fedora Release Engineering - 0.6.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 0.6.2-2 -- Rebuilt for Python 3.10 - -* Thu Mar 04 2021 Nicolas Chauvet - 0.6.2-1 -- Update to 0.6.2 - -* Tue Jan 26 2021 Fedora Release Engineering - 0.6.1-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Thu Oct 22 2020 Nicolas Chauvet - 0.6.1-7 -- Rebuilt for OpenCV - -* Mon Aug 03 2020 Leigh Scott - 0.6.1-6 -- Fix unversioned python -- Switch to new cmake macros - -* Sat Aug 01 2020 Fedora Release Engineering - 0.6.1-5 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue Jul 28 2020 Fedora Release Engineering - 0.6.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Thu Jun 04 2020 Nicolas Chauvet - 0.6.1-3 -- Rebuilt for OpenCV 4.3 - -* Tue May 26 2020 Miro Hrončok - 0.6.1-2 -- Rebuilt for Python 3.9 - -* Mon May 25 2020 Nicolas Chauvet - 0.6.1-1 -- Update to 0.6.1 - -* Tue Mar 03 2020 Nicolas Chauvet - 0.6.0-3 -- Update to new ABI - -* Fri Feb 28 2020 Nicolas Chauvet - 0.6.0-2 -- Rebuilt to keep previous ABI - -* Fri Feb 28 2020 Nicolas Chauvet - 0.6.0-1 -- Update to 0.6.0 -- Drop Minor in APIVER (SONAME change) - -* Wed Feb 19 2020 Leigh Scott - 0.5.7-15 -- Rebuilt for OpenCV 4.2 - -* Wed Jan 29 2020 Fedora Release Engineering - 0.5.7-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Tue Jan 28 2020 Nicolas Chauvet - 0.5.7-13 -- Rebuilt for OpenCV 4.2 - -* Mon Jan 27 2020 Nicolas Chauvet - 0.5.7-12 -- Fix for OpenCV4 - -* Sun Dec 29 2019 Nicolas Chauvet - 0.5.7-11 -- Rebuilt for opencv4 - -* Tue Sep 17 2019 Gwyn Ciesla - 0.5.7-9 -- Rebuilt for new freeglut - -* Mon Aug 19 2019 Miro Hrončok - 0.5.7-8 -- Rebuilt for Python 3.8 - * Thu Jul 25 2019 Fedora Release Engineering - 0.5.7-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/secarch.patch b/secarch.patch index 4bdca1e..0c7308f 100644 --- a/secarch.patch +++ b/secarch.patch @@ -1,7 +1,6 @@ -Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h -=================================================================== ---- /dev/null -+++ libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h +diff -urN libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h +--- libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h 1970-01-01 01:00:00.000000000 +0100 ++++ libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-ppc/OniPlatformLinux-PPC.h 2014-09-18 11:54:01.405363509 +0200 @@ -0,0 +1,41 @@ +/***************************************************************************** +* * @@ -44,10 +43,9 @@ Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33 + +#endif //_ONI_PLATFORM_LINUX_PPC_H_ + -Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h -=================================================================== ---- /dev/null -+++ libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h +diff -urN libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h +--- libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h 1970-01-01 01:00:00.000000000 +0100 ++++ libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-s390/OniPlatformLinux-s390.h 2014-09-18 11:55:06.169556389 +0200 @@ -0,0 +1,42 @@ +/***************************************************************************** +* * @@ -91,10 +89,9 @@ Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33 + +#endif //_ONI_PLATFORM_LINUX_s390_H_ + -Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h -=================================================================== ---- libfreenect-0.7.5.orig/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h -+++ libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h +diff -urN libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h +--- libfreenect/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h 2014-09-18 11:51:35.428923550 +0200 ++++ libfreenect.new/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/OniPlatform.h 2014-09-18 11:52:50.242149667 +0200 @@ -27,6 +27,8 @@ #define ONI_PLATFORM_LINUX_ARM 3 #define ONI_PLATFORM_MACOSX 4 @@ -104,57 +101,14 @@ Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33 #if (defined _WIN32) # ifndef RC_INVOKED -@@ -41,6 +43,12 @@ +@@ -41,6 +43,10 @@ # include "Linux-x86/OniPlatformLinux-x86.h" #elif (__linux__ && (__arm__ || __aarch64__)) # include "Linux-Arm/OniPlatformLinux-Arm.h" +#elif (__linux__ && (__powerpc__ || __powerpc64__)) +# include "Linux-ppc/OniPlatformLinux-PPC.h" -+#elif (__linux__ && (__riscv)) -+# include "Linux-riscv/OniPlatformLinux-RISCV.h" +#elif (__linux__ && (__s390__ || __s390x__ )) +# include "Linux-s390/OniPlatformLinux-s390.h" #elif _ARC # include "ARC/OniPlaformARC.h" #elif (__APPLE__) -Index: libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-riscv/OniPlatformLinux-RISCV.h -=================================================================== ---- /dev/null -+++ libfreenect-0.7.5/OpenNI2-FreenectDriver/extern/OpenNI-Linux-x64-2.2.0.33/Include/Linux-riscv/OniPlatformLinux-RISCV.h -@@ -0,0 +1,36 @@ -+/***************************************************************************** -+* * -+* OpenNI 2.x Alpha * -+* Copyright (C) 2012 PrimeSense Ltd. * -+* * -+* This file is part of OpenNI. * -+* * -+* Licensed under the Apache License, Version 2.0 (the "License"); * -+* you may not use this file except in compliance with the License. * -+* You may obtain a copy of the License at * -+* * -+* http://www.apache.org/licenses/LICENSE-2.0 * -+* * -+* Unless required by applicable law or agreed to in writing, software * -+* distributed under the License is distributed on an "AS IS" BASIS, * -+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * -+* See the License for the specific language governing permissions and * -+* limitations under the License. * -+* * -+*****************************************************************************/ -+#ifndef _ONI_PLATFORM_LINUX_RISCV_H_ -+#define _ONI_PLATFORM_LINUX_RISCV_H_ -+ -+// Start with Linux-x86, and override what's different -+#include "../Linux-x86/OniPlatformLinux-x86.h" -+ -+//--------------------------------------------------------------------------- -+// Platform Basic Definition -+//--------------------------------------------------------------------------- -+#undef ONI_PLATFORM -+#undef ONI_PLATFORM_STRING -+#define ONI_PLATFORM ONI_PLATFORM_LINUX_RISCV -+#define ONI_PLATFORM_STRING "Linux-RISCV" -+ -+#endif //_ONI_PLATFORM_LINUX_RISCV_H_ -+ diff --git a/sources b/sources index 4bba409..8f88b39 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libfreenect-0.7.5.tar.gz) = 6ba9ba632d9021b84a8c137837226fadc6e0e091cf89bf092e8ee805610c227c31da95b50c05d5882357cb80d7e4275693d13d1511eb2eb45f15ffffc2d549bf +SHA512 (libfreenect-88166014859c09f6ad6a93f0862bdcc4e46dc87e.tar.gz) = d4f54deb36381234fd85cfbf4b08e755335aaca9abdec3a370cf465ce5db161b2f7c23ba4a3159b653ae8ff8504691c3982e2601137a40e1ba1c9ae4841ff832