[Debian-med-packaging] Bug#976479: [Request for help] Bug: #976479 scrappie: FTBFS: scrappie_matrix.h:5:14: fatal error: immintrin.h: No such file or directory

Nilesh Patra npatra974 at gmail.com
Mon Dec 7 10:28:16 GMT 2020


Hi Michael and others,

Scrappie looks like a candidate where we can use the simde trick.
I tried doing a patch, and it works on amd64 machine, but not on an arm64 porter box :/ (with issues with __v4sf)

And I'm not sure how to fix this, and hence this is a humble request to please take a look - and any help/hints would be really great.
My patch is pushed to salsa[1]
I'm also sorry if these pings are somehow irritating, since I need help admittedly.

[1]: https://salsa.debian.org/med-team/scrappie

Pasting the (relevant part of) failing arm64 log:

make[1]: Entering directory '/home/nilesh/scrappie/scrappie'
mkdir build
cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release && \
make
-- The C compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test HAS_OPENMP
-- Performing Test HAS_OPENMP - Success
-- Looking for hdf5.h
-- Looking for hdf5.h - not found
-- Looking for hdf5/serial/hdf5.h
-- Looking for hdf5/serial/hdf5.h - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nilesh/scrappie/scrappie/build
make[2]: Entering directory '/home/nilesh/scrappie/scrappie/build'
make[2]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
make[3]: Entering directory '/home/nilesh/scrappie/scrappie/build'
make[4]: Entering directory '/home/nilesh/scrappie/scrappie/build'
Scanning dependencies of target scrappie_objects
make[4]: Leaving directory '/home/nilesh/scrappie/scrappie/build'
make[4]: Entering directory '/home/nilesh/scrappie/scrappie/build'
[  2%] Building C object CMakeFiles/scrappie_objects.dir/src/decode.c.o
In file included from /usr/include/simde/x86/avx.h:27,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'log_ps':
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:106:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  106 |   x = _mm_max_ps(x, *(v4sf*)_ps_min_norm_pos);  /* cut off denormalized stuff */
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/avx.h:27,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:110:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  110 |   x = _mm_and_ps(x, *(v4sf*)_ps_inv_mant_mask);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:113:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  113 |   emm0 = _mm_sub_epi32(emm0, *(v4si*)_pi32_0x7f);
      |                               ^~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'exp_ps':
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:228:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  228 |   emm0 = _mm_add_epi32(emm0, *(v4si*)_pi32_0x7f);
      |                               ^~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/avx.h:27,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'sin_ps':
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:281:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  281 |   x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:283:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  283 |   sign_bit = _mm_and_ps(sign_bit, *(v4sf*)_ps_sign_mask);
      |                                    ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:291:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  291 |   emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1);
      |                               ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:292:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  292 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1);
      |                               ^~~~~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:296:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  296 |   emm0 = _mm_and_si128(emm2, *(v4si*)_pi32_4);
      |                               ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:304:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  304 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2);
      |                               ^~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/avx.h:27,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'cos_ps':
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:364:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  364 |   x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:372:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  372 |   emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1);
      |                               ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:373:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  373 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1);
      |                               ^~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:376:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  376 |   emm2 = _mm_sub_epi32(emm2, *(v4si*)_pi32_2);
      |                               ^~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:379:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  379 |   emm0 = _mm_andnot_si128(emm2, *(v4si*)_pi32_4);
      |                                  ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:382:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  382 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2);
      |                               ^~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/avx.h:27,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h: In function 'sincos_ps':
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:444:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  444 |   x = _mm_and_ps(x, *(v4sf*)_ps_inv_sign_mask);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:446:44: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  446 |   sign_bit_sin = _mm_and_ps(sign_bit_sin, *(v4sf*)_ps_sign_mask);
      |                                            ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:455:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  455 |   emm2 = _mm_add_epi32(emm2, *(v4si*)_pi32_1);
      |                               ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:456:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  456 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_inv1);
      |                               ^~~~~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:462:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  462 |   emm0 = _mm_and_si128(emm2, *(v4si*)_pi32_4);
      |                               ^~~~~~~~~~~~~~
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:467:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  467 |   emm2 = _mm_and_si128(emm2, *(v4si*)_pi32_2);
      |                               ^~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:483:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  483 |   emm4 = _mm_sub_epi32(emm4, *(v4si*)_pi32_2);
      |                               ^~~~~~~~~~~~~~
