SRA tools is a toolkit for using data in the INSDC Sequence Read Archives. SRAs operated by International Nucleotide Sequence Database Collaboration houses sequence reads and alignments generated by "next-gen" sequencers. SRA tools allows conversion of SRA files, which INSDC SRAs maintain, from/to other formats that the sequenecers generate including fastq, sff, etc. The source codes are available in 3 components, ngs, ncbi-vdb, and sra-tools, to which the ports basically correspond. biology/ngs-sdk: C++ front-end API and others (a part of GitHub repo ncbi/ngs) biology/ncbi-vdb: virtualized back-end engine library (GitHub repo ncbi/ncbi-vdb) biology/sra-tools: executables (GitHub repo ncbi/sra-tools) However, separation and dependencies among them are somewhat strange: * ncbi-vdb depends on the source code of ngs-sdk * sra-tools depends on the build results of ncbi-vdb as well as ngs-sdk library Java- and Python-related libraries are excluded from the ports, since they are not necessary for building sra-tools executables and thus out of popular demand, I believe; somebody can make separate ports. Other changes * to modify the build system to adapt FreeBSD * to respect CC, CXX, CFLAGS, LDFLAGS, etc. * to use system or locally installed libraries rather than bundled one Note: Building of sra-tools is successful on i386; however, resultant binary produces somewhat strange outputs. The upstream says "[...] we can look at providing support for an x32 build, although since we can't guarantee that it works." https://github.com/ncbi/ncbi-vdb/issues/8 So I dare to mark BROKEN_i386. On the other hand, amd64 binary seems OK.
Created attachment 187512 [details] svn diff for biology/ngs-sdk PASSED: poudriere testport (amd64/i386 10.4) & make test (amd64/i386 10.4)
Created attachment 187513 [details] svn diff for biology/ncbi-vdb PASSED: poudriere testport (amd64/i386 10.4) with network-related difficulties for performing make test (amd64/i386 10.4) (but it seems almost OK)
Created attachment 187514 [details] svn diff for biology/sra-tools PASSED: poudriere testport (amd64/i386 10.4) & make test (amd64/i386 10.4) with i386 binary of fastq-dump makes strange output
Created attachment 187515 [details] poudriere testport logs on 10.4R amd64
Created attachment 187516 [details] poudriere testport logs on 10.4R i386
Hi, Why are they ONLY_FOR_ARCHS=amd64 i386? There should be the reason next to ONLY_FOR_ARCHS statement. Yuri
(In reply to Yuri Victorovich from comment #6) For ncbi-vdb & sra-tools, it's already there. For ngs-sdk, it doesn't have ONLY_FOR_ARCHS although the configure & build infrastructure will rejects archs other than i386/amd64. Of course, it is probably possible to build ngs-sdk on other archs; however, ngs-sdk does not have popular demand other than sra-tools, AND the upstream may switch to CMake or GNU configure https://github.com/ncbi/ngs/issues/14 so tweaking the infrastructure furthermore will be waste of effort.
Thanks for having put these ports together. For what it's worth I built them and tested fastq-dump, which seems to work fine. Could the ports be committed?
Hitting this one one of our systems, with or without MAKE_JOBS_UNSAFE. Everything built fine on my laptop, but failed here. I'd guess that the configure script is sensitive to something. c++ -o /usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/amd64-portbld-freebsd11.2/sra-tools/bsd/clang/x86_64/rel/bin/ngs-pileup.2.8.2 -fstack-protector -DNDEBUG -m64 -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -DNDEBUG -m64 -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib ngs-pileup.o main.o -L/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/amd64-portbld-freebsd11.2/sra-tools/bsd/clang/x86_64/rel/lib -L/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/amd64-portbld-freebsd11.2/sra-tools/bsd/clang/x86_64/rel/ilib -L/usr/local/lib -L/usr/ports/wip/ncbi-vdb/work/ncbi-vdb-2.8.2-2/amd64-portbld-freebsd11.2/ncbi-vdb/bsd/clang/x86_64/rel/lib -L/usr/ports/wip/ncbi-vdb/work/ncbi-vdb-2.8.2-2/amd64-portbld-freebsd11.2/ncbi-vdb/bsd/clang/x86_64/rel/ilib -Wl,-Bstatic -lkapp -lncbi-ngs-c++ -lncbi-vdb-static -lngs-c++ -ltk-version -Wl,-Bdynamic -lz -lbz2 -lmbedtls -lmbedcrypto -lmbedx509 -lpthread -L/usr/local/lib -lxml2 -Wl,-Bdynamic -lm /usr/bin/ld: /usr/local/lib/libngs-c++.a(ReadCollection.pic.o): no group info for section .data.DW.ref.__gxx_personality_v0 ngs-pileup.o: In function `NGS_Pileup::Run() const': ngs-pileup.cpp:(.text+0xe1): undefined reference to `ngs::ReadCollectionItf::getReferences() const' ngs-pileup.cpp:(.text+0xf4): undefined reference to `ngs::ReferenceIterator::ReferenceIterator(ngs::ReferenceItf*)' ngs-pileup.cpp:(.text+0x10e): undefined reference to `ngs::ReferenceItf::nextReference()' ngs-pileup.cpp:(.text+0x12d): undefined reference to `ngs::ReferenceItf::getCommonName() const' ngs-pileup.cpp:(.text+0x138): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text+0x144): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text+0x14c): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x165): undefined reference to `ngs::ReadCollectionItf::getReference(char const*) const' ngs-pileup.cpp:(.text+0x177): undefined reference to `ngs::Reference::Reference(ngs::ReferenceItf*)' ngs-pileup.cpp:(.text+0x1a5): undefined reference to `ngs::ReferenceItf::getCanonicalName() const' ngs-pileup.cpp:(.text+0x1b0): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text+0x1bc): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text+0x1c4): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x285): undefined reference to `ngs::ReferenceItf::getCommonName() const' ngs-pileup.cpp:(.text+0x290): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text+0x29b): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text+0x2a3): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x3a6): undefined reference to `ngs::ReferenceItf::getCommonName() const' ngs-pileup.cpp:(.text+0x3b1): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text+0x3bd): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text+0x3c5): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x3de): undefined reference to `ngs::ReadCollectionItf::getReference(char const*) const' ngs-pileup.cpp:(.text+0x3f0): undefined reference to `ngs::Reference::Reference(ngs::ReferenceItf*)' ngs-pileup.cpp:(.text+0x404): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text+0x41c): undefined reference to `ngs::ReferenceIterator::~ReferenceIterator()' ngs-pileup.cpp:(.text+0x428): undefined reference to `ngs::ReadCollection::~ReadCollection()' ngs-pileup.cpp:(.text+0x507): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x53e): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text+0x577): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x5e3): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x627): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text+0x640): undefined reference to `ngs::ReferenceIterator::~ReferenceIterator()' ngs-pileup.cpp:(.text+0x649): undefined reference to `ngs::ReadCollection::~ReadCollection()' ngs-pileup.o: In function `GCC_except_table1': ngs-pileup.cpp:(.gcc_except_table+0x17c): undefined reference to `typeinfo for ngs::ErrorMsg' ngs-pileup.o: In function `GCC_except_table2': ngs-pileup.cpp:(.gcc_except_table+0x214): undefined reference to `typeinfo for ngs::ErrorMsg' ngs-pileup.o: In function `GCC_except_table3': ngs-pileup.cpp:(.gcc_except_table+0x28c): undefined reference to `typeinfo for ngs::ErrorMsg' ngs-pileup.o: In function `GCC_except_table9': ngs-pileup.cpp:(.gcc_except_table+0x3b0): undefined reference to `typeinfo for ngs::ErrorMsg' ngs-pileup.o: In function `NGS_Pileup::TargetReferences::AddComplete(ngs::Reference)': ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x1e): undefined reference to `ngs::ReferenceItf::getCanonicalName() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x34): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x40): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x4c): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0xf6): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x130): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x143): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x184): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x1cd): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE[_ZN10NGS_Pileup16TargetReferences11AddCompleteEN3ngs9ReferenceE]+0x201): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.o: In function `NGS_Pileup::TargetReference::Process(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)': ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x20): undefined reference to `ngs::ReferenceItf::getLength() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x49): undefined reference to `ngs::ReferenceItf::getPileups(unsigned int) const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x54): undefined reference to `ngs::PileupIterator::PileupIterator(ngs::PileupEventItf*)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x66): undefined reference to `ngs::PileupIterator::PileupIterator(ngs::PileupIterator const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x8f): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0xd4): undefined reference to `ngs::PileupItf::nextPileup()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0xdc): undefined reference to `ngs::PileupItf::getPileupDepth() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE[_ZN10NGS_Pileup15TargetReference7ProcessERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE]+0x218): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.o: In function `NGS_Pileup::TargetReference::TargetReference(ngs::Reference)': ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x1b): undefined reference to `ngs::ReferenceItf::getCanonicalName() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x2a): undefined reference to `ngs::StringRef::StringRef(ngs::StringItf*)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x35): undefined reference to `ngs::StringRef::toString() const' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x3e): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x77): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x8a): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0xa6): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0xc2): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0xec): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x134): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE[_ZN10NGS_Pileup15TargetReferenceC2EN3ngs9ReferenceE]+0x186): undefined reference to `ngs::StringRef::~StringRef()' ngs-pileup.o: In function `NGS_Pileup::TargetReference::~TargetReference()': ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceD2Ev[_ZN10NGS_Pileup15TargetReferenceD2Ev]+0x34): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceD2Ev[_ZN10NGS_Pileup15TargetReferenceD2Ev]+0x74): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.o: In function `_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_': ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_]+0xd0): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_]+0x10b): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_]+0x164): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_]+0x1f4): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.o: In function `NGS_Pileup::TargetReference::TargetReference(NGS_Pileup::TargetReference const&)': ngs-pileup.cpp:(.text._ZN10NGS_Pileup15TargetReferenceC2ERKS0_[_ZN10NGS_Pileup15TargetReferenceC2ERKS0_]+0x1f4): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.o: In function `std::__1::vector<ngs::Reference, std::__1::allocator<ngs::Reference> >::vector(std::__1::vector<ngs::Reference, std::__1::allocator<ngs::Reference> > const&)': ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEEC2ERKS5_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEEC2ERKS5_]+0x74): undefined reference to `ngs::Reference::Reference(ngs::Reference const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEEC2ERKS5_[_ZNSt3__16vectorIN3ngs9ReferenceENS_9allocatorIS2_EEEC2ERKS5_]+0xd4): undefined reference to `ngs::Reference::~Reference()' ngs-pileup.o: In function `std::__1::vector<ngs::PileupIterator, std::__1::allocator<ngs::PileupIterator> >::vector(std::__1::vector<ngs::PileupIterator, std::__1::allocator<ngs::PileupIterator> > const&)': ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEEC2ERKS5_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEEC2ERKS5_]+0x74): undefined reference to `ngs::PileupIterator::PileupIterator(ngs::PileupIterator const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEEC2ERKS5_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEEC2ERKS5_]+0xd4): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.o: In function `_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_': ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_]+0xd0): undefined reference to `ngs::PileupIterator::PileupIterator(ngs::PileupIterator const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_]+0x10b): undefined reference to `ngs::PileupIterator::PileupIterator(ngs::PileupIterator const&)' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_]+0x164): undefined reference to `ngs::PileupIterator::~PileupIterator()' ngs-pileup.cpp:(.text._ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_[_ZNSt3__16vectorIN3ngs14PileupIteratorENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_]+0x1f4): undefined reference to `ngs::PileupIterator::~PileupIterator()' main.o: In function `KMain': main.cpp:(.text+0x4ee): undefined reference to `ngs::ErrorMsg::ErrorMsg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' main.cpp:(.text+0x4f3): undefined reference to `typeinfo for ngs::ErrorMsg' main.cpp:(.text+0x4f8): undefined reference to `ngs::ErrorMsg::~ErrorMsg()' main.cpp:(.text+0x575): undefined reference to `ngs::ErrorMsg::ErrorMsg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' main.cpp:(.text+0x57a): undefined reference to `typeinfo for ngs::ErrorMsg' main.cpp:(.text+0x57f): undefined reference to `ngs::ErrorMsg::~ErrorMsg()' main.cpp:(.text+0x61d): undefined reference to `ngs::ErrorMsg::ErrorMsg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' main.cpp:(.text+0x622): undefined reference to `typeinfo for ngs::ErrorMsg' main.cpp:(.text+0x627): undefined reference to `ngs::ErrorMsg::~ErrorMsg()' main.cpp:(.text+0x67e): undefined reference to `ngs::ErrorMsg::ErrorMsg(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' main.cpp:(.text+0x683): undefined reference to `typeinfo for ngs::ErrorMsg' main.cpp:(.text+0x688): undefined reference to `ngs::ErrorMsg::~ErrorMsg()' main.o: In function `GCC_except_table2': main.cpp:(.gcc_except_table+0x1cc): undefined reference to `typeinfo for ngs::ErrorMsg' /usr/ports/wip/ncbi-vdb/work/ncbi-vdb-2.8.2-2/amd64-portbld-freebsd11.2/ncbi-vdb/bsd/clang/x86_64/rel/lib/libncbi-ngs-c++.a(NCBI-NGS.pic.o): In function `ncbi::NGS::openReadCollection(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)': NCBI-NGS.cpp:(.text+0x158): undefined reference to `ngs::ErrBlock::Throw() const' NCBI-NGS.cpp:(.text+0x163): undefined reference to `ngs::ReadCollection::ReadCollection(ngs::ReadCollectionItf*)' /usr/ports/wip/ncbi-vdb/work/ncbi-vdb-2.8.2-2/amd64-portbld-freebsd11.2/ncbi-vdb/bsd/clang/x86_64/rel/lib/libncbi-ngs-c++.a(NCBI-NGS.pic.o): In function `ncbi::NGS::openReferenceSequence(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)': NCBI-NGS.cpp:(.text+0x298): undefined reference to `ngs::ErrBlock::Throw() const' NCBI-NGS.cpp:(.text+0x2a3): undefined reference to `ngs::ReferenceSequence::ReferenceSequence(ngs::ReferenceSequenceItf*)' /usr/ports/wip/ncbi-vdb/work/ncbi-vdb-2.8.2-2/amd64-portbld-freebsd11.2/ncbi-vdb/bsd/clang/x86_64/rel/lib/libncbi-ngs-c++.a(NCBI-NGS.pic.o):(.data+0x0): undefined reference to `typeinfo for ngs::ErrorMsg' c++: error: linker command failed with exit code 1 (use -v to see invocation) gmake[5]: *** [/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/tools/ngs-pileup/Makefile:81: /usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/amd64-portbld-freebsd11.2/sra-tools/bsd/clang/x86_64/rel/bin/ngs-pileup] Error 1 gmake[5]: Leaving directory '/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/amd64-portbld-freebsd11.2/sra-tools/bsd/clang/x86_64/rel/obj/tools/ngs-pileup' gmake[4]: *** [Makefile:47: all] Error 2 gmake[4]: Leaving directory '/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/tools/ngs-pileup' gmake[3]: *** [/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/build/Makefile.targets:54: ngs-pileup_all] Error 2 gmake[3]: Leaving directory '/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/tools' gmake[2]: *** [/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3/build/Makefile.targets:54: tools_all] Error 2 gmake[2]: Leaving directory '/usr/ports/wip/sra-tools/work/sra-tools-2.8.2-3' *** Error code 1 Stop. make[1]: stopped in /usr/ports/wip/sra-tools *** Error code 1 Stop. make: stopped in /usr/ports/wip/sra-tools root@unixdev1:/usr/ports/wip/sra-tools #
(In reply to Jason W. Bacon from comment #9) Where does ngs::StringRef come from? Is this the case of missing LDFLAGS -lngs-sdk or similar?
I think this was caused by having ngs-sdk-2.9.3 preinstalled. The port depends on 1.3.0. After removing it and allowing sra-tools to install the correct port as a dep, I'm getting a different error, which I'll try to track down.
Created attachment 199150 [details] Patch to set MAKE_JOBS_UNSAFE Consistently fails to build on a 16-core / 32-ht system unless using MAKE_JOBS_UNSAFE. I've seen this a few times before with esoteric build systems. Builds fine on my 4-core systems, though. Would be nice if we could limit make jobs rather than completely disable them in cases like this.
Created attachment 199206 [details] Add MAKE_JOBS_NUMBER_LIMIT Found time to dig a little deeper and setting MAKE_JOBS_NUMBER_LIMIT to 16 or less seems to do the trick. At 32 it fails.
I was looking into ncbi-vdb. There are several problems with it: * It isn't at the latest version * TEST option needs to be removed - tests should be run through the test target I'll look at this again when I have time.
Thanks for your efforts on this... FYI, the MAKE_JOBS_NUMBER_LIMIT is just informative, not a suggestion of how we should commit the port. In fact, I saw intermittent failures building on our 12-core Opteron cluster nodes until I reduced it to 4. Using MAKE_JOBS_UNSAFE might be best.
Are you still working on this? If not, I can take over and bring everything up to the latest release.