[packages/OpenNI2] - added defines patch (fix platform ifdefs, adjust to work in C++ with cleaner namespace, i.e. no i3
qboosh
qboosh at pld-linux.org
Mon Mar 16 17:03:41 CET 2020
commit b9bc5ba22e46ec6710de7ee831ba47f28fe49ccb
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Mon Mar 16 17:04:40 2020 +0100
- added defines patch (fix platform ifdefs, adjust to work in C++ with cleaner namespace, i.e. no i386 macro)
- added nowarn,c++ patches (build fixes), turn off more warnings to build with gcc 7+
- disable javadoc for now, fails with Java 8+
- rel 4
OpenNI2-c++.patch | 71 +++++++++++++++++++++++++++++++++++++++
OpenNI2-defines.patch | 14 ++++++++
OpenNI2-nowarn.patch | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
OpenNI2.spec | 15 +++++++--
4 files changed, 189 insertions(+), 3 deletions(-)
---
diff --git a/OpenNI2.spec b/OpenNI2.spec
index 2e44196..f9855d0 100644
--- a/OpenNI2.spec
+++ b/OpenNI2.spec
@@ -14,7 +14,8 @@ Summary(pl.UTF-8): Szkielet OpenNI2 do urządzeń służących interakcji z natu
Name: OpenNI2
Version: 2.2.0.33
%define subver beta2
-Release: 0.%{subver}.3
+%define rel 4
+Release: 0.%{subver}.%{rel}
License: Apache v2.0
Group: Libraries
Source0: https://github.com/occipital/OpenNI2/archive/2.2-%{subver}/%{name}-%{version}.tar.gz
@@ -25,6 +26,9 @@ Patch2: %{name}-link.patch
Patch3: %{name}-paths.patch
Patch4: %{name}-soname.patch
Patch5: %{name}-norpath.patch
+Patch6: %{name}-defines.patch
+Patch7: %{name}-nowarn.patch
+Patch8: %{name}-c++.patch
URL: http://structure.io/openni
BuildRequires: OpenGL-devel
BuildRequires: OpenGL-glut-devel >= 3
@@ -126,9 +130,13 @@ Interfejs Javy do OpenNI2.
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
%build
-export CFLAGS="%{rpmcflags} -Wno-unused-local-typedefs -Wno-enum-compare"
+export CFLAGS="%{rpmcflags} -Wno-unused-local-typedefs -Wno-enum-compare -Wno-unused-local-typedefs -Wno-misleading-indentation"
+export CXXFLAGS="%{rpmcxxflags} -Wno-unused-local-typedefs -Wno-enum-compare -Wno-unused-local-typedefs -Wno-misleading-indentation"
%{__make} \
CFG=Release \
CXX="%{__cxx}" \
@@ -141,7 +149,8 @@ export CFLAGS="%{rpmcflags} -Wno-unused-local-typedefs -Wno-enum-compare"
cd Source/Documentation
doxygen Doxyfile
%if %{with java}
-javadoc -d java $(find ../../Wrappers/java/OpenNI.java/src/org/openni -type f)
+# fails with "unknown tag" errors since Java 8
+#javadoc -d java $(find ../../Wrappers/java/OpenNI.java/src/org/openni -type f)
%endif
%endif
diff --git a/OpenNI2-c++.patch b/OpenNI2-c++.patch
new file mode 100644
index 0000000..fac7412
--- /dev/null
+++ b/OpenNI2-c++.patch
@@ -0,0 +1,71 @@
+Avoid redefining std::equivalent.
+--- OpenNI2-2.2-beta2/ThirdParty/GL/glh/glh_linear.h.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/ThirdParty/GL/glh/glh_linear.h 2020-03-16 06:17:00.475443933 +0100
+@@ -77,7 +77,7 @@
+ #define GLH_EPSILON GLH_REAL(10e-6)
+ #define GLH_PI GLH_REAL(3.1415926535897932384626433832795)
+
+-#define equivalent(a,b) (((a < b + GLH_EPSILON) && (a > b - GLH_EPSILON)) ? true : false)
++#define glh_equivalent(a,b) (((a < b + GLH_EPSILON) && (a > b - GLH_EPSILON)) ? true : false)
+
+ namespace glh
+ {
+@@ -1093,7 +1093,7 @@
+
+ real norm = q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3];
+
+- s = (equivalent(norm,GLH_ZERO)) ? GLH_ZERO : ( GLH_TWO / norm );
++ s = (glh_equivalent(norm,GLH_ZERO)) ? GLH_ZERO : ( GLH_TWO / norm );
+
+ xs = q[0] * s;
+ ys = q[1] * s;
+@@ -1194,7 +1194,7 @@
+ theta *= real(0.5);
+ real sin_theta = real(sin(theta));
+
+- if (!equivalent(sqnorm,GLH_ONE))
++ if (!glh_equivalent(sqnorm,GLH_ONE))
+ sin_theta /= real(sqrt(sqnorm));
+ x = sin_theta * axis.v[0];
+ y = sin_theta * axis.v[1];
+@@ -1216,14 +1216,14 @@
+
+ alpha = p1.dot(p2);
+
+- if(equivalent(alpha,GLH_ONE))
++ if(glh_equivalent(alpha,GLH_ONE))
+ {
+ *this = identity();
+ return *this;
+ }
+
+ // ensures that the anti-parallel case leads to a positive dot
+- if(equivalent(alpha,-GLH_ONE))
++ if(glh_equivalent(alpha,-GLH_ONE))
+ {
+ vec3 v;
+
+@@ -1280,7 +1280,7 @@
+ void normalize()
+ {
+ real rnorm = GLH_ONE / real(sqrt(w * w + x * x + y * y + z * z));
+- if (equivalent(rnorm, GLH_ZERO))
++ if (glh_equivalent(rnorm, GLH_ZERO))
+ return;
+ x *= rnorm;
+ y *= rnorm;
+@@ -1439,10 +1439,10 @@
+ inline
+ bool operator == ( const quaternion & q1, const quaternion & q2 )
+ {
+- return (equivalent(q1.x, q2.x) &&
+- equivalent(q1.y, q2.y) &&
+- equivalent(q1.z, q2.z) &&
+- equivalent(q1.w, q2.w) );
++ return (glh_equivalent(q1.x, q2.x) &&
++ glh_equivalent(q1.y, q2.y) &&
++ glh_equivalent(q1.z, q2.z) &&
++ glh_equivalent(q1.w, q2.w) );
+ }
+
+ inline
diff --git a/OpenNI2-defines.patch b/OpenNI2-defines.patch
new file mode 100644
index 0000000..c56b13e
--- /dev/null
+++ b/OpenNI2-defines.patch
@@ -0,0 +1,14 @@
+--- OpenNI2-2.2-beta2/Include/OniPlatform.h.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/Include/OniPlatform.h 2020-03-15 20:52:18.458998563 +0100
+@@ -37,9 +37,9 @@
+ # include "Win32/OniPlatformWin32.h"
+ #elif defined (ANDROID) && defined (__arm__)
+ # include "Android-Arm/OniPlatformAndroid-Arm.h"
+-#elif (__linux__ && (i386 || __x86_64__))
++#elif (defined(__linux__) && (defined(__i386__) || defined(__x86_64__)))
+ # include "Linux-x86/OniPlatformLinux-x86.h"
+-#elif (__linux__ && __arm__)
++#elif (defined(__linux__) && defined(__arm__))
+ # include "Linux-Arm/OniPlatformLinux-Arm.h"
+ #elif _ARC
+ # include "ARC/OniPlaformARC.h"
diff --git a/OpenNI2-nowarn.patch b/OpenNI2-nowarn.patch
new file mode 100644
index 0000000..a82d862
--- /dev/null
+++ b/OpenNI2-nowarn.patch
@@ -0,0 +1,92 @@
+Avoid:
+"error: array subscript is below array bounds [-Werror=array-bounds]"
+"directive writing ... bytes into a region of size ... [-Werror=format-overflow=]"
+"error: ... may be used uninitialized in this function [-Werror=maybe-uninitialized]"
+--- OpenNI2-2.2-beta2/Source/Drivers/PS1080/Formats/XnFormatsMirror.cpp.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/Source/Drivers/PS1080/Formats/XnFormatsMirror.cpp 2020-03-15 21:05:31.154704162 +0100
+@@ -43,7 +43,6 @@
+ XnUInt8* pSrcEnd = pSrc + nBufferSize;
+ XnUInt8* pDest = NULL;
+ XnUInt8* pDestVal = &pLineBuffer[0] + nLineSize - 1;
+- XnUInt8* pDestEnd = &pLineBuffer[0] - 1;
+
+ if (nLineSize > XN_MIRROR_MAX_LINE_SIZE)
+ {
+@@ -55,7 +54,7 @@
+ xnOSMemCopy(pLineBuffer, pSrc, nLineSize);
+
+ pDest = pDestVal;
+- while (pDest != pDestEnd)
++ while (pDest >= pLineBuffer)
+ {
+ *pSrc = *pDest;
+
+@@ -76,7 +75,6 @@
+ XnUInt16* pSrcEnd = pSrc + nBufferSize / sizeof(XnUInt16);
+ XnUInt16* pDest = NULL;
+ XnUInt16* pDestVal = &pLineBuffer[0] + nLineSize - 1;
+- XnUInt16* pDestEnd = &pLineBuffer[0] - 1;
+ XnUInt16 nMemCpyLineSize = (XnUInt16)(nLineSize * sizeof(XnUInt16));
+ XnUInt16 nValue;
+
+@@ -90,7 +88,7 @@
+ xnOSMemCopy(pLineBuffer, pSrc, nMemCpyLineSize);
+
+ pDest = pDestVal;
+- while (pDest != pDestEnd)
++ while (pDest >= pLineBuffer)
+ {
+ nValue = pDest[0];
+ pSrc[0] = nValue;
+@@ -112,7 +110,6 @@
+ XnUInt8* pSrcEnd = pSrc + nBufferSize;
+ XnUInt8* pDest = NULL;
+ XnUInt8* pDestVal = &pLineBuffer[0] + nLineSize * 3 - 1;
+- XnUInt8* pDestEnd = &pLineBuffer[0] - 1;
+ XnUInt16 nMemCpyLineSize = (XnUInt16)(nLineSize * 3);
+
+ if (nMemCpyLineSize > XN_MIRROR_MAX_LINE_SIZE)
+@@ -125,7 +122,7 @@
+ xnOSMemCopy(pLineBuffer, pSrc, nMemCpyLineSize);
+
+ pDest = pDestVal;
+- while (pDest != pDestEnd)
++ while (pDest >= pLineBuffer)
+ {
+ *pSrc = *(pDest-2);
+ *(pSrc+1) = *(pDest-1);
+--- OpenNI2-2.2-beta2/Source/Drivers/PS1080/Sensor/XnFrameStreamProcessor.h.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/Source/Drivers/PS1080/Sensor/XnFrameStreamProcessor.h 2020-03-15 21:15:21.744837994 +0100
+@@ -170,8 +170,8 @@
+ /* A pointer to the triple frame buffer of this stream. */
+ XnFrameBufferManager* m_pTripleBuffer;
+
+- XnChar m_csInDumpMask[100];
+- XnChar m_csInternalDumpMask[100];
++ XnChar m_csInDumpMask[220];
++ XnChar m_csInternalDumpMask[220];
+ XnDumpFile* m_InDump;
+ XnDumpFile* m_InternalDump;
+ XnBool m_bFrameCorrupted;
+--- OpenNI2-2.2-beta2/Source/Drivers/PS1080/Sensor/XnSensorFirmwareParams.cpp.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/Source/Drivers/PS1080/Sensor/XnSensorFirmwareParams.cpp 2020-03-15 21:21:18.092907491 +0100
+@@ -262,7 +262,7 @@
+ nRetVal = m_AllFirmwareParams.Set(&Property, param);
+ XN_IS_STATUS_OK(nRetVal);
+
+- XnChar csNewName[XN_DEVICE_MAX_STRING_LENGTH];
++ XnChar csNewName[XN_DEVICE_MAX_STRING_LENGTH + 10];
+ sprintf(csNewName, "%s (%d)", Property.GetName(), nFirmwareParam);
+
+ Property.UpdateName("Firmware", csNewName);
+--- OpenNI2-2.2-beta2/Source/Tools/NiViewer/Device.cpp.orig 2013-11-12 15:12:23.000000000 +0100
++++ OpenNI2-2.2-beta2/Source/Tools/NiViewer/Device.cpp 2020-03-15 22:01:52.709718040 +0100
+@@ -364,7 +364,7 @@
+
+ void toggleCloseRange(int )
+ {
+- bool bCloseRange;
++ bool bCloseRange = false;
+ g_depthStream.getProperty(XN_STREAM_PROPERTY_CLOSE_RANGE, &bCloseRange);
+
+ bCloseRange = !bCloseRange;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/OpenNI2.git/commitdiff/b9bc5ba22e46ec6710de7ee831ba47f28fe49ccb
More information about the pld-cvs-commit
mailing list