Bug 237016 - graphics/mapnik: fails to build with boost 1.70
Summary: graphics/mapnik: fails to build with boost 1.70
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs mailing list
URL:
Keywords: needs-patch, regression
Depends on:
Blocks: 235956
  Show dependency treegraph
 
Reported: 2019-04-04 14:47 UTC by Jan Beich
Modified: 2019-10-24 01:31 UTC (History)
5 users (show)

See Also:
bugzilla: maintainer-feedback? (littlesavage)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Beich freebsd_committer 2019-04-04 14:47:34 UTC
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\":")
            ^
Comment 1 Jan Beich freebsd_committer 2019-04-12 09:44:16 UTC
The port has been marked BROKEN in ports r498698.
Comment 2 Pokemon999 2019-06-17 07:19:14 UTC
MARKED AS SPAM
Comment 4 Walter Schwarzenfeld freebsd_triage 2019-09-20 17:58:46 UTC
There are a lot of newer versions:

https://github.com/mapnik/mapnik/releases
Comment 5 Ting-Wei Lan 2019-09-21 03:31:51 UTC
(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.
Comment 6 Ting-Wei Lan 2019-10-21 16:46:57 UTC
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]
Comment 7 commit-hook freebsd_committer 2019-10-24 00:49:04 UTC
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
Comment 8 Jan Beich freebsd_committer 2019-10-24 01:31:02 UTC
https://github.com/mapnik/mapnik/pull/4094 is Boost fix. Hopefully, bug 241449 won't regress it more.