Bug 223273 - [NEW PORT] biology/sra-tools: NCBI's toolkit for handling data in INSDC Sequence Read Archives
Summary: [NEW PORT] biology/sra-tools: NCBI's toolkit for handling data in INSDC Seque...
Status: In Progress
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Yuri Victorovich
URL:
Keywords:
Depends on:
Blocks: 229330
  Show dependency treegraph
 
Reported: 2017-10-27 09:37 UTC by Motomichi Matsuzaki
Modified: 2019-08-28 11:49 UTC (History)
4 users (show)

See Also:


Attachments
svn diff for biology/ngs-sdk (21.47 KB, patch)
2017-10-27 09:38 UTC, Motomichi Matsuzaki
no flags Details | Diff
svn diff for biology/ncbi-vdb (49.77 KB, patch)
2017-10-27 09:39 UTC, Motomichi Matsuzaki
no flags Details | Diff
svn diff for biology/sra-tools (50.63 KB, patch)
2017-10-27 09:40 UTC, Motomichi Matsuzaki
no flags Details | Diff
poudriere testport logs on 10.4R amd64 (90.87 KB, application/octet-stream)
2017-10-27 09:41 UTC, Motomichi Matsuzaki
no flags Details
poudriere testport logs on 10.4R i386 (91.62 KB, application/x-compressed)
2017-10-27 09:41 UTC, Motomichi Matsuzaki
no flags Details
Patch to set MAKE_JOBS_UNSAFE (387 bytes, patch)
2018-11-11 22:34 UTC, Jason W. Bacon
no flags Details | Diff
Add MAKE_JOBS_NUMBER_LIMIT (440 bytes, patch)
2018-11-13 15:02 UTC, Jason W. Bacon
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Motomichi Matsuzaki 2017-10-27 09:37:54 UTC
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.
Comment 1 Motomichi Matsuzaki 2017-10-27 09:38:40 UTC
Created attachment 187512 [details]
svn diff for biology/ngs-sdk

PASSED: poudriere testport (amd64/i386 10.4) & make test (amd64/i386 10.4)
Comment 2 Motomichi Matsuzaki 2017-10-27 09:39:35 UTC
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)
Comment 3 Motomichi Matsuzaki 2017-10-27 09:40:09 UTC
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
Comment 4 Motomichi Matsuzaki 2017-10-27 09:41:05 UTC
Created attachment 187515 [details]
poudriere testport logs on 10.4R amd64
Comment 5 Motomichi Matsuzaki 2017-10-27 09:41:37 UTC
Created attachment 187516 [details]
poudriere testport logs on 10.4R i386
Comment 6 Yuri Victorovich freebsd_committer 2017-12-11 19:04:25 UTC
Hi,

Why are they ONLY_FOR_ARCHS=amd64 i386? There should be the reason next to ONLY_FOR_ARCHS statement.

Yuri
Comment 7 Motomichi Matsuzaki 2017-12-11 22:52:11 UTC
(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.
Comment 8 Olivier Cinquin 2018-04-19 22:32:31 UTC
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?
Comment 9 Jason W. Bacon freebsd_committer 2018-11-11 20:59:48 UTC
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 #
Comment 10 Yuri Victorovich freebsd_committer 2018-11-11 21:13:54 UTC
(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?
Comment 11 Jason W. Bacon freebsd_committer 2018-11-11 22:13:42 UTC
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.
Comment 12 Jason W. Bacon freebsd_committer 2018-11-11 22:34:38 UTC
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.
Comment 13 Jason W. Bacon freebsd_committer 2018-11-13 15:02:17 UTC
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.
Comment 14 Yuri Victorovich freebsd_committer 2018-11-13 18:13:06 UTC
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.
Comment 15 Jason W. Bacon freebsd_committer 2018-11-13 18:55:10 UTC
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.
Comment 16 Jason W. Bacon freebsd_committer 2019-08-28 11:49:35 UTC
Are you still working on this?  If not, I can take over and bring everything up to the latest release.