Source: gmap Version: 2019-01-24-1 Severity: serious Tags: ftbfs Justification: fails to build from source (but built successfully in the past) Control: fixed -1 2021-02-22+ds-1
Hi, during a local rebuild of all contrib and non-free packages I noticed that gmap/buster did FTBFS while it succeeded two years ago. Comparing the build logs I noticed that the new build targted avx512 while the old build targeted sse42. (The old machine has been decommissioned inbetween ...) I cannot reproduce this with the versions found in stretch or bullseye. gcc -DHAVE_CONFIG_H -I. -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -DMAX_STACK_READLENGTH=300 -DGSNAP=1 -DLARGE_GENOMES=1 -mpopcnt -DHAVE_SSE2=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -DHAVE_SSE4_2=1 -DHAVE_AVX2=1 -DHAVE_AVX512=1 -msse2 -mssse3 -msse4.1 -msse4.2 -mavx2 -mbmi2 -mavx512f -mavx512cd -g -O2 -fdebug-prefix-map=/build/gmap-2019-01-24=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gsnapl_avx512-merge-uint8.o `test -f 'merge-uint8.c' || echo './'`merge-uint8.c merge-uint8.c: In function 'merge_4x4': merge-uint8.c:72:29: error: incompatible type for argument 1 of '_mm_max_epu64' *vMergedB = _mm_max_epu64(vTmp, vMax); ^~~~ In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/immintrin.h:53, from merge-uint8.c:15: /usr/lib/gcc/x86_64-linux-gnu/8/include/avx512vlintrin.h:8037:24: note: expected '__m128i' {aka '__vector(2) long long int'} but argument is of type '__m256i' {aka '__vector(4) long long int'} _mm_max_epu64 (__m128i __A, __m128i __B) ~~~~~~~~^~~ merge-uint8.c:72:35: error: incompatible type for argument 2 of '_mm_max_epu64' *vMergedB = _mm_max_epu64(vTmp, vMax); ^~~~ In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/immintrin.h:53, from merge-uint8.c:15: /usr/lib/gcc/x86_64-linux-gnu/8/include/avx512vlintrin.h:8037:37: note: expected '__m128i' {aka '__vector(2) long long int'} but argument is of type '__m256i' {aka '__vector(4) long long int'} _mm_max_epu64 (__m128i __A, __m128i __B) ~~~~~~~~^~~ make[3]: *** [Makefile:35387: gsnapl_avx512-merge-uint8.o] Error 1 BTW, the package content should not depend on the build host cpu. The sid package currently has avx2 binaries, if I rebuild it it gets avx512 binaries, who knows what happens after a binNMU? This can easily lead to significant performance regressions for some users. As there seems to be some kind of runtime cpu detection, perhaps a bigger list of cpu targets could be built and shipped (even targets not supported by the buildd cpu). For correctness validation, a separate package containing the tests (if any) could be provided... Andreas PS: I have no clue what this package is good for :-)