Lexogen-Tools / idemuxcpp

iDemux is an all-in-one command line tool that can be used for both demultiplexing and error correction of FASTQ files. It enables demultiplexing of i1 inline barcodes of Lexogen’s QuantSeq-Pool as well as demultiplexing of i7 and/or i5 indices of any other RNA-Seq library prep. iDemux can also be used for superior error correction of RNA-Seq libraries generated with Lexogen’s UDI 12 nt Unique Dual Indices. This C++ version is faster than the Python version but requires a certain proficiency in command line tool handling.
https://www.lexogen.com/indexing/12nt-dual-indexing-kits/
Other
7 stars 1 forks source link

Build failure with boost-cpp 1.85.0 #3

Closed martin-g closed 1 month ago

martin-g commented 1 month ago

Hi,

https://github.com/bioconda/bioconda-recipes/pull/50013 tried to build 0.3.0 and failed with:

2024-08-13T16:28:37.3211501Z 16:28:24 BIOCONDA INFO (OUT) $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++  -I$PREFIX/include/bamtools -fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/idemuxcpp-0.3.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -pthread -I /usr/include/bamtools/  -L$PREFIX/lib/ -lbamtools -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib -o test_demuxer test_demuxer-test_demuxer.o ../src/test_demuxer-Barcode.o ../src/test_demuxer-Parser.o ../src/test_demuxer-PairedReader.o ../src/test_demuxer-BoostZipReader.o ../src/test_demuxer-FastqReader.o ../src/test_demuxer-ZipFastqWriter.o ../src/test_demuxer-Writer.o ../src/test_demuxer-FileHandler.o ../src/test_demuxer-Correction_Counter.o ../src/test_demuxer-BamReader.o  -lboost_unit_test_framework -lrt -lz -lboost_filesystem -lboost_system -lboost_system -lboost_iostreams -ldl -lbamtools -lz -L$PREFIX/lib -lbamtools   -lpthread
2024-08-13T16:28:37.3216468Z 16:28:24 BIOCONDA INFO (OUT) $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-c++ -DHAVE_CONFIG_H -I. -I../src  -I../src/  -I$PREFIX/include/bamtools -I$PREFIX/include    -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include  -I$PREFIX/include/bamtools -fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/idemuxcpp-0.3.0 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -pthread -I /usr/include/bamtools/ -MT test_parser-test_parser.o -MD -MP -MF .deps/test_parser-test_parser.Tpo -c -o test_parser-test_parser.o `test -f 'test_parser.cpp' || echo './'`test_parser.cpp
2024-08-13T16:28:37.3280263Z 16:28:26 BIOCONDA INFO (OUT) test_parser.cpp: In function 'std::vector<std::__cxx11::basic_string<char> > iterate_csv_files(boost::filesystem::path)':
2024-08-13T16:28:37.3283407Z 16:28:26 BIOCONDA INFO (OUT) test_parser.cpp:136:31: error: 'directory_iterator' is not a member of 'boost::filesystem'; did you mean 'directory_entry'?
2024-08-13T16:28:37.3287525Z 16:28:26 BIOCONDA INFO (OUT)   136 |            boost::filesystem::directory_iterator(p), { })) {
2024-08-13T16:28:37.3361401Z 16:28:26 BIOCONDA INFO (OUT)       |                               ^~~~~~~~~~~~~~~~~~
2024-08-13T16:28:37.3361797Z 16:28:26 BIOCONDA INFO (OUT)       |                               directory_entry

Full logs at https://dev.azure.com/bioconda/25074ded-3133-43ca-af80-895ab87b53cb/_apis/build/builds/66618/logs/21

Now, I am trying with boost-cpp >=1.55,<=1.82 because https://anaconda.org/bioconda/idemuxcpp/0.2.0/download/linux-64/idemuxcpp-0.2.0-hdcf5f25_0.tar.bz2 passed with boost-cpp 1.82.0.

entzian commented 1 month ago

Hi Martin, thanks for taking care of this. I tried it out with boost 1.83, 1.84, 1.85 and 1.86 in a docker container. It turned out that I forgot to include the boost filesystem header in test_parser.cpp. I adjusted it and tagged the version again. Now, it should work.

martin-g commented 1 month ago

Thank you, @entzian !

Any idea about the problem with the build on OSX:

Downloading source to cache: idemuxcpp-0.3.0_0d96a157d7.tar.gz
10:18:07 BIOCONDA INFO (OUT) Downloading https://github.com/Lexogen-Tools/idemuxcpp/releases/download/v0.3.0/idemuxcpp-0.3.0.tar.gz
10:18:08 BIOCONDA INFO (OUT) Success
.10:18:23 BIOCONDA INFO (ERR) In file included from Barcode.cpp:10:
10:18:23 BIOCONDA INFO (ERR) ./helper.h:45:55: error: cannot pass object of non-trivial type 'std::string' through variadic function; call will abort at runtime [-Wnon-pod-varargs]
10:18:23 BIOCONDA INFO (ERR)   int   cx = snprintf(buffer, 100000, format.c_str(), args ...);
10:18:23 BIOCONDA INFO (ERR)                                                       ^
10:18:23 BIOCONDA INFO (ERR) Barcode.cpp:246:16: note: in instantiation of function template specialization 'string_format<std::string>' requested here
10:18:23 BIOCONDA INFO (ERR)             message = string_format(message, to_string(min_set_size));

?

entzian commented 1 month ago

Ah, thanks! I guess it must be a .c_str().

entzian commented 1 month ago

Hi @martin-g, it was the c string conversion. Now, all tests are successful: https://github.com/bioconda/bioconda-recipes/pull/50020.

martin-g commented 1 month ago

Awesome! Thank you!

entzian commented 1 month ago

Thank you!