Bug#951253: FTBFS with Boost 1.71

Giovanni Mascellani gio at debian.org
Thu Feb 13 10:08:14 GMT 2020


Package: mapnik
Version: 3.0.22+ds1-1
Severity: wishlist
User: team+boost at 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.mascellani at gmail.com>
Postdoc researcher - Université Libre de Bruxelles
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mapnik.log.gz
Type: application/gzip
Size: 41580 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20200213/086abe7c/attachment-0001.gz>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20200213/086abe7c/attachment-0001.sig>


More information about the Pkg-grass-devel mailing list