I am trying to get the q4m working with the latest version of mysql 5.5 (5.5.37) so I downloaded the source and added the q4m source in the storage directory, ran cmake . and make but the last one produced quite some errors.
...
Scanning dependencies of target queue
[ 52%] Building CXX object storage/q4m/CMakeFiles/queue.dir/src/queue_cond.cc.o
In file included from /usr/include/math.h:145,
from /usr/include/c++/4.3/cmath:51,
from /usr/include/c++/4.3/complex:51,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/type_traits/is_complex.hpp:12,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/type_traits.hpp:81,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/parser.hpp:12,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core.hpp:29,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/include/classic_core.hpp:11,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/core.hpp:25,
from /home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:4:
/usr/include/bits/mathcalls.h:154: error: declaration of C function ‘long double pow(long double, long double)’ conflicts with
/usr/include/bits/mathcalls.h:154: error: previous declaration ‘double pow(double, double)’ here
In file included from /usr/include/c++/4.3/complex:51,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/type_traits/is_complex.hpp:12,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/type_traits.hpp:81,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/parser.hpp:12,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core.hpp:29,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/include/classic_core.hpp:11,
from /home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/core.hpp:25,
from /home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:4:
/usr/include/c++/4.3/cmath: In function ‘long double std::pow(long double, long double)’:
/usr/include/c++/4.3/cmath:367: error: ‘long double std::pow(long double, long double)’ conflicts with previous using declaration ‘long double pow(long double, long double)’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/symbols/impl/tst.ipp: In member function ‘T* boost::spirit::impl::tst<CharT, T>::add(IteratorT, const IteratorT&, const T&) [with IteratorT = const char*, T = int, CharT = char]’:
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/symbols/symbols.hpp:203: instantiated from ‘const boost::spirit::symbol_inserter<T, SetT>& boost::spirit::symbol_inserter<T, SetT>::operator()(const CharT*, const T&) const [with CharT = char, T = int, SetT = boost::spirit::impl::tst<int, char>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:263: instantiated from ‘wait_expr_t::definition<S>::definition(const wait_expr_t&) [with S = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:178: instantiated from ‘typename boost::spirit::grammar_definition<DerivedT, ScannerT>::type& boost::spirit::impl::grammar_helper<GrammarT, DerivedT, ScannerT>::define(const GrammarT*) [with GrammarT = boost::spirit::grammar<wait_expr_t, boost::spirit::parser_context<boost::spirit::nil_t> >, DerivedT = wait_expr_t, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:251: instantiated from ‘typename DerivedT::definition<ScannerT>& boost::spirit::impl::get_definition(const boost::spirit::grammar<DerivedT, ContextT>*) [with DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:296: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::impl::grammar_parser_parse(const boost::spirit::grammar<DerivedT, ContextT>*, const ScannerT&) [with int N = 0, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/grammar.hpp:57: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::grammar<DerivedT, ContextT>::parse_main(const ScannerT&) const [with ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/grammar.hpp:65: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::grammar<DerivedT, ContextT>::parse(const ScannerT&) const [with ScannerT = boost::spirit::impl::phrase_parser<boost::spirit::space_parser>::parse(const IteratorT&, const IteratorT&, const ParserT&, const boost::spirit::space_parser&) [with IteratorT = const char*, ParserT = wait_expr_t]::scanner_t, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/scanner/impl/skipper.ipp:133: instantiated from ‘static boost::spirit::parse_info<IteratorT> boost::spirit::impl::phrase_parser<boost::spirit::space_parser>::parse(const IteratorT&, const IteratorT&, const ParserT&, const boost::spirit::space_parser&) [with IteratorT = const char*, ParserT = wait_expr_t]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/scanner/impl/skipper.ipp:155: instantiated from ‘boost::spirit::parse_info<IteratorT> boost::spirit::parse(const IteratorT&, const IteratorT&, const boost::spirit::parser<DerivedT>&, const boost::spirit::parser<SkipT>&) [with IteratorT = const char*, ParserT = wait_expr_t, SkipT = boost::spirit::space_parser]’
/home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:301: instantiated from here
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/symbols/impl/tst.ipp:139: warning: suggest parentheses around && within ||
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/symbols/symbols.hpp:203: instantiated from ‘const boost::spirit::symbol_inserter<T, SetT>& boost::spirit::symbol_inserter<T, SetT>::operator()(const CharT*, const T&) const [with CharT = char, T = int, SetT = boost::spirit::impl::tst<int, char>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:263: instantiated from ‘wait_expr_t::definition<S>::definition(const wait_expr_t&) [with S = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:178: instantiated from ‘typename boost::spirit::grammar_definition<DerivedT, ScannerT>::type& boost::spirit::impl::grammar_helper<GrammarT, DerivedT, ScannerT>::define(const GrammarT*) [with GrammarT = boost::spirit::grammar<wait_expr_t, boost::spirit::parser_context<boost::spirit::nil_t> >, DerivedT = wait_expr_t, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:251: instantiated from ‘typename DerivedT::definition<ScannerT>& boost::spirit::impl::get_definition(const boost::spirit::grammar<DerivedT, ContextT>*) [with DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:296: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::impl::grammar_parser_parse(const boost::spirit::grammar<DerivedT, ContextT>*, const ScannerT&) [with int N = 0, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>, ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/grammar.hpp:57: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::grammar<DerivedT, ContextT>::parse_main(const ScannerT&) const [with ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies<boost::spirit::skipper_iteration_policy<boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/non_terminal/grammar.hpp:65: instantiated from ‘typename boost::spirit::parser_result<boost::spirit::grammar<DerivedT, ContextT>, ScannerT>::type boost::spirit::grammar<DerivedT, ContextT>::parse(const ScannerT&) const [with ScannerT = boost::spirit::impl::phrase_parser<boost::spirit::space_parser>::parse(const IteratorT&, const IteratorT&, const ParserT&, const boost::spirit::space_parser&) [with IteratorT = const char*, ParserT = wait_expr_t]::scanner_t, DerivedT = wait_expr_t, ContextT = boost::spirit::parser_context<boost::spirit::nil_t>]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/scanner/impl/skipper.ipp:133: instantiated from ‘static boost::spirit::parse_info<IteratorT> boost::spirit::impl::phrase_parser<boost::spirit::space_parser>::parse(const IteratorT&, const IteratorT&, const ParserT&, const boost::spirit::space_parser&) [with IteratorT = const char*, ParserT = wait_expr_t]’
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/core/scanner/impl/skipper.ipp:155: instantiated from ‘boost::spirit::parse_info<IteratorT> boost::spirit::parse(const IteratorT&, const IteratorT&, const boost::spirit::parser<DerivedT>&, const boost::spirit::parser<SkipT>&) [with IteratorT = const char*, ParserT = wait_expr_t, SkipT = boost::spirit::space_parser]’
/home/hannes/mysql-5.5.37/storage/q4m/src/queue_cond.cc:301: instantiated from here
/home/hannes/mysql-5.5.37/storage/q4m/src/boost/spirit/home/classic/symbols/impl/tst.ipp:177: warning: suggest parentheses around && within ||
make[2]: *** [storage/q4m/CMakeFiles/queue.dir/src/queue_cond.cc.o] Error 1
make[1]: *** [storage/q4m/CMakeFiles/queue.dir/all] Error 2
make: *** [all] Error 2
My c++ knowledge is quite rusty. Can someone take a look and tell me what I'm doing wrong?