Stan-dev/stan branch develop throwing compile errors


#1

checked out latest develop and trying to run unit tests and compile test models and both are failing to compile with the following error:

clang++ -Wall -I . -isystem lib/stan_math/lib/eigen_3.3.3 -isystem lib/stan_math/lib/boost_1.64.0 -isystem lib/stan_math/lib/cvodes_2.9.0/include -std=c++1y -DBOOST_RESULT_OF_USE_TR1 -DBOOST_NO_DECLTYPE -DBOOST_DISABLE_ASSERTS -I src -isystem lib/stan_math/ -DFUSION_MAX_VECTOR_SIZE=12 -Wno-unused-local-typedefs -stdlib=libc++ -Wno-unknown-warning-option -Wno-unused-function -Wno-tautological-compare -Wsign-compare -DNO_FPRINTF_OUTPUT -pipe  -c -O0 -o bin/stan/lang/grammars/functions_grammar_inst.o src/stan/lang/grammars/functions_grammar_inst.cpp
In file included from src/stan/lang/grammars/expression_grammar_inst.cpp:1:
In file included from src/stan/lang/grammars/expression_grammar_def.hpp:4:
In file included from src/stan/lang/grammars/expression_grammar.hpp:5:
In file included from src/stan/lang/grammars/expression07_grammar.hpp:4:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/include/qi.hpp:16:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/home/qi.hpp:15:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/home/qi/auto.hpp:15:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/home/qi/auto/auto.hpp:13:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/home/support/common_terminals.hpp:15:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/home/support/terminal.hpp:18:
In file included from lib/stan_math/lib/boost_1.64.0/boost/spirit/include/phoenix_function.hpp:11:
In file included from lib/stan_math/lib/boost_1.64.0/boost/phoenix/function.hpp:11:
In file included from lib/stan_math/lib/boost_1.64.0/boost/phoenix/function/function.hpp:58:
In file included from lib/stan_math/lib/boost_1.64.0/boost/phoenix/function/detail/cpp03/function_operator.hpp:6:
In file included from lib/stan_math/lib/boost_1.64.0/boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp:12:
lib/stan_math/lib/boost_1.64.0/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp:91:100: error: cannot initialize a parameter of type 'char *' with an
      lvalue of type 'char const[3]'
            return detail::expression::function_eval<F, A0 , A1 , A2 , A3 , A4>::make(f, a0 , a1 , a2 , a3 , a4);
                                                                                                   ^~
src/stan/lang/grammars/expression_grammar_def.hpp:57:27: note: in instantiation of function template specialization
      'boost::phoenix::function<stan::lang::binary_op_expr>::operator()<boost::phoenix::actor<boost::spirit::attribute<0> >, boost::phoenix::actor<boost::spirit::argument<0> >,
      char [3], char [11], boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,
      boost::proto::argsns_::term<boost::reference_wrapper<std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, 0> > >' requested here
              [binary_op_f(_val, _1, "||", "logical_or",
                          ^

anyone else seeing this?
investigating further…


#2

What test are you trying to run?


#3
make test/integration/compile_models
./runTests.py src/test/unit

#4

For anyone trying to follow along, this fails:

./runTests.py src/test/integration/compile_models_test.cpp

If you wanted to get to make, it’s this call that fails:

make bin/stan/lang/grammars/expression_grammar_inst.o

#5

This is the same error as before. You need -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION.


#6

many thanks!

what worked was adding the following to stan/make/local :

CXXFLAGS += -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION

follow-on questions

  • why CXXFLAGS and not CFLAGS
  • do we need to change stan/makefile

#7

I thought that was one of Sean’s changes to make makefiles more correct for a C++ project.

Yeah, unless there is some other way to fix it.


#8

more thanks!