In file included from /usr/include/simde/x86/sse3.h:30,
                 from /usr/include/simde/x86/ssse3.h:30,
                 from /usr/include/simde/x86/sse4.1.h:31,
                 from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:484:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
  484 |   emm4 = _mm_andnot_si128(emm4, *(v4si*)_pi32_4);
      |                                  ^~~~~~~~~~~~~~
In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5:
/home/nilesh/scrappie/scrappie/src/util.h: In function 'expfv':
/home/nilesh/scrappie/scrappie/src/util.h:172:5: error: unknown type name '__v4sf'; did you mean 'v4sf'?
  172 |     __v4sf y = (__v4sf) x;
      |     ^~~~~~
      |     v4sf
/home/nilesh/scrappie/scrappie/src/util.h:172:17: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'?
  172 |     __v4sf y = (__v4sf) x;
      |                 ^~~~~~
      |                 v4sf
/home/nilesh/scrappie/scrappie/src/util.h:172:17: note: each undeclared identifier is reported only once for each function it appears in
/home/nilesh/scrappie/scrappie/src/util.h:172:25: error: expected ',' or ';' before 'x'
  172 |     __v4sf y = (__v4sf) x;
      |                         ^
/home/nilesh/scrappie/scrappie/src/util.h:173:28: error: incompatible type for argument 1 of 'exp_ps'
  173 |     return (__m128) exp_ps(y);
      |                            ^
      |                            |
      |                            int
