Bug 203334 - biology/gmap: Update to 2015.09.21
Summary: biology/gmap: Update to 2015.09.21
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Guido Falsi
URL:
Keywords: needs-qa, patch
Depends on:
Blocks:
 
Reported: 2015-09-25 13:55 UTC by Jason W. Bacon
Modified: 2015-10-27 18:50 UTC (History)
2 users (show)

See Also:
bugzilla: maintainer-feedback? (rpz)


Attachments
Unified diff (3.27 KB, text/plain)
2015-09-25 13:55 UTC, Jason W. Bacon
no flags Details
Update with new option (3.10 KB, patch)
2015-10-23 20:46 UTC, Guido Falsi
no flags Details | Diff
new patch (3.86 KB, patch)
2015-10-24 07:40 UTC, Guido Falsi
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jason W. Bacon freebsd_committer freebsd_triage 2015-09-25 13:55:38 UTC
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.
Comment 1 Guido Falsi freebsd_committer freebsd_triage 2015-10-23 08:29:55 UTC
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!
Comment 2 Jason W. Bacon freebsd_committer freebsd_triage 2015-10-23 13:51:34 UTC
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)
Comment 3 Guido Falsi freebsd_committer freebsd_triage 2015-10-23 14:42:22 UTC
(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!
Comment 4 Guido Falsi freebsd_committer freebsd_triage 2015-10-23 15:26:30 UTC
(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?
Comment 5 Guido Falsi freebsd_committer freebsd_triage 2015-10-23 20:46:28 UTC
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.
Comment 6 Jason W. Bacon freebsd_committer freebsd_triage 2015-10-23 21:14:43 UTC
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
Comment 7 Guido Falsi freebsd_committer freebsd_triage 2015-10-24 07:40:25 UTC
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.
Comment 8 Jason W. Bacon freebsd_committer freebsd_triage 2015-10-24 14:47:10 UTC
Looks good, thanks!
Comment 9 Guido Falsi freebsd_committer freebsd_triage 2015-10-27 18:50:42 UTC
Committed. Thanks!
Comment 10 commit-hook freebsd_committer freebsd_triage 2015-10-27 18:50:49 UTC
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