Created attachment 161380 [details] Unified diff Upgrade to latest stable and add license info. It appears this port has not been maintained for a long time, so I'll offer to adopt it if the maintainer is no longer interested.
Hi, While testing I noticed this ports fails to build on i386 with errors like this: cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -mpopcnt -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -DTARGET=\"i386-portbld-freebsd10.2\" -DGMAPDB=\"/usr/local/share\" -O2 -pipe -fstack-protector -fno-strict-aliasing -MT gmap-bitpack64-read.o -MD -MP -MF .deps/gmap-bitpack64-read.Tpo -c -o gmap-bitpack64-read.o `test -f 'bitpack64-read.c' || echo './'`bitpack64-read.c genome128_hr.c:18631:12: warning: implicit declaration of function '_mm_extract_epi64' is invalid in C99 [-Wimplicit-function-declaration] if ((x = _mm_extract_epi64(_diff,1)) != 0) { ^ genome128_hr.c:19783:12: warning: implicit declaration of function '_mm_popcnt_u64' is invalid in C99 [-Wimplicit-function-declaration] return popcount_ones(diff); ^ genome128_hr.c:18557:31: note: expanded from macro 'popcount_ones' #define popcount_ones(_diff) (_mm_popcnt_u64(_mm_extract_epi64(_diff,0)) + _mm_popcnt_u64(_mm_extract_epi64(_diff,1))) ^ and later: gmapl-genome128_hr.o: In function `Genome_consecutive_matches_rightward': genome128_hr.c:(.text+0x1522): undefined reference to `_mm_extract_epi64' genome128_hr.c:(.text+0x154d): undefined reference to `_mm_extract_epi64' looks like it's trying to use 64bit SSE instructions, which are not available in 32bit mode. Looks like a programming error upstream, but maybe it can be fixed and reported to the developers. I'd rather fix this before committing the update, if at all possible. I'll be looking at a fix later, in the while I posted this report for you so you can have a look too. If you need the full log I can post it to you. Thanks!
Hi Guido, I'm not seeing this error when building on real i386 systems. Could this be a misdetection issue under Poudriere running on an AMD64 system? Below is a snippet from my dmesg.boot and from a build on that system. Note the absence of -msse3, etc. in the compiler output. Cheers, Jason FreeBSD 10.1-RELEASE-p16 #0: Tue Jul 28 11:41:12 UTC 2015 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386 FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512 VT: running with driver "vga". CPU: Intel(R) Pentium(R) M processor 1600MHz (1598.68-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x695 Family = 0x6 Model = 0x9 Stepping = 5 Features=0xa7e9f9bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,TM,PBE> Features2=0x180<EST,TM2> cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -mmmx -msse -msse2 -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT atoiindex-getopt.o -MD -MP -MF .deps/atoiindex-getopt.Tpo -c -o atoiindex-getopt.o `test -f 'getopt.c' || echo './'`getopt.c mv -f .deps/atoiindex-getopt.Tpo .deps/atoiindex-getopt.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -mmmx -msse -msse2 -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT atoiindex-getopt1.o -MD -MP -MF .deps/atoiindex-getopt1.Tpo -c -o atoiindex-getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c mv -f .deps/atoiindex-getopt1.Tpo .deps/atoiindex-getopt1.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -mmmx -msse -msse2 -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT atoiindex-atoiindex.o -MD -MP -MF .deps/atoiindex-atoiindex.Tpo -c -o atoiindex-atoiindex.o `test -f 'atoiindex.c' || echo './'`atoiindex.c mv -f .deps/atoiindex-atoiindex.Tpo .deps/atoiindex-atoiindex.Po /bin/sh ../libtool --tag=CC --mode=link cc -D_THREAD_SAFE -pthread -mmmx -msse -msse2 -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -fstack-protector -o atoiindex atoiindex-except.o atoiindex-assert.o atoiindex-mem.o atoiindex-littleendian.o atoiindex-bigendian.o atoiindex-genomicpos.o atoiindex-stopwatch.o atoiindex-access.o atoiindex-univinterval.o atoiindex-interval.o atoiindex-filestring.o atoiindex-iit-read-univ.o atoiindex-iit-read.o atoiindex-compress.o atoiindex-compress-write.o atoiindex-popcount.o atoiindex-genome128_hr.o atoiindex-bitpack64-read.o atoiindex-bitpack64-readtwo.o atoiindex-bitpack64-write.o atoiindex-indexdb.o atoiindex-indexdb-write.o atoiindex-atoi.o atoiindex-md5.o atoiindex-bzip2.o atoiindex-sequence.o atoiindex-genome.o atoiindex-uintlist.o atoiindex-intlist.o atoiindex-saca-k.o atoiindex-uint8list.o atoiindex-bytecoding.o atoiindex-sarray-write.o atoiindex-list.o atoiindex-datadir.o atoiindex-getopt.o atoiindex-getopt1.o atoiindex-atoiindex.o -lz -lbz2 -lm libtool: link: cc -D_THREAD_SAFE -pthread -mmmx -msse -msse2 -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -fstack-protector -o atoiindex atoiindex-except.o atoiindex-assert.o atoiindex-mem.o atoiindex-littleendian.o atoiindex-bigendian.o atoiindex-genomicpos.o atoiindex-stopwatch.o atoiindex-access.o atoiindex-univinterval.o atoiindex-interval.o atoiindex-filestring.o atoiindex-iit-read-univ.o atoiindex-iit-read.o atoiindex-compress.o atoiindex-compress-write.o atoiindex-popcount.o atoiindex-genome128_hr.o atoiindex-bitpack64-read.o atoiindex-bitpack64-readtwo.o atoiindex-bitpack64-write.o atoiindex-indexdb.o atoiindex-indexdb-write.o atoiindex-atoi.o atoiindex-md5.o atoiindex-bzip2.o atoiindex-sequence.o atoiindex-genome.o atoiindex-uintlist.o atoiindex-intlist.o atoiindex-saca-k.o atoiindex-uint8list.o atoiindex-bytecoding.o atoiindex-sarray-write.o atoiindex-list.o atoiindex-datadir.o atoiindex-getopt.o atoiindex-getopt1.o atoiindex-atoiindex.o -lz -lbz2 -lm -pthread cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-except.o -MD -MP -MF .deps/sam_sort-except.Tpo -c -o sam_sort-except.o `test -f 'except.c' || echo './'`except.c mv -f .deps/sam_sort-except.Tpo .deps/sam_sort-except.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-assert.o -MD -MP -MF .deps/sam_sort-assert.Tpo -c -o sam_sort-assert.o `test -f 'assert.c' || echo './'`assert.c mv -f .deps/sam_sort-assert.Tpo .deps/sam_sort-assert.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-mem.o -MD -MP -MF .deps/sam_sort-mem.Tpo -c -o sam_sort-mem.o `test -f 'mem.c' || echo './'`mem.c mv -f .deps/sam_sort-mem.Tpo .deps/sam_sort-mem.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-littleendian.o -MD -MP -MF .deps/sam_sort-littleendian.Tpo -c -o sam_sort-littleendian.o `test -f 'littleendian.c' || echo './'`littleendian.c mv -f .deps/sam_sort-littleendian.Tpo .deps/sam_sort-littleendian.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-bigendian.o -MD -MP -MF .deps/sam_sort-bigendian.Tpo -c -o sam_sort-bigendian.o `test -f 'bigendian.c' || echo './'`bigendian.c mv -f .deps/sam_sort-bigendian.Tpo .deps/sam_sort-bigendian.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-intlist.o -MD -MP -MF .deps/sam_sort-intlist.Tpo -c -o sam_sort-intlist.o `test -f 'intlist.c' || echo './'`intlist.c mv -f .deps/sam_sort-intlist.Tpo .deps/sam_sort-intlist.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-list.o -MD -MP -MF .deps/sam_sort-list.Tpo -c -o sam_sort-list.o `test -f 'list.c' || echo './'`list.c mv -f .deps/sam_sort-list.Tpo .deps/sam_sort-list.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-stopwatch.o -MD -MP -MF .deps/sam_sort-stopwatch.Tpo -c -o sam_sort-stopwatch.o `test -f 'stopwatch.c' || echo './'`stopwatch.c mv -f .deps/sam_sort-stopwatch.Tpo .deps/sam_sort-stopwatch.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-access.o -MD -MP -MF .deps/sam_sort-access.Tpo -c -o sam_sort-access.o `test -f 'access.c' || echo './'`access.c access.c:686:17: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] filename,*len); ^~~~ access.c:862:18: warning: format specifies type 'intmax_t' (aka 'long long') but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] fd,offset,length,errno,strerror(errno)); ^~~~~~ access.c:933:8: warning: format specifies type 'intmax_t' (aka 'long long') but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] *len,length,errno,strerror(errno)); ^~~~ access.c:1000:15: warning: format specifies type 'intmax_t' (aka 'long long') but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] offset,length,errno,strerror(errno)); ^~~~~~ access.c:1087:8: warning: format specifies type 'intmax_t' (aka 'long long') but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] *len,length,errno,strerror(errno)); ^~~~ 5 warnings generated. mv -f .deps/sam_sort-access.Tpo .deps/sam_sort-access.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-univinterval.o -MD -MP -MF .deps/sam_sort-univinterval.Tpo -c -o sam_sort-univinterval.o `test -f 'univinterval.c' || echo './'`univinterval.c mv -f .deps/sam_sort-univinterval.Tpo .deps/sam_sort-univinterval.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-interval.o -MD -MP -MF .deps/sam_sort-interval.Tpo -c -o sam_sort-interval.o `test -f 'interval.c' || echo './'`interval.c mv -f .deps/sam_sort-interval.Tpo .deps/sam_sort-interval.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-uintlist.o -MD -MP -MF .deps/sam_sort-uintlist.Tpo -c -o sam_sort-uintlist.o `test -f 'uintlist.c' || echo './'`uintlist.c mv -f .deps/sam_sort-uintlist.Tpo .deps/sam_sort-uintlist.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-filestring.o -MD -MP -MF .deps/sam_sort-filestring.Tpo -c -o sam_sort-filestring.o `test -f 'filestring.c' || echo './'`filestring.c mv -f .deps/sam_sort-filestring.Tpo .deps/sam_sort-filestring.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-iit-read-univ.o -MD -MP -MF .deps/sam_sort-iit-read-univ.Tpo -c -o sam_sort-iit-read-univ.o `test -f 'iit-read-univ.c' || echo './'`iit-read-univ.c mv -f .deps/sam_sort-iit-read-univ.Tpo .deps/sam_sort-iit-read-univ.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-iit-read.o -MD -MP -MF .deps/sam_sort-iit-read.Tpo -c -o sam_sort-iit-read.o `test -f 'iit-read.c' || echo './'`iit-read.c mv -f .deps/sam_sort-iit-read.Tpo .deps/sam_sort-iit-read.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-samheader.o -MD -MP -MF .deps/sam_sort-samheader.Tpo -c -o sam_sort-samheader.o `test -f 'samheader.c' || echo './'`samheader.c mv -f .deps/sam_sort-samheader.Tpo .deps/sam_sort-samheader.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-samread.o -MD -MP -MF .deps/sam_sort-samread.Tpo -c -o sam_sort-samread.o `test -f 'samread.c' || echo './'`samread.c mv -f .deps/sam_sort-samread.Tpo .deps/sam_sort-samread.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-datadir.o -MD -MP -MF .deps/sam_sort-datadir.Tpo -c -o sam_sort-datadir.o `test -f 'datadir.c' || echo './'`datadir.c mv -f .deps/sam_sort-datadir.Tpo .deps/sam_sort-datadir.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-getopt.o -MD -MP -MF .deps/sam_sort-getopt.Tpo -c -o sam_sort-getopt.o `test -f 'getopt.c' || echo './'`getopt.c mv -f .deps/sam_sort-getopt.Tpo .deps/sam_sort-getopt.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-getopt1.o -MD -MP -MF .deps/sam_sort-getopt1.Tpo -c -o sam_sort-getopt1.o `test -f 'getopt1.c' || echo './'`getopt1.c mv -f .deps/sam_sort-getopt1.Tpo .deps/sam_sort-getopt1.Po cc -DHAVE_CONFIG_H -I. -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -MT sam_sort-sam_sort.o -MD -MP -MF .deps/sam_sort-sam_sort.Tpo -c -o sam_sort-sam_sort.o `test -f 'sam_sort.c' || echo './'`sam_sort.c mv -f .deps/sam_sort-sam_sort.Tpo .deps/sam_sort-sam_sort.Po /bin/sh ../libtool --tag=CC --mode=link cc -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -fstack-protector -o sam_sort sam_sort-except.o sam_sort-assert.o sam_sort-mem.o sam_sort-littleendian.o sam_sort-bigendian.o sam_sort-intlist.o sam_sort-list.o sam_sort-stopwatch.o sam_sort-access.o sam_sort-univinterval.o sam_sort-interval.o sam_sort-uintlist.o sam_sort-filestring.o sam_sort-iit-read-univ.o sam_sort-iit-read.o sam_sort-samheader.o sam_sort-samread.o sam_sort-datadir.o sam_sort-getopt.o sam_sort-getopt1.o sam_sort-sam_sort.o -lm libtool: link: cc -D_THREAD_SAFE -pthread -DGMAPDB=\"/usr/local/share\" -DUTILITYP=1 -O2 -pipe -fstack-protector -fno-strict-aliasing -fstack-protector -o sam_sort sam_sort-except.o sam_sort-assert.o sam_sort-mem.o sam_sort-littleendian.o sam_sort-bigendian.o sam_sort-intlist.o sam_sort-list.o sam_sort-stopwatch.o sam_sort-access.o sam_sort-univinterval.o sam_sort-interval.o sam_sort-uintlist.o sam_sort-filestring.o sam_sort-iit-read-univ.o sam_sort-iit-read.o sam_sort-samheader.o sam_sort-samread.o sam_sort-datadir.o sam_sort-getopt.o sam_sort-getopt1.o sam_sort-sam_sort.o -lm -pthread gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' Making all in mpi gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' gmake[2]: Nothing to be done for 'all'. gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' Making all in util gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' cp gmap_compress.pl gmap_compress chmod +x gmap_compress cp gmap_uncompress.pl gmap_uncompress chmod +x gmap_uncompress cp gmap_process.pl gmap_process chmod +x gmap_process cp gmap_build.pl gmap_build chmod +x gmap_build cp gmap_reassemble.pl gmap_reassemble chmod +x gmap_reassemble cp md_coords.pl md_coords chmod +x md_coords cp fa_coords.pl fa_coords chmod +x fa_coords cp psl_splicesites.pl psl_splicesites chmod +x psl_splicesites cp psl_introns.pl psl_introns chmod +x psl_introns cp psl_genes.pl psl_genes chmod +x psl_genes cp ensembl_genes.pl ensembl_genes chmod +x ensembl_genes cp gtf_splicesites.pl gtf_splicesites chmod +x gtf_splicesites cp gtf_introns.pl gtf_introns chmod +x gtf_introns cp gtf_genes.pl gtf_genes chmod +x gtf_genes cp gff3_splicesites.pl gff3_splicesites chmod +x gff3_splicesites cp gff3_introns.pl gff3_introns chmod +x gff3_introns cp gff3_genes.pl gff3_genes chmod +x gff3_genes cp dbsnp_iit.pl dbsnp_iit chmod +x dbsnp_iit cp gvf_iit.pl gvf_iit chmod +x gvf_iit cp vcf_iit.pl vcf_iit chmod +x vcf_iit gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' Making all in tests gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[2]: Nothing to be done for 'all'. gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[2]: Nothing to be done for 'all-am'. gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[1]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' ===> Staging for gmap-2015.09.21 ===> gmap-2015.09.21 depends on package: perl5>=5.20<5.21 - found ===> Generating temporary packing list gmake[1]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' Making install in src gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' gmake[3]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' test -z "/usr/local/bin" || /bin/mkdir -p "/usr/wip/biology/gmap/work/stage/usr/local/bin" /bin/sh ../libtool --mode=install install -s -m 555 gmap gmapl get-genome gmapindex iit_store iit_get iit_dump gsnap gsnapl uniqscan uniqscanl snpindex cmetindex atoiindex sam_sort '/usr/wip/biology/gmap/work/stage/usr/local/bin' libtool: install: install -m 555 -s gmap /usr/wip/biology/gmap/work/stage/usr/local/bin/gmap libtool: install: install -m 555 -s gmapl /usr/wip/biology/gmap/work/stage/usr/local/bin/gmapl libtool: install: install -m 555 -s get-genome /usr/wip/biology/gmap/work/stage/usr/local/bin/get-genome libtool: install: install -m 555 -s gmapindex /usr/wip/biology/gmap/work/stage/usr/local/bin/gmapindex libtool: install: install -m 555 -s iit_store /usr/wip/biology/gmap/work/stage/usr/local/bin/iit_store libtool: install: install -m 555 -s iit_get /usr/wip/biology/gmap/work/stage/usr/local/bin/iit_get libtool: install: install -m 555 -s iit_dump /usr/wip/biology/gmap/work/stage/usr/local/bin/iit_dump libtool: install: install -m 555 -s gsnap /usr/wip/biology/gmap/work/stage/usr/local/bin/gsnap libtool: install: install -m 555 -s gsnapl /usr/wip/biology/gmap/work/stage/usr/local/bin/gsnapl libtool: install: install -m 555 -s uniqscan /usr/wip/biology/gmap/work/stage/usr/local/bin/uniqscan libtool: install: install -m 555 -s uniqscanl /usr/wip/biology/gmap/work/stage/usr/local/bin/uniqscanl libtool: install: install -m 555 -s snpindex /usr/wip/biology/gmap/work/stage/usr/local/bin/snpindex libtool: install: install -m 555 -s cmetindex /usr/wip/biology/gmap/work/stage/usr/local/bin/cmetindex libtool: install: install -m 555 -s atoiindex /usr/wip/biology/gmap/work/stage/usr/local/bin/atoiindex libtool: install: install -m 555 -s sam_sort /usr/wip/biology/gmap/work/stage/usr/local/bin/sam_sort gmake[3]: Nothing to be done for 'install-data-am'. gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/src' Making install in mpi gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' gmake[3]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' test -z "/usr/local/bin" || /bin/mkdir -p "/usr/wip/biology/gmap/work/stage/usr/local/bin" gmake[3]: Nothing to be done for 'install-data-am'. gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/mpi' Making install in util gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' gmake[3]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' test -z "/usr/local/bin" || /bin/mkdir -p "/usr/wip/biology/gmap/work/stage/usr/local/bin" install -m 555 gmap_compress gmap_uncompress gmap_process gmap_build gmap_reassemble md_coords fa_coords psl_splicesites psl_introns psl_genes ensembl_genes gtf_splicesites gtf_introns gtf_genes gff3_splicesites gff3_introns gff3_genes dbsnp_iit gvf_iit vcf_iit '/usr/wip/biology/gmap/work/stage/usr/local/bin' gmake[3]: Nothing to be done for 'install-data-am'. gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/util' Making install in tests gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[3]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[3]: Nothing to be done for 'install-exec-am'. gmake[3]: Nothing to be done for 'install-data-am'. gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21/tests' gmake[2]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[3]: Entering directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[3]: Nothing to be done for 'install-exec-am'. gmake[3]: Nothing to be done for 'install-data-am'. gmake[3]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[2]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' gmake[1]: Leaving directory '/usr/wip/biology/gmap/work/gmap-2015-09-21' ====> Compressing man pages (compress-man) ====> Running Q/A tests (stage-qa)
(In reply to jwbacon from comment #2) My poudriere has finished it's run after I sent you the comment, and a new fact shows up. it does not fail on 9.3 i386, and you tested with 10.1 i386, while I also tested head and 10.2 (which are both failing on i386). So It could be failing due to something changed in the base system or the compiler after 10.1 was released. I'll have to investigate a little, please allow me some time, if you discover anything useful in the meantime please report it. Thanks!
(In reply to Guido Falsi from comment #3) Hi again, After some digging I concur with you, this is related with the sse flags. BTW I'm also compiling in a i386 jail on a amd64 system. This is part of the cause and allowed me to spot this problem. The port is detecting them on the system it's compiling on. This is really bad for packaging: the resulting binary will be tailored to the builder machine, and could even fail to work on users' systems. This detection is so aggressive that even when running in a i386 jail it enables things not available in 32 bit mode(and it finds a pair of those on the i5 CPU I've got). Such build time detection has to be disabled for package building. I'll followup with a patch to the port adding an option to enable the runtime detection. This option needs to be turned off by default and I'll allow only the most basic mmx and SSE support to be compiled in by default, so that the resulting binary package can work on most systems. When the option will be turned on (for example for people building from ports) it will simply allow the port to detect and use any CPU features. Are you ok with this plan?
Created attachment 162401 [details] Update with new option I have prepared and tested this patch with the new option which controls all SIMD optimizations. Users an enable it to get the software compiled with optimizations for their machine. Do you agree with this patch? Thanks.
I think this is a reasonable workaround. I'll explore potential upstream solutions to see if there's a way to get a better optimized binary package. It might also be good to add something like the following to pkg-message: ==== Note Some potentially valuable optimizations are disabled to ensure portability of the binary package. If you want to maximize performance for newer hardware, run: cd /usr/ports/biology/gmap make config make clean make deinstall make install ==== Thanks for you hard work on this. Jason
Created attachment 162406 [details] new patch I've added a simple pkg-messsage, which will show after installing. Please check if it's ok to you. I've avoided explaining how to use ports, that's in the documentation and just wrote the needed information. There really is no way, though, to get an official optimized package that will work across the board, even if the cluster is able to compile an optimized binary, that binary would work only on systems with CPUs having all the required features. Binary packages should work on any supported system, so the only way to ensure this is not depending on any CPU feature. People building their own packages or from ports can take responsibility for enabling the flag.
Looks good, thanks!
Committed. Thanks!
A commit references this bug: Author: madpilot Date: Tue Oct 27 18:49:49 UTC 2015 New revision: 400336 URL: https://svnweb.freebsd.org/changeset/ports/400336 Log: - Update to 2015.09.21 - Add License - Add SIMD option disabled by default to avoid creating official packags with CPU specific optimizations - Add pkg-message explaining how to get an optimized binary - Assign maintainership to submitter PR: 203334 Submitted by: jwbacon at tds.net Approved by: Maintainer timeout Changes: head/biology/gmap/Makefile head/biology/gmap/distinfo head/biology/gmap/files/ head/biology/gmap/pkg-message head/biology/gmap/pkg-plist