[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