Modify bcl2fastq/src/cmake/macros.cmake
Find the last block:
#
# Macro to find libraries, with support for static-only search
#
macro(bcl2fastq_find_header_or_die variable file)
find_file(${variable} ${file} HINTS ENV C_INCLUDE_PATH ENV CPATH ENV CPLUS_INCLUDE_PATH)
if (${variable})
message(STATUS "${file} found as ${${variable}}")
else (${variable})
message(FATAL_ERROR "Required header ${file} not found.")
endif (${variable})
endmacro(bcl2fastq_find_header_or_die)
And change the find_file
function to include /usr/include/x86_64-linux-gnu/
(the location of sys/
in Ubuntu on amd64) thusly:
find_file(${variable} ${file} HINTS ENV C_INCLUDE_PATH ENV CPATH ENV CPLUS_INCLUDE_PATH PATHS /usr/include/x86_64-linux-gnu/)
bcl2fastq/src/cxx/lib/io/Xml.cpp modify lines 172 and 180 to include the correct template:
boost::property_tree::write_xml(os, treeWithIndexAttributes, boost::property_tree::xml_writer_make_settings(' ' , 2));
to
boost::property_tree::write_xml(os, treeWithIndexAttributes, boost::property_tree::xml_writer_make_settings<ptree::key_type>(' ' , 2));
and likewise again on line 180
Explanation: Boost versions >= 1.56 changed the definition of the xml_writer_make_settings function template: http://www.boost.org/doc/libs/1_44_0/boost/property_tree/detail/xml_parser_writer_settings.hpp http://www.boost.org/doc/libs/1_58_0/boost/property_tree/detail/xml_parser_writer_settings.hpp
Thanks so much for this. It's nuts to me that Illumina would push source code that explicitly fails on Ubuntu when one of the primary reasons for getting the source code at all is that they only have RPMs for CentOS/RedHat distros... This fix worked for me, so thanks again.