[Debian-med-packaging] Bug#902820: gmap: FTBFS on stretch/amd64 if CPU has SSE2 and nothing more

Santiago Vila sanvila at debian.org
Sun Jul 1 16:41:07 BST 2018


Package: src:gmap
Version: 2017-01-14-1
Severity: serious
Tags: ftbfs

Dear maintainer:

I tried to build this package in stretch but it failed:

--------------------------------------------------------------------------------
[...]
 debian/rules build-arch
dh  build-arch --parallel --with autotools_dev
   dh_testdir -a -O--parallel
   dh_update_autotools_config -a -O--parallel
   dh_autotools-dev_updateconfig -a -O--parallel
   debian/rules override_dh_auto_configure
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_configure -- --enable-shared --with-gmapdb=/var/cache/gmap \
--bindir=/usr/lib/gmap 
	./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --enable-shared --with-gmapdb=/var/cache/gmap --bindir=/usr/lib/gmap
checking package version... 2017-01-14
loading default site script ./config.site
checking CFLAGS... -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security
checking MPI_CFLAGS... 

[... snipped ...]

gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-inbuffer.o `test -f 'inbuffer.c' || echo './'`inbuffer.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-samheader.o `test -f 'samheader.c' || echo './'`samheader.c
samheader.c: In function 'SAM_header_change_HD_tosorted':
samheader.c:201:5: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer,sizeof(char),CHUNK,input);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
samheader.c:206:5: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer,sizeof(char),headerlen,input);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-outbuffer.o `test -f 'outbuffer.c' || echo './'`outbuffer.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-chimera.o `test -f 'chimera.c' || echo './'`chimera.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-datadir.o `test -f 'datadir.c' || echo './'`datadir.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-parserange.o `test -f 'parserange.c' || echo './'`parserange.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-getopt.o `test -f 'getopt.c' || echo './'`getopt.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c
gcc -DHAVE_CONFIG_H -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o gmap_sse2-gmap.o `test -f 'gmap.c' || echo './'`gmap.c
/bin/bash ../libtool  --tag=CC   --mode=link gcc  -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security   -Wl,-z,relro -Wl,-z,now -o gmap.sse2 gmap_sse2-except.o gmap_sse2-assert.o gmap_sse2-mem.o gmap_sse2-intlist.o gmap_sse2-list.o gmap_sse2-littleendian.o gmap_sse2-bigendian.o gmap_sse2-univinterval.o gmap_sse2-interval.o gmap_sse2-uintlist.o gmap_sse2-stopwatch.o gmap_sse2-semaphore.o gmap_sse2-access.o gmap_sse2-filestring.o gmap_sse2-iit-read-univ.o gmap_sse2-iit-read.o gmap_sse2-md5.o gmap_sse2-bzip2.o gmap_sse2-sequence.o gmap_sse2-reader.o gmap_sse2-genomicpos.o gmap_sse2-compress.o gmap_sse2-compress-write.o gmap_sse2-gbuffer.o gmap_sse2-genome.o gmap_sse2-popcount.o gmap_sse2-genome128_hr.o gmap_sse2-genome_sites.o gmap_sse2-genome-write.o gmap_sse2-bitpack64-read.o gmap_sse2-bitpack64-readtwo.o gmap_sse2-merge.o gmap_sse2-indexdb.o gmap_sse2-indexdb_hr.o gmap_sse2-oligo.o gmap_sse2-block.o gmap_sse2-chrom.o gmap_sse2-segmentpos.o gmap_sse2-chrnum.o gmap_sse2-uinttable.o gmap_sse2-gregion.o gmap_sse2-match.o gmap_sse2-matchpool.o gmap_sse2-diagnostic.o gmap_sse2-stage1.o gmap_sse2-diag.o gmap_sse2-diagpool.o gmap_sse2-cmet.o gmap_sse2-atoi.o gmap_sse2-orderstat.o gmap_sse2-oligoindex_hr.o gmap_sse2-intron.o gmap_sse2-maxent.o gmap_sse2-maxent_hr.o gmap_sse2-pair.o gmap_sse2-pairpool.o gmap_sse2-cellpool.o gmap_sse2-stage2.o gmap_sse2-doublelist.o gmap_sse2-smooth.o gmap_sse2-splicestringpool.o gmap_sse2-splicetrie_build.o gmap_sse2-splicetrie.o gmap_sse2-boyer-moore.o gmap_sse2-dynprog.o gmap_sse2-dynprog_simd.o gmap_sse2-dynprog_single.o gmap_sse2-dynprog_genome.o gmap_sse2-dynprog_cdna.o gmap_sse2-dynprog_end.o gmap_sse2-translation.o gmap_sse2-pbinom.o gmap_sse2-changepoint.o gmap_sse2-stage3.o gmap_sse2-request.o gmap_sse2-result.o gmap_sse2-output.o gmap_sse2-inbuffer.o gmap_sse2-samheader.o gmap_sse2-outbuffer.o gmap_sse2-chimera.o gmap_sse2-datadir.o gmap_sse2-parserange.o gmap_sse2-getopt.o gmap_sse2-getopt1.o gmap_sse2-gmap.o  -lz -lbz2 -lm 
libtool: link: gcc -pthread -DTARGET=\"x86_64-pc-linux-gnu\" -DGMAPDB=\"/var/cache/gmap\" -mpopcnt -DHAVE_SSE2=1 -msse2 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z -Wl,relro -Wl,-z -Wl,now -o gmap.sse2 gmap_sse2-except.o gmap_sse2-assert.o gmap_sse2-mem.o gmap_sse2-intlist.o gmap_sse2-list.o gmap_sse2-littleendian.o gmap_sse2-bigendian.o gmap_sse2-univinterval.o gmap_sse2-interval.o gmap_sse2-uintlist.o gmap_sse2-stopwatch.o gmap_sse2-semaphore.o gmap_sse2-access.o gmap_sse2-filestring.o gmap_sse2-iit-read-univ.o gmap_sse2-iit-read.o gmap_sse2-md5.o gmap_sse2-bzip2.o gmap_sse2-sequence.o gmap_sse2-reader.o gmap_sse2-genomicpos.o gmap_sse2-compress.o gmap_sse2-compress-write.o gmap_sse2-gbuffer.o gmap_sse2-genome.o gmap_sse2-popcount.o gmap_sse2-genome128_hr.o gmap_sse2-genome_sites.o gmap_sse2-genome-write.o gmap_sse2-bitpack64-read.o gmap_sse2-bitpack64-readtwo.o gmap_sse2-merge.o gmap_sse2-indexdb.o gmap_sse2-indexdb_hr.o gmap_sse2-oligo.o gmap_sse2-block.o gmap_sse2-chrom.o gmap_sse2-segmentpos.o gmap_sse2-chrnum.o gmap_sse2-uinttable.o gmap_sse2-gregion.o gmap_sse2-match.o gmap_sse2-matchpool.o gmap_sse2-diagnostic.o gmap_sse2-stage1.o gmap_sse2-diag.o gmap_sse2-diagpool.o gmap_sse2-cmet.o gmap_sse2-atoi.o gmap_sse2-orderstat.o gmap_sse2-oligoindex_hr.o gmap_sse2-intron.o gmap_sse2-maxent.o gmap_sse2-maxent_hr.o gmap_sse2-pair.o gmap_sse2-pairpool.o gmap_sse2-cellpool.o gmap_sse2-stage2.o gmap_sse2-doublelist.o gmap_sse2-smooth.o gmap_sse2-splicestringpool.o gmap_sse2-splicetrie_build.o gmap_sse2-splicetrie.o gmap_sse2-boyer-moore.o gmap_sse2-dynprog.o gmap_sse2-dynprog_simd.o gmap_sse2-dynprog_single.o gmap_sse2-dynprog_genome.o gmap_sse2-dynprog_cdna.o gmap_sse2-dynprog_end.o gmap_sse2-translation.o gmap_sse2-pbinom.o gmap_sse2-changepoint.o gmap_sse2-stage3.o gmap_sse2-request.o gmap_sse2-result.o gmap_sse2-output.o gmap_sse2-inbuffer.o gmap_sse2-samheader.o gmap_sse2-outbuffer.o gmap_sse2-chimera.o gmap_sse2-datadir.o gmap_sse2-parserange.o gmap_sse2-getopt.o gmap_sse2-getopt1.o gmap_sse2-gmap.o  -lz -lbz2 -lm -pthread
gmap_sse2-oligoindex_hr.o: In function `store_positions_fwd_simd':
./src/oligoindex_hr.c:21180: undefined reference to `Atoi_reduce_ct'
./src/oligoindex_hr.c:21180: undefined reference to `Atoi_reduce_ct'
./src/oligoindex_hr.c:21181: undefined reference to `Atoi_reduce_ct'
./src/oligoindex_hr.c:21181: undefined reference to `Atoi_reduce_ct'
./src/oligoindex_hr.c:21182: undefined reference to `Atoi_reduce_ct'
./src/oligoindex_hr.c:21184: undefined reference to `Atoi_reduce_ga'
./src/oligoindex_hr.c:21184: undefined reference to `Atoi_reduce_ga'
./src/oligoindex_hr.c:21185: undefined reference to `Atoi_reduce_ga'
./src/oligoindex_hr.c:21185: undefined reference to `Atoi_reduce_ga'
./src/oligoindex_hr.c:21186: undefined reference to `Atoi_reduce_ga'
collect2: error: ld returned 1 exit status
Makefile:3423: recipe for target 'gmap.sse2' failed
make[3]: *** [gmap.sse2] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src'
Makefile:3292: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src'
Makefile:432: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_build: make -j1 returned exit code 2
debian/rules:19: recipe for target 'build-arch' failed
make: *** [build-arch] Error 2
dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2
--------------------------------------------------------------------------------

A diff between a failed build and a successful build (in a machine
having the extra features) yields this result:

@@ -448,16 +448,25 @@
 checking compiler is defective and requires an immediate in sse2 shift commands... no
 checking for whether simd is enabled... not specified so enabled by default
 checking for sse2 support... yes
-checking for ssse3 support... no
-checking for sse4.1 support... no
-checking for sse4.2 support... no
-checking for popcnt support... no
+checking for ssse3 support... yes
+checking for sse4.1 support... yes
+checking for sse4.2 support... yes
+checking for popcnt support... yes
 checking for bmi1 support... no
-checking for avx2 support... no
+checking for avx2 support... yes
 checking for bmi2 support... no
 checking for avx512 support... no
 checking whether C compiler accepts -msse2... yes
 checking for emmintrin.h header file... yes
+checking whether C compiler accepts -msse2 -mssse3... yes
+checking for tmmintrin.h header file... yes
+checking whether C compiler accepts -msse2 -mssse3 -msse4.1... yes
+checking for smmintrin.h header file... yes
+checking whether C compiler accepts -msse2 -mssse3 -msse4.1 -msse4.2... yes
+checking for nmmintrin.h header file... yes
+checking for mm_popcnt support... yes
+checking whether C compiler accepts -msse2 -mssse3 -msse4.1 -msse4.2 -mavx2 -mbmi2... yes
+checking for immintrin.h header file... yes
 checking gmapdb... /var/cache/gmap
 checking MAX_STACK_READLENGTH... 300
 checking for zlib support... enabled
@@ -516,8 +525,8 @@
 checking standard linker flags to be used... 
 checking pthread compiler flags to be used... -pthread
 checking popcnt flags to be used... -mpopcnt
-checking compile level... sse2
-checking SSE2 compiler flags to be used... -msse2
+checking compile level... avx2
+checking AVX2 compiler flags to be used... -msse2 -mssse3 -msse4.1 -msse4.2 -mavx2 -mbmi2

AFAIK on Debian/amd64 only SSE2 is allowed to be assumed by default.

I tried to compare my build logs with official ones, but there is none:

https://buildd.debian.org/status/package.php?p=gmap

(( Could you please consider source-only uploads? i.e. "dpkg-buildpackage -S" )).

In either case, I'm putting my failed build logs here in case you need
them, they were made with sbuild on different virtual machines running
Debian stretch:

https://people.debian.org/~sanvila/build-logs/gmap/

(Note: All the failures seem to be related to detection of CPU features,
but since the machines are diverse, the failures are not always the same).

Thanks.



More information about the Debian-med-packaging mailing list