[openni-primesense] New package: OpenNI driver for PrimeSense and Kinect cameras

Tim Niemueller timn at fedoraproject.org
Thu Mar 3 13:50:07 UTC 2011


commit b7176ccb49114ab0f266d5c214905a6b7d02dc54
Author: Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
Date:   Thu Mar 3 14:49:41 2011 +0100

    New package: OpenNI driver for PrimeSense and Kinect cameras

 .gitignore                                       |    1 +
 openni-primesense-5.0.0.25-extlibs.patch         |   12 ++
 openni-primesense-5.0.0.25-fedora-buildsys.patch |  218 ++++++++++++++++++++++
 openni-primesense-55-primesense-usb.rules        |    9 +
 openni-primesense.spec                           |  116 ++++++++++++
 sources                                          |    1 +
 6 files changed, 357 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..7a052b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/openni-primesense-5.0.0.25-git894cea01.tar.gz
diff --git a/openni-primesense-5.0.0.25-extlibs.patch b/openni-primesense-5.0.0.25-extlibs.patch
new file mode 100644
index 0000000..b2a265e
--- /dev/null
+++ b/openni-primesense-5.0.0.25-extlibs.patch
@@ -0,0 +1,12 @@
+diff -urN openni-primesense-5.0.0.25-git894cea01/Source/XnFormats/XnStreamCompression.h openni-primesense-5.0.0.25-git894cea01.extlibs/Source/XnFormats/XnStreamCompression.h
+--- openni-primesense-5.0.0.25-git894cea01/Source/XnFormats/XnStreamCompression.h	2011-01-06 08:56:55.000000000 +0100
++++ openni-primesense-5.0.0.25-git894cea01.extlibs/Source/XnFormats/XnStreamCompression.h	2011-02-19 12:05:36.448031241 +0100
+@@ -33,7 +33,7 @@
+ //---------------------------------------------------------------------------
+ #include "XnFormats.h"
+ #include <XnOS.h>
+-#include <External/LibJPEG/jpeglib.h>
++#include <jpeglib.h>
+ #include <setjmp.h>
+ 
+ //---------------------------------------------------------------------------
diff --git a/openni-primesense-5.0.0.25-fedora-buildsys.patch b/openni-primesense-5.0.0.25-fedora-buildsys.patch
new file mode 100644
index 0000000..b9a953a
--- /dev/null
+++ b/openni-primesense-5.0.0.25-fedora-buildsys.patch
@@ -0,0 +1,218 @@
+From f8468e7a542b180a03fd5dd22b70d88e3ddb5a42 Mon Sep 17 00:00:00 2001
+From: Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
+Date: Fri, 21 Jan 2011 19:26:01 +0100
+Subject: [PATCH 1/3] Added useful .gitignore file
+
+---
+ .gitignore |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+ create mode 100644 .gitignore
+
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..1f07758
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,6 @@
++Release/
++/Source/DoxyGen/html
++/Platform/Linux-x86/Bin
++/Platform/Linux-x86/CreateRedist/Final
++/Platform/Linux-x86/CreateRedist/Output
++/Platform/Linux-x86/Redist
+-- 
+1.7.3.4
+
+
+From 00ab2bcb39ebf7f489f5640e6bf51663df332d6c Mon Sep 17 00:00:00 2001
+From: Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
+Date: Sat, 22 Jan 2011 11:21:05 +0100
+Subject: [PATCH 2/3] XnFormats Makefile: support system-wide jpeglib
+
+Instead of using the bunlded libjpeg allow for using the system version.
+On Fedora this causes a speedup because it uses an SSE optimized
+version.
+---
+ Platform/Linux-x86/Build/XnFormats/Makefile |   11 ++++++++---
+ 1 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/Platform/Linux-x86/Build/XnFormats/Makefile b/Platform/Linux-x86/Build/XnFormats/Makefile
+index 4a04486..7c28cbb 100644
+--- a/Platform/Linux-x86/Build/XnFormats/Makefile
++++ b/Platform/Linux-x86/Build/XnFormats/Makefile
+@@ -1,10 +1,15 @@
+ SRC_FILES = \
+-			../../../../Source/XnFormats/*.cpp \
+-			../../../../Source/External/LibJPEG/*.c
++			../../../../Source/XnFormats/*.cpp
+ 
+ LIB_NAME = XnFormats
+ USED_LIBS = XnCore OpenNI
+ DEFINES = XN_FORMATS_EXPORTS
+-INC_DIRS = ../../../../Source/External/LibJPEG
++
++ifneq ($(wildcard /usr/include/jpeglib.h /usr/local/include/jpeglib.h),)
++  USED_LIBS += jpeg
++else
++  INC_DIRS  += ../../../../Source/External/LibJPEG
++  SRC_FILES += ../../../../Source/External/LibJPEG/*.c
++endif
+ 
+ include ../EngineLibMakefile
+-- 
+1.7.3.4
+
+
+From a2c4880425002e760c1247d8439550350875db40 Mon Sep 17 00:00:00 2001
+From: Tim Niemueller <niemueller at kbsg.rwth-aachen.de>
+Date: Sat, 22 Jan 2011 11:25:46 +0100
+Subject: [PATCH 3/3] install.sh: support more overrides
+
++ Module registration can be omitted. For packaging this needs to be
+  after installation, not during compilation/installation.
++ Allow overriding the INSTALL_* variables from the outside.
+---
+ Platform/Linux-x86/CreateRedist/install.sh |   69 +++++++++++++++++++--------
+ 1 files changed, 48 insertions(+), 21 deletions(-)
+
+diff --git a/Platform/Linux-x86/CreateRedist/install.sh b/Platform/Linux-x86/CreateRedist/install.sh
+index 9a3f53c..fdcb5dd 100755
+--- a/Platform/Linux-x86/CreateRedist/install.sh
++++ b/Platform/Linux-x86/CreateRedist/install.sh
+@@ -2,10 +2,22 @@
+ 
+ SCRIPT_DIR=`pwd`/`dirname $0`
+ 
+-INSTALL_LIB=/usr/lib
+-INSTALL_BIN=/usr/bin
+-INSTALL_ETC=/usr/etc/primesense
+-INSTALL_RULES=/etc/udev/rules.d
++if [ -z "$INSTALL_LIB" ]; then
++  INSTALL_LIB=/usr/lib
++fi
++if [ -z "$INSTALL_BIN" ]; then
++  INSTALL_BIN=/usr/bin
++fi
++if [ -z "$INSTALL_ETC" ]; then
++  INSTALL_BIN=/usr/etc/primesense
++fi
++if [ -z "$INSTALL_VARLOG" ]; then
++  INSTALL_VARLOG=/var/log/primesense
++fi
++if [ -z "$INSTALL_RULES" ]; then
++  INSTALL_RULES=/etc/udev/rules.d
++fi
++
+ 
+ if [ "`uname -s`" == "Darwin" ]; then
+     MODULES="libXnDeviceSensorV2.dylib libXnDeviceFile.dylib"
+@@ -17,6 +29,7 @@ RULES_FILE="55-primesense-usb.rules"
+ 
+ # read arguments
+ INSTALL="1"
++REGISTER="1"
+ 
+ while (( "$#" )); do
+ 	case "$1" in
+@@ -26,11 +39,15 @@ while (( "$#" )); do
+ 	"-u")
+ 		INSTALL="0"
+ 		;;
++	"-n")
++		REGISTER="0"
++		;;
+ 	*)
+ 		echo "Usage: $0 [options]"
+ 		echo "Available options:"
+ 		printf "\t-i\tInstall (default)\n"
+ 		printf "\t-u\tUninstall\n"
++		printf "\t-n\tDo not (un)register the modules\n"
+ 		exit 1
+ 		;;		
+ 	esac
+@@ -50,55 +67,65 @@ if [ "$INSTALL" == "1" ]; then
+ 
+     # Copy shared libraries
+     printf "copying shared libraries..."
++    mkdir -p $INSTALL_LIB
+     cp $LIB_FILES $INSTALL_LIB
+     printf "OK\n"
+ 
+     # Copy executables
+     printf "copying executables..."
++    mkdir -p $INSTALL_BIN
+     cp $BIN_FILES $INSTALL_BIN
+     printf "OK\n"
+ 
+-    # register modules
+-    for module in $MODULES; do
+-        printf "registering module '$module' with OpenNI..."
+-	niReg -r $INSTALL_LIB/$module $INSTALL_ETC
+-        printf "OK\n"
+-    done
++    if [ "$REGISTER" == "1" ]; then
++        # register modules
++        for module in $MODULES; do
++            printf "registering module '$module' with OpenNI..."
++	    niReg -r $INSTALL_LIB/$module $INSTALL_ETC
++            printf "OK\n"
++        done
++    fi
+ 
+     # copy config file
+     printf "copying server config file..."
++    mkdir -p $INSTALL_ETC
+     cp Config/GlobalDefaults.ini $INSTALL_ETC
+     printf "OK\n"
+ 
+     # make server run as root
+     printf "setting uid of server..."
+-    chown root $INSTALL_BIN/XnSensorServer
+-    chmod +s $INSTALL_BIN/XnSensorServer
++    if [ "$REGISTER" == 1 ]; then
++        chown root $INSTALL_BIN/XnSensorServer
++        chmod +s $INSTALL_BIN/XnSensorServer
++    fi
+     printf "OK\n"
+ 
+     # create server log dir
+     printf "creating server logs dir..."
+-    mkdir -p /var/log/primesense/XnSensorServer
++    mkdir -p $INSTALL_VARLOG/XnSensorServer
+     # make this dir readable and writable by all (we allow anyone to delete logs)
+-    chmod a+w /var/log/primesense/XnSensorServer
++    chmod a+w $INSTALL_VARLOG/XnSensorServer
+     printf "OK\n"
+ 
+     if [ "`uname -s`" != "Darwin" ]; then
+         # install USB rules (so that PrimeSense sensors will be mounted with write permissions)
+         printf "installing usb rules..."
++        mkdir -p $INSTALL_RULES
+         cp Install/$RULES_FILE $INSTALL_RULES
+         printf "OK\n"
+     fi
+ 
+ else #uninstall
+ 
+-    # unregister modules
+-    for module in $MODULES; do
+-    	printf "unregistering module '$module' from OpenNI..."
+-        if niReg -u $INSTALL_LIB/$module; then
+-            printf "OK\n"
+-        fi
+-    done
++    if [ "$REGISTER" == "1" ]; then
++        # unregister modules
++        for module in $MODULES; do
++            printf "unregistering module '$module' from OpenNI..."
++            if niReg -u $INSTALL_LIB/$module; then
++                printf "OK\n"
++            fi
++        done
++    fi
+ 
+     # delete shared libraries
+     printf "removing shared libraries..."
+-- 
+1.7.3.4
+
diff --git a/openni-primesense-55-primesense-usb.rules b/openni-primesense-55-primesense-usb.rules
new file mode 100644
index 0000000..b6c4a71
--- /dev/null
+++ b/openni-primesense-55-primesense-usb.rules
@@ -0,0 +1,9 @@
+# make primesense device mount with writing permissions (default is read only for unknown devices)
+SYSFS{idProduct}=="0200",SYSFS{idVendor}=="1d27",MODE="666",GROUP="users"
+SYSFS{idProduct}=="0300",SYSFS{idVendor}=="1d27",MODE="666",GROUP="users"
+SYSFS{idProduct}=="0400",SYSFS{idVendor}=="1d27",MODE="666",GROUP="users"
+SYSFS{idProduct}=="0500",SYSFS{idVendor}=="1d27",MODE="666",GROUP="users"
+SYSFS{idProduct}=="0600",SYSFS{idVendor}=="1d27",MODE="666",GROUP="users"
+SYSFS{idProduct}=="02ae",SYSFS{idVendor}=="045e",MODE="666",GROUP="users"
+SYSFS{idProduct}=="02ad",SYSFS{idVendor}=="045e",MODE="666",GROUP="users"
+SYSFS{idProduct}=="02b0",SYSFS{idVendor}=="045e",MODE="666",GROUP="users"
diff --git a/openni-primesense.spec b/openni-primesense.spec
new file mode 100644
index 0000000..6be2b35
--- /dev/null
+++ b/openni-primesense.spec
@@ -0,0 +1,116 @@
+%define gitrev 894cea01
+
+Name:           openni-primesense
+Version:        5.0.0.25
+Release:        0.3.git%{gitrev}%{?dist}
+Summary:        PrimeSensor/Kinect Modules for OpenNI
+Group:          System Environment/Libraries
+License:        LGPLv3+
+URL:            https://github.com/PrimeSense/Sensor
+# No official releases, yet. To reproduce tarball (adapt version and gitrev):
+# git clone git://github.com/ros-pkg-git/Sensor.git
+# cd Sensor
+# git archive --format tar --prefix=openni-primesensor-5.0.0.25-git894cea01/ HEAD | gzip > openni-primesense-5.0.0.25-git894cea01.tar.gz
+Source0:        openni-primesense-%{version}-git%{gitrev}.tar.gz
+Source1:        openni-primesense-55-primesense-usb.rules
+Patch0:         openni-primesense-5.0.0.25-fedora-buildsys.patch
+Patch1:         openni-primesense-5.0.0.25-extlibs.patch
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires:  openni-devel >= 1.0.0, python
+BuildRequires:  dos2unix
+BuildRequires:  libjpeg-devel
+Requires:       openni >= 1.0.0
+Requires:       udev
+
+%description
+This modules enables OpenNI to make use of the PrimeSense, also known as
+Kinect depth camera.
+
+%package        devel
+Summary:        Development files for %{name}
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+
+%description    devel
+The %{name}-devel package contains libraries and header files for
+developing applications that use %{name}.
+
+
+%prep
+%setup -q -n %{name}-%{version}-git%{gitrev}
+%patch0 -p1 -b .fedora-buildsys
+%patch1 -p1 -b .extlibs
+
+dos2unix LGPL.txt
+rm -rf Source/External/LibJPEG
+
+
+%build
+cd Platform/Linux-x86/CreateRedist
+sed -i "s|make -C ../Build|make -C ../Build CFLAGS_EXT=\\\"%{optflags}\\\" SSE_GENERATION=2 DEBUG=1|" RedistMaker
+./RedistMaker
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+pushd Platform/Linux-x86/Redist
+INSTALL_LIB=$RPM_BUILD_ROOT%{_libdir} \
+INSTALL_BIN=$RPM_BUILD_ROOT%{_bindir} \
+INSTALL_ETC=$RPM_BUILD_ROOT%{_sysconfdir}/openni/primesense \
+INSTALL_VARLOG=$RPM_BUILD_ROOT%{_var}/log/primesense \
+INSTALL_RULES=$RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d \
+./install.sh -n
+popd
+
+rm -rf $RPM_BUILD_ROOT%{_var}/log/primesense
+
+rm $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/55-primesense-usb.rules
+install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/55-primesense-usb.rules
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%post
+/sbin/ldconfig
+if [ $1 == 1 ]; then
+  niReg -r %{_libdir}/libXnDeviceSensorV2.so
+  niReg -r %{_libdir}/libXnDeviceFile.so
+fi
+
+
+%preun
+if [ $1 == 0 ]; then
+  niReg -u %{_libdir}/libXnDeviceSensorV2.so
+  niReg -u %{_libdir}/libXnDeviceFile.so
+fi
+
+
+%postun -p /sbin/ldconfig
+
+
+%files
+%defattr(-,root,root,-)
+%doc LGPL.txt
+%dir %{_sysconfdir}/openni/primesense
+%config(noreplace) %{_sysconfdir}/openni/primesense/*
+%config(noreplace) %{_sysconfdir}/udev/rules.d/55-primesense-usb.rules
+%{_libdir}/*.so
+%{_bindir}/XnSensorServer
+
+%changelog
+* Sat Feb 26 2011 Tim Niemueller <tim at niemueller.de> - 5.0.0.25-0.3.git894cea01
+- BuildRequire libjpeg-devel
+
+* Sat Feb 19 2011 Tim Niemueller <tim at niemueller.de> - 5.0.0.25-0.2.git894cea01
+- Fix version number according to guidelines
+- Fix line endings of license file
+- Do not package meaningless README file
+- Use only SYSFS and not both, SYSFS and ATTRS in udev rules
+- Remove jpeg lib coming with the package in setup phase, add according patch
+
+* Thu Jan 20 2011 Tim Niemueller <tim at niemueller.de> - 5.0.0.25-0.1.git894cea01
+- Initial revision
+
diff --git a/sources b/sources
index e69de29..77a4047 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+c7cb093a017b8a63da159130b26d3fbb  openni-primesense-5.0.0.25-git894cea01.tar.gz


More information about the scm-commits mailing list