Source: openni2
Version: 2.2.0.33+dfsg-7
Severity: serious
Tags: patch
Control: affects -1 src:mrpt

NEON is not part of the armel and armhf architecture baselines,
it is therefore not permitted to use NEON unless proper runtime
detection is used.

NEON is also not available on the autobuilders.


openni2 trying to build with NEON on armel causes it to FTBFS:

https://buildd.debian.org/status/logs.php?pkg=openni2&arch=armel

...
In file included from Sensor/XnPacked11DepthProcessor.cpp:27:0:
/usr/lib/gcc/arm-linux-gnueabi/7/include/arm_neon.h:31:2: error: #error "NEON 
intrinsics not available with the soft-float ABI.  Please use -mfloat-abi=softp 
or -mfloat-abi=hard"
 #error "NEON intrinsics not available with the soft-float ABI.  Please use 
-mfloat-abi=softp or -mfloat-abi=hard"
  ^~~~~



I also strongly suspect that the FTBFS of mrpt on armhf might be
caused by this bug (test_mrpt_hwdrivers is linked with libOpenNI2):

https://buildd.debian.org/status/fetch.php?pkg=mrpt&arch=armhf&ver=1%3A1.5.3-1&stamp=1504457093&raw=0

...
cd /<<PKGBUILDDIR>>/obj-arm-linux-gnueabihf/tests && ./test_mrpt_hwdrivers
Illegal instruction



The "uname -m" usage in ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
is wrong and also results in openni2 being built differently for i386
depending on whether a 32bit or 64bit kernel is used, but here I am
only addressing the ARM issues.

The fix contains of 3 parts:

1. In debian/patches/series, comment out
0006-rpi-Added-Armv6l-as-new-target-platform-and-created-missing-OniPlatformLinux-Arm.h-header.patch

This only made the uname bug above worse.


2. In debian/patches/0012-generic-linux.patch, fix a typo in
ThirdParty/PSCommon/BuildSystem/Platform.generic: FLAGS -> CFLAGS


3. Add the attached 0016-armel-armhf-no-neon.patch
Description: Use the generic platform for armel+armhf
 NEON is not part of the armel and armhf baselines.
Author: Adrian Bunk <b...@debian.org>

--- openni2-2.2.0.33+dfsg.orig/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
+++ openni2-2.2.0.33+dfsg/ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
@@ -16,8 +16,6 @@ else ifneq (,$(findstring i686,$(MACHINE
        HOST_PLATFORM = x86
 else ifneq (,$(findstring i386,$(MACHINE)))
        HOST_PLATFORM = x86
-else ifneq (,$(findstring arm,$(MACHINE)))
-       HOST_PLATFORM = Arm
 else
        HOST_PLATFORM = generic
 endif

Reply via email to