Does not build for 32bit architectures
Hi, the Debian package of libmaus2 received a bug report about a build failure on 32bit architectures. I just checked the latest version 2.0.689 which unfortunately also has issues. The autobuilders page shows all architectures with issues. You might like to check i386 build log to find the following error:
g++ -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wall -Wnon-virtual-dtor -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack- protector-strong -Wformat -Werror=format-security -O3 -std=gnu++0x -pthread -fopenmp -c -o test/testmapperm-testmapperm.o `test -f 'test/testmapperm.cpp' || echo './'`test/testmapperm.cpp
In file included from test/testparallelbamblocksort.cpp:19:
./libmaus2/bambam/parallel/BlockMergeControl.hpp: In instantiation of ‘void libmaus2::bambam::parallel::BlockMergeControl<_heap_element_type>::enqueHeader() [with _heap_element_type = libmaus2::bambam::parallel::GenericInputControlMergeHeapEntryQueryName]’:
./libmaus2/bambam/parallel/BlockMergeControl.hpp:571:6: required from ‘libmaus2::bambam::parallel::BlockMergeControl<_heap_element_type>::BlockMergeControl(libmaus2::parallel:: SimpleThreadPool&, std::ostream&, libmaus2::autoarray::AutoArray<char>&, const std::vector<libmaus2::bambam::parallel::GenericInputControlStreamInfo>&, libmaus2::bitio::BitVector*, int, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, const string&, const string&, libmaus2::digest::DigestInterface*, libmaus2::bambam::parallel::BlockMergeControlTypeBase:: block_merge_output_format_t, bool, bool, bool, uint64_t) [with _heap_element_type = libmaus2::bambam::parallel::GenericInputControlMergeHeapEntryQueryName; std::ostream = std:: basic_ostream<char>; libmaus2::bitio::BitVector = libmaus2::bitio::BitVectorTemplate<long long unsigned int>; uint64_t = long long unsigned int; std::string = std::__cxx11:: basic_string<char>]’
test/testparallelbamblocksort.cpp:216:68: required from ‘int parallelbamblocksort(const libmaus2::util::ArgInfo&, bool, bool, const string&, bool) [with order_type = libmaus2::bambam:: parallel::FragmentAlignmentBufferQueryNameComparator; heap_element_type = libmaus2::bambam::parallel::GenericInputControlMergeHeapEntryQueryName; bool create_dup_mark_info = false; std:: string = std::__cxx11::basic_string<char>]’
test/testparallelbamblocksort.cpp:259:4: required from here
./libmaus2/bambam/parallel/BlockMergeControl.hpp:346:92: error: cannot convert ‘<unresolved overloaded function type>’ to ‘cram_data_write_function_t’ {aka ‘void (*)(void*, int, unsigned int, const char*, unsigned int, _cram_data_write_block_type)’}
346 | samsupport.context = sam_allocate_encoder(this,ptext.first,ptext.second-ptext.first,sam_data_write_function);
| ^~~~~~~~~~~~~~~~~~~~~~~
| |
| <unresolved overloaded function type>
./libmaus2/bambam/parallel/BlockMergeControl.hpp:1264:33: note: initializing argument 4 of ‘static void* libmaus2::bambam::parallel::BlockMergeControl<_heap_element_type>:: sam_allocate_encoder(void*, const char*, size_t, cram_data_write_function_t) [with _heap_element_type = libmaus2::bambam::parallel::GenericInputControlMergeHeapEntryQueryName; size_t = unsigned int; cram_data_write_function_t = void (*)(void*, int, unsigned int, const char*, unsigned int, _cram_data_write_block_type); ssize_t = int; cram_data_write_block_type = _cram_data_write_block_type]’
1264 | cram_data_write_function_t write_func
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
./libmaus2/bambam/parallel/BlockMergeControl.hpp:364:94: error: cannot convert ‘<unresolved overloaded function type>’ to ‘cram_data_write_function_t’ {aka ‘void (*)(void*, int, unsigned int, const char*, unsigned int, _cram_data_write_block_type)’}
364 | cramsupport.context = cram_allocate_encoder(this,ptext.first,ptext.second-ptext.first,sam_data_write_function);
| ^~~~~~~~~~~~~~~~~~~~~~~
| |
| <unresolved overloaded function type>
./libmaus2/bambam/parallel/BlockMergeControl.hpp:428:124: note: initializing argument 4 of ‘void* libmaus2::bambam::parallel::BlockMergeControl<_heap_element_type>:: cram_allocate_encoder(void*, const char*, size_t, cram_data_write_function_t) [with _heap_element_type = libmaus2::bambam::parallel::GenericInputControlMergeHeapEntryQueryName; size_t = unsigned int; cram_data_write_function_t = void (*)(void*, int, unsigned int, const char*, unsigned int, _cram_data_write_block_type); ssize_t = int; cram_data_write_block_type = _cram_data_write_block_type]’
428 | void * cram_allocate_encoder(void *userdata, char const *header, size_t const headerlength, cram_data_write_function_t writefunc)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
Is there any reason that you can not support 32bit architectures any more? Kind regards, Andreas.