arq5x / lumpy-sv

lumpy: a general probabilistic framework for structural variant discovery
MIT License
306 stars 118 forks source link

Makefile - update BamTools to compile #395

Open DavidStreid opened 3 months ago

DavidStreid commented 3 months ago

Hi, I'm failing to compile lumpy-sv using the README instructions, specifically the BamTools utils. Would it be possible to update the Makefile for updated instructions to compile BamTools? It seems to be related to other open issues - https://github.com/arq5x/lumpy-sv/issues/384. Below is a small Dockerfile and steps to reproduce the specific issue, although make from the root directory will also yield the same error. However as a note, make lumpyexpress succeeds Thanks, David

Dockerfile

FROM --platform=linux/amd64 almalinux:latest

RUN yum -y install git g++

RUN git clone --recursive https://github.com/arq5x/lumpy-sv.git

Steps to Reproduce

$ docker build -t almalinux-lumpy . && docker run -it --rm almalinux-lumpy
[root@14277bc4fa5a /]# cd /lumpy-sv/src/utils/BamTools
[root@14277bc4fa5a BamTools]# make
 * compiling BamAlignment.cpp
 * compiling BamMultiReader.cpp
 * compiling BamReader.cpp
 * compiling BamWriter.cpp
 * compiling SamHeader.cpp
 * compiling SamProgram.cpp
 * compiling SamProgramChain.cpp
 * compiling SamReadGroup.cpp
 * compiling SamReadGroupDictionary.cpp
 * compiling SamSequence.cpp
 * compiling SamSequenceDictionary.cpp
 * compiling BamHeader_p.cpp
 * compiling BamMultiReader_p.cpp
In file included from /usr/include/c++/11/map:60,
                 from src/api/SamReadGroupDictionary.h:15,
                 from src/api/SamHeader.h:15,
                 from src/api/BamReader.h:16,
                 from src/api/BamMultiReader.h:14,
                 from src/api/internal/bam/BamMultiReader_p.cpp:11:
/usr/include/c++/11/bits/stl_tree.h: In instantiation of ‘static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<BamTools::Internal::MergeItem>*]’:
/usr/include/c++/11/bits/stl_tree.h:2102:44:   required from ‘std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = BamTools::Internal::MergeItem]’
/usr/include/c++/11/bits/stl_tree.h:2151:4:   required from ‘std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const BamTools::Internal::MergeItem&; _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<BamTools::Internal::MergeItem, BamTools::Internal::MergeItem, std::_Identity<BamTools::Internal::MergeItem>, BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>, std::allocator<BamTools::Internal::MergeItem> >::iterator]’
/usr/include/c++/11/bits/stl_multiset.h:503:36:   required from ‘std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = BamTools::Internal::MergeItem; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<BamTools::Internal::MergeItem, BamTools::Internal::MergeItem, std::_Identity<BamTools::Internal::MergeItem>, BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>, std::allocator<BamTools::Internal::MergeItem> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = BamTools::Internal::MergeItem]’
src/api/internal/bam/BamMultiMerger_p.h:130:18:   required from ‘void BamTools::Internal::MultiMerger<Compare>::Add(BamTools::Internal::MergeItem) [with Compare = BamTools::Algorithms::Sort::ByName]’
src/api/internal/bam/BamMultiMerger_p.h:123:13:   required from here
/usr/include/c++/11/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
  770 |               is_invocable_v<const _Compare&, const _Key&, const _Key&>,
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/stl_tree.h:770:15: note: ‘std::is_invocable_v<const BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByName>&, const BamTools::Internal::MergeItem&, const BamTools::Internal::MergeItem&>’ evaluates to false
/usr/include/c++/11/bits/stl_tree.h: In instantiation of ‘static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<BamTools::Internal::MergeItem>*]’:
/usr/include/c++/11/bits/stl_tree.h:2102:44:   required from ‘std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_equal_pos(const key_type&) [with _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = BamTools::Internal::MergeItem]’
/usr/include/c++/11/bits/stl_tree.h:2151:4:   required from ‘std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_equal(_Arg&&) [with _Arg = const BamTools::Internal::MergeItem&; _Key = BamTools::Internal::MergeItem; _Val = BamTools::Internal::MergeItem; _KeyOfValue = std::_Identity<BamTools::Internal::MergeItem>; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator = std::_Rb_tree<BamTools::Internal::MergeItem, BamTools::Internal::MergeItem, std::_Identity<BamTools::Internal::MergeItem>, BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>, std::allocator<BamTools::Internal::MergeItem> >::iterator]’
/usr/include/c++/11/bits/stl_multiset.h:503:36:   required from ‘std::multiset<_Key, _Compare, _Alloc>::iterator std::multiset<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = BamTools::Internal::MergeItem; _Compare = BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>; _Alloc = std::allocator<BamTools::Internal::MergeItem>; std::multiset<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<BamTools::Internal::MergeItem, BamTools::Internal::MergeItem, std::_Identity<BamTools::Internal::MergeItem>, BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>, std::allocator<BamTools::Internal::MergeItem> >::const_iterator; std::multiset<_Key, _Compare, _Alloc>::value_type = BamTools::Internal::MergeItem]’
src/api/internal/bam/BamMultiMerger_p.h:130:18:   required from ‘void BamTools::Internal::MultiMerger<Compare>::Add(BamTools::Internal::MergeItem) [with Compare = BamTools::Algorithms::Sort::ByPosition]’
src/api/internal/bam/BamMultiMerger_p.h:123:13:   required from here
/usr/include/c++/11/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
/usr/include/c++/11/bits/stl_tree.h:770:15: note: ‘std::is_invocable_v<const BamTools::Internal::MergeItemSorter<BamTools::Algorithms::Sort::ByPosition>&, const BamTools::Internal::MergeItem&, const BamTools::Internal::MergeItem&>’ evaluates to false
make: *** [Makefile:64: src/api/internal/bam/BamMultiReader_p.o] Error 1