[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#770862: unblock: fftw3/3.3.4-2



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

Please unblock fftw3. Version 3.3.4-2 fixes #767138, which was causing several
packages to FTBFS on armhf (only on CPUs without NEON support, which includes
many of our armhf buildds).

Changelog and debdiff follow.

fftw3 (3.3.4-2) unstable; urgency=medium

  * Team upload.
  * fix-runtime-neon-detection.patch: new patch, fixes runtime NEON
    detection on armhf (and also arm64, but NEON is currently
    unconditionnally disabled there). Thanks to Edmund Grimley Evans for
    the patch. (Closes: #767138)

 -- Sébastien Villemot <sebastien@debian.org>  Sun, 23 Nov 2014 20:49:59 +0100


unblock fftw3/3.3.4-2

Thanks,

-- 
 .''`.    Sébastien Villemot
: :' :    Debian Developer
`. `'     http://www.dynare.org/sebastien
  `-      GPG Key: 4096R/381A7594
diff -Nru fftw3-3.3.4/debian/changelog fftw3-3.3.4/debian/changelog
--- fftw3-3.3.4/debian/changelog	2014-10-14 04:13:24.000000000 +0200
+++ fftw3-3.3.4/debian/changelog	2014-11-23 21:04:48.000000000 +0100
@@ -1,3 +1,13 @@
+fftw3 (3.3.4-2) unstable; urgency=medium
+
+  * Team upload.
+  * fix-runtime-neon-detection.patch: new patch, fixes runtime NEON
+    detection on armhf (and also arm64, but NEON is currently
+    unconditionnally disabled there). Thanks to Edmund Grimley Evans for
+    the patch. (Closes: #767138)
+
+ -- Sébastien Villemot <sebastien@debian.org>  Sun, 23 Nov 2014 20:49:59 +0100
+
 fftw3 (3.3.4-1.1) unstable; urgency=low
 
   * Add mips64(el), ppc64el and arm64 to the list with long double support.
diff -Nru fftw3-3.3.4/debian/patches/fix-runtime-neon-detection.patch fftw3-3.3.4/debian/patches/fix-runtime-neon-detection.patch
--- fftw3-3.3.4/debian/patches/fix-runtime-neon-detection.patch	1970-01-01 01:00:00.000000000 +0100
+++ fftw3-3.3.4/debian/patches/fix-runtime-neon-detection.patch	2014-11-23 21:04:48.000000000 +0100
@@ -0,0 +1,103 @@
+Description: Fix runtime detection of NEON support on armhf and arm64
+Author: Edmund Grimley Evans <edmund.grimley.evans@gmail.com>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767138
+Forwarded: no
+Reviewed-by: Sébastien Villemot <sebastien@debian.org>
+Last-Update: 2014-11-23
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/simd-support/neon.c
++++ b/simd-support/neon.c
+@@ -23,56 +23,45 @@
+ 
+ #if HAVE_NEON
+ 
+-/* check for an environment where signals are known to work */
+-#if defined(unix) || defined(linux)
+-  # include <signal.h>
+-  # include <setjmp.h>
+-
+-  static jmp_buf jb;
+-
+-  static void sighandler(int x)
+-  {
+-       UNUSED(x);
+-       longjmp(jb, 1);
+-  }
+-
+-  static int really_have_neon(void)
+-  {
+-       void (*oldsig)(int);
+-       oldsig = signal(SIGILL, sighandler);
+-       if (setjmp(jb)) {
+-	    signal(SIGILL, oldsig);
+-	    return 0;
+-       } else {
+-	    /* paranoia: encode the instruction in binary because the
+-	       assembler may not recognize it without -mfpu=neon */
+-	    /*asm volatile ("vand q0, q0, q0");*/
+-	    asm volatile (".long 0xf2000150");
+-	    signal(SIGILL, oldsig);
+-	    return 1;
+-       }
+-  }
+-
+-  extern void X(check_alignment_of_sse2_pm)(void);
+-
+-  int X(have_simd_neon)(void)
+-  {
+-       static int init = 0, res;
+-
+-       if (!init) {
+-	    res = really_have_neon();
+-	    init = 1;
+-       }
+-       return res;
+-  }
++#ifdef __linux__
+ 
++#ifdef __aarch64__
++
++/* HWCAP_ASIMD is defined in <asm/hwcap.h> but not included by <sys/auxv.h>.
++   Since all current AArch64 implementations have NEON/ASIMD it is probably
++   better to return 1 than include a header file which is not intended for
++   use by user programs. */
++
++int X(have_simd_neon)(void)
++{
++  return 1;
++}
+ 
+ #else
+-/* don't know how to autodetect NEON; assume it is present */
+-  int X(have_simd_neon)(void)
+-  {
+-       return 1;
+-  }
++
++#include <sys/auxv.h>
++
++int X(have_simd_neon)(void)
++{
++  static int cached = 2;
++  int ret;
++
++  /* This should be thread-safe in all reasonable circumstances. */
++  ret = cached;
++  if (ret == 2)
++    {
++      ret = !!(getauxval(AT_HWCAP) & HWCAP_ARM_NEON);
++      cached = ret;
++    }
++  return ret;
++}
++
++#endif
++
++#else
++
++#error Please implement a run-time test for NEON/ASIMD for your platform.
++
+ #endif
+ 
+ #endif
diff -Nru fftw3-3.3.4/debian/patches/series fftw3-3.3.4/debian/patches/series
--- fftw3-3.3.4/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ fftw3-3.3.4/debian/patches/series	2014-11-23 21:04:48.000000000 +0100
@@ -0,0 +1 @@
+fix-runtime-neon-detection.patch

Attachment: signature.asc
Description: Digital signature


Reply to: