While preparing for Boost upgrade this port failed to build. Can you help to avoid marking it as BROKEN? $ fetch -qo- 'https://reviews.freebsd.org/D19303?download=true' | patch -Efsp0 -d /usr/ports $ make all deinstall install clean -C/usr/ports/devel/boost-jam $ make all deinstall install clean -C/usr/ports/devel/boost-libs $ make -C/usr/ports/graphics/mapnik [...] In file included from src/json/mapnik_json_generator_grammar.cpp:25: In file included from include/mapnik/json/geometry_generator_grammar_impl.hpp:24: In file included from include/mapnik/json/geometry_generator_grammar.hpp:34: In file included from /usr/local/include/boost/spirit/include/karma.hpp:16: In file included from /usr/local/include/boost/spirit/home/karma.hpp:13: In file included from /usr/local/include/boost/spirit/home/karma/char.hpp:13: In file included from /usr/local/include/boost/spirit/home/karma/char/char.hpp:23: In file included from /usr/local/include/boost/spirit/home/karma/char/char_generator.hpp:17: In file included from /usr/local/include/boost/spirit/home/karma/detail/extract_from.hpp:16: In file included from /usr/local/include/boost/spirit/home/karma/detail/attributes.hpp:12: /usr/local/include/boost/spirit/home/support/attributes.hpp:963:9: error: static_assert failed due to requirement '!is_reference<const feature_impl &>::value' "Transformed cannot be a reference type" BOOST_STATIC_ASSERT_MSG(!is_reference<Transformed>::value, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/static_assert.hpp:31:45: note: expanded from macro 'BOOST_STATIC_ASSERT_MSG' # define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__) ^ ~~~~~~~~~~~ /usr/local/include/boost/spirit/home/karma/nonterminal/rule.hpp:293:26: note: in instantiation of template class 'boost::spirit::traits::transform_attribute<const boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, const mapnik::feature_impl &, boost::spirit::karma::domain, void>' requested here typename transform::type attr_ = transform::pre(attr); ^ /usr/local/include/boost/spirit/home/karma/reference.hpp:56:30: note: in instantiation of function template specialization 'boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type>::generate<boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> >, boost::spirit::unused_type, boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_> >' requested here return ref.get().generate(sink, context, delim, context.attributes); ^ /usr/local/include/boost/spirit/home/karma/detail/fail_function.hpp:46:31: note: in instantiation of function template specialization 'boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >::generate<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type>, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> >, boost::spirit::unused_type>' requested here return !component.generate(sink, ctx, delim, unused); ^ /usr/local/include/boost/fusion/algorithm/query/detail/any.hpp:40:16: note: in instantiation of function template specialization 'boost::spirit::karma::detail::fail_function<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type>, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> >, boost::spirit::unused_type>::operator()<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> > >' requested here return f(x) || ^ /usr/local/include/boost/fusion/algorithm/query/detail/any.hpp:41:21: note: in instantiation of function template specialization 'boost::fusion::detail::linear_any<boost::fusion::cons_iterator<const boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_char<boost::spirit::char_encoding::standard, boost::spirit::unused_type, true>, boost::fusion::nil_> > >, boost::fusion::cons_iterator<const boost::fusion::nil_>, boost::spirit::karma::detail::fail_function<boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type>, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> >, boost::spirit::unused_type> >' requested here detail::linear_any( ^ /usr/local/include/boost/fusion/algorithm/query/detail/any.hpp:41:21: note: (skipping 12 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) /usr/local/include/boost/function/function_template.hpp:1068:5: note: in instantiation of function template specialization 'boost::function3<bool, boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type> &, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> > &, const boost::spirit::unused_type &>::function3<boost::spirit::karma::detail::generator_binder<boost::spirit::karma::sequence<boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[24], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::action<boost::spirit::karma::any_uint_generator<unsigned int, boost::spirit::unused_type, boost::spirit::unused_type, 10>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::phoenix::actor<boost::spirit::argument<0> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<mapnik::json::get_id<mapnik::feature_impl> >, 0>, boost::phoenix::actor<boost::spirit::attribute<0> > >, 2> > >, 2> > >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[13], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::geometry::geometry<double> &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[15], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_char<boost::spirit::char_encoding::standard, boost::spirit::unused_type, true>, boost::fusion::nil_> > > > > > > >, mpl_::bool_<false> > >' requested here base_type(f) ^ /usr/local/include/boost/function/function_template.hpp:1121:5: note: in instantiation of function template specialization 'boost::function<bool (boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type> &, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> > &, const boost::spirit::unused_type &)>::function<boost::spirit::karma::detail::generator_binder<boost::spirit::karma::sequence<boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[24], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::action<boost::spirit::karma::any_uint_generator<unsigned int, boost::spirit::unused_type, boost::spirit::unused_type, 10>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::phoenix::actor<boost::spirit::argument<0> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<mapnik::json::get_id<mapnik::feature_impl> >, 0>, boost::phoenix::actor<boost::spirit::attribute<0> > >, 2> > >, 2> > >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[13], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::geometry::geometry<double> &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[15], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_char<boost::spirit::char_encoding::standard, boost::spirit::unused_type, true>, boost::fusion::nil_> > > > > > > >, mpl_::bool_<false> > >' requested here self_type(f).swap(*this); ^ /usr/local/include/boost/spirit/home/karma/nonterminal/rule.hpp:192:19: note: in instantiation of function template specialization 'boost::function<bool (boost::spirit::karma::detail::output_iterator<std::__1::back_insert_iterator<std::__1::basic_string<char> >, mpl_::int_<15>, boost::spirit::unused_type> &, boost::spirit::context<boost::fusion::cons<const mapnik::feature_impl &, boost::fusion::nil_>, boost::fusion::vector<> > &, const boost::spirit::unused_type &)>::operator=<boost::spirit::karma::detail::generator_binder<boost::spirit::karma::sequence<boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[24], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::action<boost::spirit::karma::any_uint_generator<unsigned int, boost::spirit::unused_type, boost::spirit::unused_type, 10>, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::phoenix::actor<boost::spirit::argument<0> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<mapnik::json::get_id<mapnik::feature_impl> >, 0>, boost::phoenix::actor<boost::spirit::attribute<0> > >, 2> > >, 2> > >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[13], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::geometry::geometry<double> &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_string<char const (&)[15], boost::spirit::unused_type, boost::spirit::unused_type, true>, boost::fusion::cons<boost::spirit::karma::reference<const boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::karma::literal_char<boost::spirit::char_encoding::standard, boost::spirit::unused_type, true>, boost::fusion::nil_> > > > > > > >, mpl_::bool_<false> > >' requested here lhs.f = detail::bind_generator<Auto>( ^ /usr/local/include/boost/spirit/home/karma/nonterminal/rule.hpp:230:13: note: in instantiation of function template specialization 'boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type>::define<mpl_::bool_<false>, boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[24]> > >, 0> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<boost::spirit::terminal<boost::spirit::tag::uint_> &, const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::phoenix::actor<boost::spirit::argument<0> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<mapnik::json::get_id<mapnik::feature_impl> >, 0>, boost::phoenix::actor<boost::spirit::attribute<0> > >, 2> > >, 2> > &>, 2> &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[13]> > >, 0> &>, 2> &, mapnik::json::geometry_generator_grammar<sink_type, mapnik::geometry::geometry<double> > &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[15]> > >, 0> &>, 2> &, mapnik::json::properties_generator_grammar<sink_type, mapnik::feature_impl> &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char> > >, 0> &>, 2> >' requested here define<mpl::false_>(*this, expr, traits::matches<karma::domain, Expr>()); ^ include/mapnik/json/feature_generator_grammar_impl.hpp:41:13: note: in instantiation of function template specialization 'boost::spirit::karma::rule<std::__1::back_insert_iterator<std::__1::basic_string<char> >, const mapnik::feature_impl &(), boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type>::operator=<boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[24]> > >, 0> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<boost::spirit::terminal<boost::spirit::tag::uint_> &, const boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2<boost::phoenix::actor<boost::spirit::argument<0> >, boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::phoenix::detail::tag::function_eval, boost::proto::argsns_::list2<boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<mapnik::json::get_id<mapnik::feature_impl> >, 0>, boost::phoenix::actor<boost::spirit::attribute<0> > >, 2> > >, 2> > &>, 2> &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[13]> > >, 0> &>, 2> &, mapnik::json::geometry_generator_grammar<sink_type, mapnik::geometry::geometry<double> > &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char const (&)[15]> > >, 0> &>, 2> &, mapnik::json::properties_generator_grammar<sink_type, mapnik::feature_impl> &>, 2> &, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::lit, boost::fusion::vector<char> > >, 0> &>, 2> >' requested here feature = lit("{\"type\":\"Feature\",\"id\":") ^
The port has been marked BROKEN in ports r498698.
MARKED AS SPAM
Maybe this help: https://fossies.org/diffs/boost/1_69_0_vs_1_70_0/boost/spirit/home/support/attributes.hpp-diff.html
There are a lot of newer versions: https://github.com/mapnik/mapnik/releases
(In reply to Walter Schwarzenfeld from comment #4) As far as I know, mapnik 3.0.22 still doesn't work with boost ≥ 1.70.
Now it failed even earlier than before. Mapnik doesn't work with scons 3.1.1. Downgrading scons to 3.0.1 fixes the problem, but it still doesn't build with boost 1.71. https://github.com/mapnik/mapnik/issues/4081 ===> Building for mapnik-3.0.9_29 scons: Reading SConscript files ... Welcome to Mapnik... Configuring build environment... Configuring on FreeBSD in *release mode*... Checking for freetype-config... yes Checking for dlfcn.h support ... yes Checking if compiler (c++) supports -std=c++11 flag... (cached) yes Checking for C library z... yes Checking for C++ library icuuc... yes Checking for ICU version >= 4.2... found: icu 65.1 (cached) Checking for C++ library harfbuzz... yes Checking for HarfBuzz version >= 0.9.34... found: HarfBuzz 2.6.2 Checking for HarfBuzz with freetype support (cached) yes Searching for boost libs and headers... (cached) Found boost libs: /usr/local/lib Found boost headers: /usr/local/include Checking for C++ header file boost/version.hpp... yes Checking for Boost version >= 1.47... yes Found boost lib version... 1_71 KeyError: 'BOOST_APPEND': File "/tmp/wrkdirs/usr/ports/graphics/mapnik/work/mapnik-v3.0.9/SConstruct", line 1435: if not conf.CheckLibWithHeader('boost_%s%s' % (libinfo[0],env['BOOST_APPEND']), libinfo[1], 'C++'): File "/usr/local/lib/scons/SCons/Environment.py", line 410: return self._dict[key]
A commit references this bug: Author: jbeich Date: Thu Oct 24 00:48:34 UTC 2019 New revision: 515312 URL: https://svnweb.freebsd.org/changeset/ports/515312 Log: devel/boost-libs: backport spirit regression fix PR: 237016 Suggested by: mapnik upstream MFH: 2019Q4 Changes: head/devel/boost-libs/Makefile head/devel/boost-libs/files/patch-boost_spirit_home_x3_nonterminal_detail_rule.hpp
https://github.com/mapnik/mapnik/pull/4094 is Boost fix. Hopefully, bug 241449 won't regress it more.
portmgr@ scheduled the port for removal in ports r519652.
Created attachment 209914 [details] master (pre-4.0) snapshot Upstream fixed all Boost issues but not SCons. Patch and build log provided but I haven't tested runtime (don't use this port). If someone can improve upon it or backport Boost fixes to the current version (or v3.0.x snapshot) before the scheduled removal that would be nice. https://github.com/mapnik/mapnik/files/3962045/mapnik-3.0.12.1078.log
Expired port removed.