Package: mapnik Version: 3.0.22+ds1-1 Severity: wishlist User: team+bo...@tracker.debian.org Usertags: boost1.71
Dear Maintainer, your package fails to build with boost1.71. You can find a build log attached. If you want to attempt the build yourself, an updated version of boost-defaults which brings in boost1.71 dependencies can be found adding this line to your sources.list file: deb https://people.debian.org/~gio/reprepro gio main This bug has severity whishlist for the moment, but it will raised to RC as soon as version 1.71 of Boost is promoted to default. The error is: > In file included from /usr/include/boost/type_traits/is_convertible.hpp:20, > from /usr/include/boost/proto/matches.hpp:38, > from /usr/include/boost/phoenix/core/domain.hpp:12, > from /usr/include/boost/phoenix/core/actor.hpp:18, > from /usr/include/boost/phoenix/core.hpp:12, > from /usr/include/boost/spirit/include/phoenix_core.hpp:11, > from /usr/include/boost/spirit/home/support/terminal.hpp:17, > from > /usr/include/boost/spirit/home/support/common_terminals.hpp:15, > from /usr/include/boost/spirit/home/karma/char/char.hpp:14, > from /usr/include/boost/spirit/home/karma/char.hpp:13, > from /usr/include/boost/spirit/home/karma.hpp:13, > from /usr/include/boost/spirit/include/karma.hpp:16, > from include/mapnik/json/geometry_generator_grammar.hpp:33, > from src/json/mapnik_geometry_to_geojson.cpp:25: > /usr/include/boost/spirit/home/support/attributes.hpp: In instantiation of > ‘struct boost::spirit::traits::transform_attribute<const > mapnik::geometry::geometry<double>, const > mapnik::geometry::geometry<double>&, boost::spirit::karma::domain, void>’: > /usr/include/boost/spirit/home/karma/nonterminal/rule.hpp:293:42: required > from ‘bool boost::spirit::karma::rule<OutputIterator, T1, T2, T3, > T4>::generate(boost::spirit::karma::rule<OutputIterator, T1, T2, T3, > T4>::output_iterator&, Context&, const Delimiter&, const Attribute&) const > [with Context = boost::spirit::context<boost::fusion::cons<const > mapnik::geometry::geometry<double>&, boost::fusion::nil_>, > boost::spirit::locals<> >; Delimiter = boost::spirit::unused_type; Attribute > = mapnik::geometry::geometry<double>; OutputIterator = > std::back_insert_iterator<std::__cxx11::basic_string<char> >; T1 = const > mapnik::geometry::geometry<double>&(); T2 = boost::spirit::unused_type; T3 = > boost::spirit::unused_type; T4 = boost::spirit::unused_type; > boost::spirit::karma::rule<OutputIterator, T1, T2, T3, T4>::output_iterator = > boost::spirit::karma::detail::output_iterator<std::back_insert_iterator<std::__cxx11::basic_string<char> > >, mpl_::int_<15>, boost::spirit::unused_type>]’ > /usr/include/boost/spirit/home/karma/reference.hpp:46:65: required from > ‘bool boost::spirit::karma::reference<Subject>::generate(OutputIterator&, > Context&, const Delimiter&, const Attribute&) const [with OutputIterator = > boost::spirit::karma::detail::output_iterator<std::back_insert_iterator<std::__cxx11::basic_string<char> > >, mpl_::int_<15>, boost::spirit::unused_type>; Context = > boost::spirit::context<boost::fusion::cons<const > mapnik::geometry::geometry<double>&, boost::fusion::nil_>, > boost::spirit::locals<> >; Delimiter = boost::spirit::unused_type; Attribute > = mapnik::geometry::geometry<double>; Subject = const > boost::spirit::karma::rule<std::back_insert_iterator<std::__cxx11::basic_string<char> > >, const mapnik::geometry::geometry<double>&(), boost::spirit::unused_type, > boost::spirit::unused_type, boost::spirit::unused_type>]’ > /usr/include/boost/spirit/home/karma/generate.hpp:69:81: required from > ‘bool > boost::spirit::karma::generate(boost::spirit::karma::detail::output_iterator<OutputIterator, > Derived>&, const Expr&, const Attr&) [with OutputIterator = > std::back_insert_iterator<std::__cxx11::basic_string<char> >; Properties = > mpl_::int_<15>; Expr = > mapnik::json::geometry_generator_grammar<std::back_insert_iterator<std::__cxx11::basic_string<char> > >, mapnik::geometry::geometry<double> >; Attr = > mapnik::geometry::geometry<double>]’ > /usr/include/boost/spirit/home/karma/generate.hpp:91:31: required from > ‘bool boost::spirit::karma::generate(OutputIterator&, const Expr&, const > Attr&) [with OutputIterator = > std::back_insert_iterator<std::__cxx11::basic_string<char> >; Expr = > mapnik::json::geometry_generator_grammar<std::back_insert_iterator<std::__cxx11::basic_string<char> > >, mapnik::geometry::geometry<double> >; Attr = > mapnik::geometry::geometry<double>]’ > src/json/mapnik_geometry_to_geojson.cpp:34:62: required from here > /usr/include/boost/spirit/home/support/attributes.hpp:963:9: error: static > assertion failed: Transformed cannot be a reference type > 963 | BOOST_STATIC_ASSERT_MSG(!is_reference<Transformed>::value, > | ^~~~~~~~~~~~~~~~~~~~~~~ Apparently something changed in Boost.Spirit, and it doesn't like any more the way mapnik uses it. Unfortunately it is not easy for me, without knowing the code, understand how to prepare a patch for this. Apparently upstream has fixed compatibility with Boost 1.71 in master, but that patch is not released yet and it doesn't apply to the tree currently in Debian. I think the easiest solution would be to just package the next upstream version as soon as it is released. Do you have an idea on when this might happen? In the meantime, once Boost 1.71 is promoted to default, you can update your dependencies to explicitly use Boost 1.67, which will not be removed immediately from unstable (unless, of course, you want to write a patch for mapnik, but to me that seems a waste of time). However, the plan is to not release Boost 1.67 with bullseye, so I hope that upstream will release before Debian will. Do you think this is a viable plan? Thanks and all the best, Giovanni. -- Giovanni Mascellani <g.mascell...@gmail.com> Postdoc researcher - Université Libre de Bruxelles
mapnik.log.gz
Description: application/gzip
signature.asc
Description: OpenPGP digital signature