[Debian-med-packaging] Bug#756780: [Help] Need help for architecture specific code (Was: Bug#756780: bowtie: FTBFS almost everywhere)
Andreas Tille
andreas at an3as.eu
Fri Aug 15 21:03:11 UTC 2014
Hi,
thanks for the hints which I forwarded upstream. While I've got no
explicit answer about this a new version was released which now even
fails to build on amd64 but with a different error. My guess is that
this is caused since upstream includes a code copy of an older version
of seqan-dev and we patched the code to cope with the latest version
in Debian. While beeing no C++ coder I guess another patch for
compatibility with the new version would be needed.
I commited the packaging to SVN[1] and the error message looks like
make[2]: Entering directory '/tmp/buildd/bowtie-1.1.0'
g++ -O3 -DCOMPILER_OPTIONS="\"-O3 -Wl,--hash-style=both -DPOPCNT_CAPABILITY -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fstack- protector-strong -Wformat -Werror=format-security -Wl,-z,relro\"" -Wl,--hash-style=both -DPOPCNT_CAPABILITY -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro \
-fno-strict-aliasing -DBOWTIE_VERSION="\"`cat VERSION`\"" -DBUILD_HOST="\"`hostname`\"" -DBUILD_TIME="\"`date`\"" -DCOMPILER_VERSION="\"`g++ -v 2>&1 | tail -1`\"" - D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DPREFETCH_LOCALITY=2 -DBOWTIE_MM -DBOWTIE_SHARED_MEM -DNDEBUG -Wall \
-I /usr/include/seqan -I third_party -I third_party \
-o bowtie-build-s ebwt_build.cpp \
ccnt_lut.cpp ref_read.cpp alphabet.cpp shmem.cpp edit.cpp ebwt.cpp tinythread.cpp bowtie_build_main.cpp \
-lpthread
In file included from blockwise_sa.h:13:0,
from ebwt.h:27,
from ebwt_build.cpp:11:
diff_sample.h: In member function 'void DifferenceCoverSample<T>::build()':
diff_sample.h:859:3: error: '_Context_LSS' was not declared in this scope
_Context_LSS<TIndexOff> c;
^
diff_sample.h:859:25: error: expected primary-expression before '>' token
_Context_LSS<TIndexOff> c;
^
diff_sample.h:859:27: error: 'c' was not declared in this scope
_Context_LSS<TIndexOff> c;
^
Makefile:205: recipe for target 'bowtie-build-s' failed
make[2]: *** [bowtie-build-s] Error 1
Any help would be really welcome
Andreas.
[1] svn://anonscm.debian.org/debian-med/trunk/packages/bowtie/trunk/
On Mon, Aug 04, 2014 at 12:58:42PM +0100, Wookey wrote:
> +++ Andreas Tille [2014-08-04 09:48 +0200]:
> > Hi,
> >
> > on arm*, powerpc, sparc and s390x architectures the build problem is:
> >
> > third_party/cpuid.h: In constructor 'Ebwt<TStr>::Ebwt(int, int32_t, int32_t, int32_t, int32_t, int32_t, const string&, bool, bool, uint32_t, uint32_t, uint32_t, int, std::vector<FileBuf*>&, std::vector<RefRecord>&, std::vector<unsigned int>&, uint32_t, const RefReadInParams&, uint32_t, int32_t, int32_t, bool, bool, bool) [with TStr = seqan::String<seqan::SimpleType<unsigned char, seqan::Dna_>, seqan::Alloc<> >; int32_t = int; std::string = std::basic_string<char>; uint32_t = unsigned int]':
> > third_party/cpuid.h:162:46: error: impossible constraint in 'asm'
> > __cpuid (__ext, __eax, __ebx, __ecx, __edx);
> > ^
> > third_party/cpuid.h:185:52: error: impossible constraint in 'asm'
> > __cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
>
> Those are x86 register names.
>
> > on mips* the problem is:
> >
> > /tmp/cciY8R8w.s:161449: Error: unrecognized opcode `push{l} $14'
> > /tmp/cciY8R8w.s:161450: Error: unrecognized opcode `popf{l|d}'
> > /tmp/cciY8R8w.s:161451: Error: unrecognized opcode `pushf{l|d}'
> > /tmp/cciY8R8w.s:161452: Error: unrecognized opcode `pop{l} $14'
> > /tmp/cciY8R8w.s:161453: Error: unrecognized opcode `popf{l|d}'
> > /tmp/cciY8R8w.s:161585: Error: unrecognized opcode `cpuid'
> > /tmp/cciY8R8w.s:161606: Error: unrecognized opcode `cpuid'
>
> And those are x86 instructions
>
> So from this info it looks a lot like it is building assembly code
> that can only work on x86.
>
> You need to either stop this package from building on other
> architectures, or arrange to use C instead of asm on other
> architectures (it may well have some fallback C for this already).
> This package has probably never been built for anything other than
> amd64 before.
>
> This package tries to do some optimised stuff and this code may well
> be about finding out the hardware capabilities in order to optimse
> correctly. You almost certainly don't actually need assembler for that
> and even if it did, intrinsics are usually a much better plan than
> real assembler these days.
>
> > I admit I do not have the slightest idea how to deal with issues
> > like this. Any (also partial help) is welcome.
>
> Hopefully the above will provide some clues. Ask upstream if it's even
> been built for other arches? Look for C fallbacks. Certainly disable
> building x86 ASM on non-x86 arches.
>
> Wookey
> --
> Principal hats: Linaro, Emdebian, Wookware, Balloonboard, ARM
> http://wookware.org/
>
>
> --
> To UNSUBSCRIBE, email to debian-mentors-REQUEST at lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster at lists.debian.org
> Archive: https://lists.debian.org/20140804115842.GC22378@stoneboat.aleph1.co.uk
>
>
--
http://fam-tille.de
More information about the Debian-med-packaging
mailing list