In file included from /home/nilesh/scrappie/scrappie/src/util.h:9,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:5:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:183:67: note: expected 'v4sf' {aka 'float32x4_t'} but argument is of type 'int'
  183 | static inline __attribute__((__always_inline__)) v4sf exp_ps(v4sf x) {
      |                                                              ~~~~~^
In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5:
/home/nilesh/scrappie/scrappie/src/util.h: In function 'logfv':
/home/nilesh/scrappie/scrappie/src/util.h:177:5: error: unknown type name '__v4sf'; did you mean 'v4sf'?
  177 |     __v4sf y = (__v4sf) x;
      |     ^~~~~~
      |     v4sf
/home/nilesh/scrappie/scrappie/src/util.h:177:17: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'?
  177 |     __v4sf y = (__v4sf) x;
      |                 ^~~~~~
      |                 v4sf
/home/nilesh/scrappie/scrappie/src/util.h:177:25: error: expected ',' or ';' before 'x'
  177 |     __v4sf y = (__v4sf) x;
      |                         ^
/home/nilesh/scrappie/scrappie/src/util.h:178:28: error: incompatible type for argument 1 of 'log_ps'
  178 |     return (__m128) log_ps(y);
      |                            ^
      |                            |
      |                            int
In file included from /home/nilesh/scrappie/scrappie/src/util.h:9,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:5:
/home/nilesh/scrappie/scrappie/src/sse_mathfun.h:101:67: note: expected 'v4sf' {aka 'float32x4_t'} but argument is of type 'int'
  101 | static inline v4sf __attribute__((__always_inline__)) log_ps(v4sf x) {
      |                                                              ~~~~~^
In file included from /home/nilesh/scrappie/scrappie/src/decode.c:5:
/home/nilesh/scrappie/scrappie/src/util.h: In function 'fast_expfv':
/home/nilesh/scrappie/scrappie/src/util.h:205:32: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'?
  205 |     const __m128 a = (__m128) (__v4sf) { _A, _A, _A, _A };
      |                                ^~~~~~
      |                                v4sf
/home/nilesh/scrappie/scrappie/src/util.h:205:40: error: expected ',' or ';' before '{' token
  205 |     const __m128 a = (__m128) (__v4sf) { _A, _A, _A, _A };
      |                                        ^
/home/nilesh/scrappie/scrappie/src/util.h:206:40: error: expected ',' or ';' before '{' token
  206 |     const __m128 b = (__m128) (__v4sf) { _B, _B, _B, _B };
      |                                        ^
/home/nilesh/scrappie/scrappie/src/util.h:207:45: error: expected ',' or ';' before '{' token
  207 |     const __m128 _bound = (__m128) (__v4sf) { _BOUND, _BOUND, _BOUND, _BOUND };
      |                                             ^
/home/nilesh/scrappie/scrappie/src/util.h: In function 'fast_logfv':
/home/nilesh/scrappie/scrappie/src/util.h:217:32: error: '__v4sf' undeclared (first use in this function); did you mean 'v4sf'?
  217 |     const __m128 a = (__m128) (__v4sf) { _Alogfv, _Alogfv, _Alogfv, _Alogfv };
      |                                ^~~~~~
      |                                v4sf
/home/nilesh/scrappie/scrappie/src/util.h:217:40: error: expected ',' or ';' before '{' token
  217 |     const __m128 a = (__m128) (__v4sf) { _Alogfv, _Alogfv, _Alogfv, _Alogfv };
      |                                        ^
/home/nilesh/scrappie/scrappie/src/util.h:218:40: error: expected ',' or ';' before '{' token
  218 |     const __m128 b = (__m128) (__v4sf) { _Blogfv, _Blogfv, _Blogfv, _Blogfv };
      |                                        ^
/home/nilesh/scrappie/scrappie/src/decode.c: At top level:
/home/nilesh/scrappie/scrappie/src/decode.c:11:6: error: #error "Compilation of function decode_transducer requires a processor that supports at least SSE2"
   11 | #    error "Compilation of function decode_transducer requires a processor that supports at least SSE2"
      |      ^~~~~
In file included from /usr/include/simde/x86/sse4.2.h:31,
                 from /usr/include/simde/x86/avx.h:31,
                 from /home/nilesh/scrappie/scrappie/src/scrappie_matrix.h:6,
                 from /home/nilesh/scrappie/scrappie/src/decode.h:5,
                 from /home/nilesh/scrappie/scrappie/src/decode.c:3:
/home/nilesh/scrappie/scrappie/src/decode.c:25:74: error: redefinition of 'simde_mm_mullo_epi32'
   25 | static inline __m128i __attribute__((__gnu_inline__, __always_inline__)) _mm_mullo_epi32(const __m128i x, const __m128i y) {
      |                                                                          ^~~~~~~~~~~~~~~
/usr/include/simde/x86/sse4.1.h:1761:1: note: previous definition of 'simde_mm_mullo_epi32' was here
 1761 | simde_mm_mullo_epi32 (simde__m128i a, simde__m128i b) {
      | ^~~~~~~~~~~~~~~~~~~~
make[4]: *** [CMakeFiles/scrappie_objects.dir/build.make:82: CMakeFiles/scrappie_objects.dir/src/decode.c.o] Error 1
make[4]: Leaving directory '/home/nilesh/scrappie/scrappie/build'
make[3]: *** [CMakeFiles/Makefile2:104: CMakeFiles/scrappie_objects.dir/all] Error 2
make[3]: Leaving directory '/home/nilesh/scrappie/scrappie/build'
make[2]: *** [Makefile:182: all] Error 2
make[2]: Leaving directory '/home/nilesh/scrappie/scrappie/build'
make[1]: *** [Makefile:21: build/scrappie] Error 2
make[1]: Leaving directory '/home/nilesh/scrappie/scrappie'
dh_auto_build: error: make -j4 "INSTALL=install --strip-program=true" returned exit code 2
make: *** [debian/rules:11: binary] Error 2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/debian-med-packaging/attachments/20201207/23565ed4/attachment-0001.sig>


More information about the Debian-med-packaging mailing list