This is bug is a direct consequence of me trying to compile and run MICAS and its dependencies in windows linux subsystem. It gets through most of the install.sh script without error, however when it comes to making centrifuge, some internal confusion on the part of centrifuges makefile and WLS cause the dump of the following error:
[ DEBUG ][ Thu Aug 5 14:33:34 CST 2021 ] -- Step 10: Checking if centrifuge is installed
./install.sh: line 125: hash: centrifuge-build: not found
[ DEBUG ][ Thu Aug 5 14:33:34 CST 2021 ] -- curl -L https://codeload.github.com/infphilo/centrifuge/tar.gz/v1.0.3 | tar zx -o
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 684k 0 684k 0 0 614k 0 --:--:-- 0:00:01 --:--:-- 614k
[ DEBUG ][ Thu Aug 5 14:33:36 CST 2021 ] -- making Centrifuge....
[sudo] password for shoro:
make: Entering directory '/home/shoro/MICAS/centrifuge-1.0.3'
/usr/bin/g++ -O3 -m64 -msse2 -funroll-loops -g3 -DCOMPILER_OPTIONS="\"-O3 -m64 -msse2 -funroll-loops -g3 -DPOPCNT_CAPABILITY\"" -DPOPCNT_CAPABILITY \
-fno-strict-aliasing -DCENTRIFUGE_VERSION="\"1.0.3-beta\"" -DBUILD_HOST="\"`hostname`\"" -DBUILD_TIME="\"`date`\"" -DCOMPILER_VERSION="\"`/usr/bin/g++ -v 2>&1 | tail -1`\"" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D
BOWTIE_MM -DCENTRIFUGE -DBOWTIE2 -DBOWTIE_64BIT_INDEX -DNDEBUG -Wall \
-I third_party \
-o centrifuge-class centrifuge.cpp \
ccnt_lut.cpp ref_read.cpp alphabet.cpp shmem.cpp edit.cpp bt2_idx.cpp reference.cpp ds.cpp limit.cpp random_source.cpp tinythread.cpp qual.cpp pat.cpp read_qseq.cpp ref_coord.cpp mask.cpp pe.cpp aligner_seed_policy.cpp scoring.cpp pres
ets.cpp simple_func.cpp random_util.cpp outq.cpp centrifuge_main.cpp \
-lpthread
In file included from blockwise_sa.h:29,
from bt2_idx.h:44,
from centrifuge.cpp:34:
diff_sample.h: In function ‘void calcExhaustiveDC(T, bool, bool)’:
diff_sample.h:175:6: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
175 | if(!diffs[d1]) diffCnt++; diffs[d1] = true;
| ^~
diff_sample.h:175:32: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
175 | if(!diffs[d1]) diffCnt++; diffs[d1] = true;
| ^~~~~
diff_sample.h:176:6: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
176 | if(!diffs[d2]) diffCnt++; diffs[d2] = true;
| ^~
diff_sample.h:176:32: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
176 | if(!diffs[d2]) diffCnt++; diffs[d2] = true;
| ^~~~~
In file included from centrifuge.cpp:34:
bt2_idx.h: In static member function ‘static std::pair<Ebwt<index_t>*, Ebwt<index_t>*> Ebwt<index_t>::fromStrings(const EList<std::__cxx11::basic_string<char> >&, bool, int, int, bool, int32_t, int32_t, int32_t, const string&, bool, in
dex_t, index_t, index_t, int, uint32_t, bool, bool, bool)’:
bt2_idx.h:1053:3: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
1053 | auto_ptr<stringstream> ss(new stringstream());
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
In file included from centrifuge.cpp:34:
bt2_idx.h:1057:3: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
1057 | auto_ptr<FileBuf> fb(new FileBuf(ss.get()));
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
In file included from centrifuge.cpp:47:
classifier.h: In member function ‘virtual int Classifier<index_t, local_index_t>::go(const Scoring&, const Ebwt<index_t>&, const Ebwt<index_t>&, const BitPairReference&, WalkMetrics&, PerReadMetrics&, HIMetrics&, SpeciesMetrics&, Rando
mSource&, AlnSinkWrap<index_t>&)’:
classifier.h:431:45: error: the value of ‘rank’ is not usable in a constant expression
431 | while(_hitMap[i].rank < rank) {
| ^~~~
classifier.h:427:21: note: ‘uint8_t rank’ is not const
427 | uint8_t rank = 0;
| ^~~~
classifier.h:431:45: error: type/value mismatch at argument 1 in template parameter list for ‘template<class> struct std::rank’
431 | while(_hitMap[i].rank < rank) {
| ^~~~
classifier.h:431:45: note: expected a type, got ‘rank’
centrifuge.cpp: In function ‘void parseOptions(int, const char**)’:
centrifuge.cpp:1494:2: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
1494 | auto_ptr<Presets> presets(new PresetsV0());
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
centrifuge.cpp: In function ‘void multiseedSearchWorker(void*)’:
centrifuge.cpp:2333:2: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
2333 | auto_ptr<PatternSourcePerThreadFactory> patsrcFact(createPatsrcFactory(patsrc, tid));
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
centrifuge.cpp:2334:2: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
2334 | auto_ptr<PatternSourcePerThread> ps(patsrcFact->create());
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
centrifuge.cpp: In function ‘void driver(const char*, const string&, const string&)’:
centrifuge.cpp:2976:9: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
2976 | auto_ptr<BitPairReference> refs;
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from centrifuge.cpp:34:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
In file included from centrifuge.cpp:47:
classifier.h: In instantiation of ‘int Classifier<index_t, local_index_t>::go(const Scoring&, const Ebwt<index_t>&, const Ebwt<index_t>&, const BitPairReference&, WalkMetrics&, PerReadMetrics&, HIMetrics&, SpeciesMetrics&, RandomSource
&, AlnSinkWrap<index_t>&) [with index_t = long unsigned int; local_index_t = short unsigned int]’:
centrifuge.cpp:2660:94: required from here
classifier.h:299:38: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘const THitInt’ {aka ‘const long int’} [-Wsign-compare]
299 | if(coords.size() > rp.ihits) {
| ~~~~~~~~~~~~~~^~~~~~~~~~
In file included from centrifuge.cpp:47:
classifier.h:411:30: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
411 | if(i + 1 < _hitMap.size()) {
classifier.h:432:48: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
432 | if(_hitMap[i].rank + 1 >= _hitMap[i].path.size()) {
classifier.h:442:55: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
442 | uint64_t parent_taxID = (rank + 1 >= _hitMap[i].path.size() ? 1 : _hitMap[i].path[rank + 1]);
classifier.h:475:63: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
475 | uint64_t cur_parent_taxID = (rank + 1 >= _hitMap[i].path.size() ? 1 : _hitMap[i].path[rank + 1]);
classifier.h: In instantiation of ‘void Classifier<index_t, local_index_t>::searchForwardAndReverse(index_t, const Ebwt<index_t>&, const Scoring&, RandomSource&, const ReportingParams&, index_t) [with index_t = long unsigned int; local
_index_t = short unsigned int]’:
classifier.h:238:13: required from ‘int Classifier<index_t, local_index_t>::go(const Scoring&, const Ebwt<index_t>&, const Ebwt<index_t>&, const BitPairReference&, WalkMetrics&, PerReadMetrics&, HIMetrics&, SpeciesMetrics&, RandomSou
rce&, AlnSinkWrap<index_t>&) [with index_t = long unsigned int; local_index_t = short unsigned int]’
centrifuge.cpp:2660:94: required from here
classifier.h:850:50: warning: comparison of integer expressions of different signedness: ‘long unsigned int’ and ‘const THitInt’ {aka ‘const long int’} [-Wsign-compare]
850 | hit.size() + rchit.size() > rp.ihits) {
In file included from centrifuge.cpp:41:
aln_sink.h: In instantiation of ‘void AlnSinkSam<index_t>::appendMate(Ebwt<index_t>&, BTString&, const Read&, const Read*, TReadId, AlnRes*, AlnRes*, const AlnSetSumm&, const PerReadMetrics&, SpeciesMetrics&, size_t) [with index_t = lo
ng unsigned int; BTString = SStringExpandable<char, 1024, 2>; TReadId = long unsigned int; size_t = long unsigned int]’:
aln_sink.h:1407:9: required from ‘void AlnSinkSam<index_t>::append(BTString&, size_t, const Read*, const Read*, TReadId, AlnRes*, AlnRes*, const AlnSetSumm&, const PerReadMetrics&, SpeciesMetrics&, bool, size_t) [with index_t = long
unsigned int; BTString = SStringExpandable<char, 1024, 2>; size_t = long unsigned int; TReadId = long unsigned int]’
aln_sink.h:1392:15: required from here
aln_sink.h:2302:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
2302 | for (int i=0; i < this->tab_fmt_cols_.size(); ++i) {
In file included from blockwise_sa.h:29,
from bt2_idx.h:44,
from bt2_idx.cpp:25:
diff_sample.h: In function ‘void calcExhaustiveDC(T, bool, bool)’:
diff_sample.h:175:6: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
175 | if(!diffs[d1]) diffCnt++; diffs[d1] = true;
| ^~
diff_sample.h:175:32: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
175 | if(!diffs[d1]) diffCnt++; diffs[d1] = true;
| ^~~~~
diff_sample.h:176:6: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
176 | if(!diffs[d2]) diffCnt++; diffs[d2] = true;
| ^~
diff_sample.h:176:32: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
176 | if(!diffs[d2]) diffCnt++; diffs[d2] = true;
| ^~~~~
In file included from bt2_idx.cpp:25:
bt2_idx.h: In static member function ‘static std::pair<Ebwt<index_t>*, Ebwt<index_t>*> Ebwt<index_t>::fromStrings(const EList<std::__cxx11::basic_string<char> >&, bool, int, int, bool, int32_t, int32_t, int32_t, const string&, bool, in
dex_t, index_t, index_t, int, uint32_t, bool, bool, bool)’:
bt2_idx.h:1053:3: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
1053 | auto_ptr<stringstream> ss(new stringstream());
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from bt2_idx.cpp:25:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
In file included from bt2_idx.cpp:25:
bt2_idx.h:1057:3: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
1057 | auto_ptr<FileBuf> fb(new FileBuf(ss.get()));
| ^~~~~~~~
In file included from /usr/include/c++/9/memory:80,
from bt2_idx.h:28,
from bt2_idx.cpp:25:
/usr/include/c++/9/bits/unique_ptr.h:53:28: note: declared here
53 | template<typename> class auto_ptr;
| ^~~~~~~~
make: *** [Makefile:265: centrifuge-class] Error 1
make: Leaving directory '/home/shoro/MICAS/centrifuge-1.0.3'
No expectation for this to be resolved, merely documenting known erroneous behaviour.