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: 2021-04-29 15:09 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
wip-sra-tools-2.11.0.patch (13.63 KB, patch)
2021-04-28 10:12 UTC, Yuri Victorovich
no flags Details | Diff
Fix / work around some of the remaining build errors (4.67 KB, patch)
2021-04-29 15:09 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.
Comment 17 commit-hook freebsd_committer 2021-04-12 09:30:21 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d55fba431adf6bc61c3553dd91625a4b16115cf6

commit d55fba431adf6bc61c3553dd91625a4b16115cf6
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2021-04-12 09:29:15 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2021-04-12 09:29:42 +0000

    New port: biology/ncbi-vdb: NCBI's virtualized back-end for accessing Sequence Read Archive

    PR:             223273
    Submitted by:   Motomichi Matsuzaki <mzaki@niid.go.jp> (original version)

 biology/Makefile                                   |   1 +
 biology/ncbi-vdb/Makefile (new)                    |  64 ++++++
 biology/ncbi-vdb/distinfo (new)                    |   5 +
 biology/ncbi-vdb/files/Makefile.bsd (new)          |  72 ++++++
 .../files/patch-build_Makefile.clang (new)         |  30 +++
 .../ncbi-vdb/files/patch-build_Makefile.env (new)  |  28 +++
 .../ncbi-vdb/files/patch-build_Makefile.gcc (new)  |  35 +++
 .../files/patch-build_Makefile.install (new)       |  11 +
 .../files/patch-build_Makefile.shell (new)         |  31 +++
 .../files/patch-build_ld.bsd.dlib.sh (new)         |  22 ++
 .../ncbi-vdb/files/patch-build_ld.bsd.exe.sh (new) |  22 ++
 biology/ncbi-vdb/files/patch-build_ld.sh (new)     |  49 ++++
 biology/ncbi-vdb/files/patch-libs_Makefile (new)   |  12 +
 .../ncbi-vdb/files/patch-libs_kfg_config.c (new)   |  20 ++
 .../files/patch-libs_klib_unix_systime.c (new)     |  11 +
 .../ncbi-vdb/files/patch-libs_kns_Makefile (new)   |  13 ++
 .../files/patch-libs_kns_linux_syspoll.c (new)     |  11 +
 .../files/patch-libs_kns_unix_syssock.c (new)      |  10 +
 .../files/patch-libs_ncbi-vdb_Makefile (new)       |  40 ++++
 .../files/patch-libs_search_Makefile (new)         |  12 +
 .../files/patch-setup_konfigure.perl (new)         | 253 +++++++++++++++++++++
 .../ncbi-vdb/files/patch-setup_os-arch.prl (new)   |  20 ++
 .../ncbi-vdb/files/patch-setup_package.prl (new)   |  26 +++
 .../files/patch-test_kapp_run-sig-core.sh (new)    |  49 ++++
 .../files/patch-test_kfg_kfgtest.cpp (new)         |  11 +
 .../files/patch-test_klib_printf-test.c (new)      |  11 +
 .../ncbi-vdb/files/patch-test_kns_Makefile (new)   |  32 +++
 .../patch-test_vdb_test-dependencies.cpp (new)     |  11 +
 ...rect-rejected-names-cgi-http-to-https.cpp (new) |  11 +
 biology/ncbi-vdb/pkg-descr (new)                   |   7 +
 biology/ncbi-vdb/pkg-plist (new)                   |  17 ++
 31 files changed, 947 insertions(+)
Comment 18 Jason W. Bacon freebsd_committer 2021-04-12 13:21:17 UTC
(In reply to commit-hook from comment #17)

This is great, thanks!

Builds cleanly for me on AMD64.  I'll test on PPC64 after the 13.0 release.

Are you planning to upstream the patches soon?  I spot checked and most of them look pretty straightforward.

I'd suggest adding the following to Makefile.clang, as was done with Makefile.gcc:

CCNAME ?= clang
CXXNAME ?= clang++

Then upstream maybe be able to accept it without modification.
Comment 19 commit-hook freebsd_committer 2021-04-12 18:05:38 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=353678f54b5fcc1821077ab3f84fe389a1ef2b9b

commit 353678f54b5fcc1821077ab3f84fe389a1ef2b9b
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2021-04-12 18:03:14 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2021-04-12 18:03:14 +0000

    biology/ncbi-vdb: Restore static libs installed with symlinks as shared libs are usually installed

    Symlinks like this libxx.a->libxx.a.N.N.N first looked broken but it turned out that this is intentional.

    PR:             223273

 biology/ncbi-vdb/Makefile  |  6 +++---
 biology/ncbi-vdb/pkg-plist | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 3 deletions(-)
Comment 20 Yuri Victorovich freebsd_committer 2021-04-12 19:00:35 UTC
(In reply to Jason W. Bacon from comment #18)

Hi Jason,

> Are you planning to upstream the patches soon?  I spot checked and most of them look pretty straightforward.
> 
> I'd suggest adding the following to Makefile.clang, as was done with Makefile.gcc:
> 
> CCNAME ?= clang
> CXXNAME ?= clang++


I upstreamed most of the patches with some additional modifications that include your suggestion: https://github.com/ncbi/ncbi-vdb/pull/37


Yuri
Comment 21 Yuri Victorovich freebsd_committer 2021-04-13 00:44:24 UTC
Will commit biology/sra-tools soon.
Comment 22 Jason W. Bacon freebsd_committer 2021-04-13 14:59:29 UTC
(In reply to Yuri Victorovich from comment #21)

Fantastic, thanks again!  I'm working on the few remaining Biostar handbook tools in the meantime.
Comment 23 Yuri Victorovich freebsd_committer 2021-04-28 10:12:00 UTC
Created attachment 224490 [details]
wip-sra-tools-2.11.0.patch
Comment 24 Jason W. Bacon freebsd_committer 2021-04-29 15:09:39 UTC
Created attachment 224529 [details]
Fix / work around some of the remaining build errors

I added a FreeBSD byteswap.h and a few other patches to work around some build errors.  We can review these and find better solutions for some.  The utf8proc patch is just temporary to silence the missing .so error.  I think the static lib will suffice for the moment.

Patch attached and latest always available here:

https://github.com/outpaddling/freebsd-ports-wip/tree/master/sra-tools

Now it's failing with

/usr/local/bin/ld: /usr/ports/biology/ncbi-vdb/work/ncbi-vdb-2.11.0/amd64-portbld-freebsd12.2/ncbi-vdb/bsd/clang/x86_64/rel/lib/libncbi-vdb.so: undefined reference to `vdb_mbedtls_aes_setkey_enc'