Bug#951253: FTBFS with Boost 1.71

2020-02-21 Thread Sebastiaan Couwenberg
On 2/21/20 8:49 AM, Sebastiaan Couwenberg wrote:
> On 2/13/20 1:50 PM, Giovanni Mascellani wrote:
>> Il 13/02/20 12:11, Bas Couwenberg ha scritto:
>>> Mapnik releases have become much more infrequent, there is not much
>>> demand for releases from Mapbox which uses development snapshots.
>>
>> Right. Actually, artemp mentions in the upstream issue that he's
>> planning to release 3.0.23 asap, but I don't really know when this will
>> happen.
> 
> The mapnik 3.0.23 release happened, and it builds successfully with the
> boost1.71 (1.71.0-6) packages from unstable when using boost-defaults
> from experimental. Not sure if it also works correctly at runtime.
> 
> Once I've completed test rebuilds of the rdeps I'll move it to unstable.

Unfortunately python-mapnik FTBFS with mapnik 3.0.23, so I'll keep
mapnik in experimental for a bit to give upstream time to fix python-mapnik.

https://github.com/mapnik/python-mapnik/issues/223

Kind Regards,

Bas

-- 
 GPG Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1



Bug#951253: FTBFS with Boost 1.71

2020-02-14 Thread Giovanni Mascellani
Hi,

Il 13/02/20 13:56, Bas Couwenberg ha scritto:
>> Er, no actual reason. This setup works for me and nobody ever asked me
>> to upload to experimental. I can do that anyway, if that's better for
>> you.
> 
> Yes, please.

Done.

Giovanni.
-- 
Giovanni Mascellani 
Postdoc researcher - Université Libre de Bruxelles



Bug#951253: FTBFS with Boost 1.71

2020-02-13 Thread Bas Couwenberg

On 2020-02-13 13:50, Giovanni Mascellani wrote:

Il 13/02/20 12:11, Bas Couwenberg ha scritto:

  deb https://people.debian.org/~gio/reprepro gio main


Why isn't the new boost-defaults (also) in experimental?


Er, no actual reason. This setup works for me and nobody ever asked me
to upload to experimental. I can do that anyway, if that's better for 
you.


Yes, please.

Myself and others already have chroots with experimental available for 
these kinds of rebuild tests, no needs to create one with your repo for 
boost-defaults.


Kind Regards,

Bas



Bug#951253: FTBFS with Boost 1.71

2020-02-13 Thread Giovanni Mascellani
Hi,

Il 13/02/20 12:11, Bas Couwenberg ha scritto:
>>   deb https://people.debian.org/~gio/reprepro gio main
> 
> Why isn't the new boost-defaults (also) in experimental?

Er, no actual reason. This setup works for me and nobody ever asked me
to upload to experimental. I can do that anyway, if that's better for you.
> Thanks for looking into the upstream fix.
> 
> It seems Gentoo people already reported the issue for Boost 1.70:
> 
>  https://github.com/mapnik/mapnik/issues/4098
> 
> Which contains the comment:
> 
> "
>  Boost Spirit 1.71 has a small bug which is fixed on 1.72
> "
> 
> Can't we transition to 1.72 in Debian as well, or cherry-pick the spirit
> fix?

I won't start working on any newer Boost version until 1.71 is made
default. However there is still a lot of time for bullseye, so I'd say
it's quite probable that we will have Boost >= 1.72 in bullseye. In this
case I think it is reasonable to temporarily make mapnik depend on Boost
1.67 and fix it once 1.72+ is in.

At the same time I don't have any problem in backporting the fix
Boost.Spirit needs (if it's a reasonable patch), except that I don't
quite understand which one it is.

> Mapnik releases have become much more infrequent, there is not much
> demand for releases from Mapbox which uses development snapshots.

Right. Actually, artemp mentions in the upstream issue that he's
planning to release 3.0.23 asap, but I don't really know when this will
happen.

And, still, we would need to fix Boost 1.71. I asked for pointers on the
upstream issue.

> If we can't get mapnik to work with the default boost in bullseye, we'll
> just not ship it and its rdeps.

Hopefully this extreme solution won't be required. :-)

Thanks, Giovanni.
-- 
Giovanni Mascellani 
Postdoc researcher - Université Libre de Bruxelles



Bug#951253: FTBFS with Boost 1.71

2020-02-13 Thread Bas Couwenberg

Control: tags -1 upstream
Control: forwarded -1 https://github.com/mapnik/mapnik/issues/4098

On 2020-02-13 11:08, Giovanni Mascellani wrote:

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


Why isn't the new boost-defaults (also) in experimental?


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.


Thanks for looking into the upstream fix.

It seems Gentoo people already reported the issue for Boost 1.70:

 https://github.com/mapnik/mapnik/issues/4098

Which contains the comment:

"
 Boost Spirit 1.71 has a small bug which is fixed on 1.72
"

Can't we transition to 1.72 in Debian as well, or cherry-pick the spirit 
fix?



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).


Mapnik releases have become much more infrequent, there is not much 
demand for releases from Mapbox which uses development snapshots.


Based on the discussion in the upstream issue, we're likely able to 
cherry-pick the upstream commit to have 3.0.x build with boost1.72, but 
likely not with 1.71.



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?


If we can't get mapnik to work with the default boost in bullseye, we'll 
just not ship it and its rdeps.


While Mapnik is important to the OpenStreetMap project, I won't let it 
block progress in Debian.


Kind Regards,

Bas



Bug#951253: FTBFS with Boost 1.71

2020-02-13 Thread Giovanni Mascellani
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 mapnik::geometry::geometry, const 
> mapnik::geometry::geometry&, boost::spirit::karma::domain, void>’:
> /usr/include/boost/spirit/home/karma/nonterminal/rule.hpp:293:42:   required 
> from ‘bool boost::spirit::karma::rule T4>::generate(boost::spirit::karma::rule T4>::output_iterator&, Context&, const Delimiter&, const Attribute&) const 
> [with Context = boost::spirit::context mapnik::geometry::geometry&, boost::fusion::nil_>, 
> boost::spirit::locals<> >; Delimiter = boost::spirit::unused_type; Attribute 
> = mapnik::geometry::geometry; OutputIterator = 
> std::back_insert_iterator >; T1 = const 
> mapnik::geometry::geometry&(); T2 = boost::spirit::unused_type; T3 = 
> boost::spirit::unused_type; T4 = boost::spirit::unused_type; 
> boost::spirit::karma::rule::output_iterator = 
> boost::spirit::karma::detail::output_iterator
>  >, mpl_::int_<15>, boost::spirit::unused_type>]’
> /usr/include/boost/spirit/home/karma/reference.hpp:46:65:   required from 
> ‘bool boost::spirit::karma::reference::generate(OutputIterator&, 
> Context&, const Delimiter&, const Attribute&) const [with OutputIterator = 
> boost::spirit::karma::detail::output_iterator
>  >, mpl_::int_<15>, boost::spirit::unused_type>; Context = 
> boost::spirit::context mapnik::geometry::geometry&, boost::fusion::nil_>, 
> boost::spirit::locals<> >; Delimiter = boost::spirit::unused_type; Attribute 
> = mapnik::geometry::geometry; Subject = const 
> boost::spirit::karma::rule
>  >, const mapnik::geometry::geometry&(), 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  Derived>&, const Expr&, const Attr&) [with OutputIterator = 
> std::back_insert_iterator >; Properties = 
> mpl_::int_<15>; Expr = 
> mapnik::json::geometry_generator_grammar
>  >, mapnik::geometry::geometry >; Attr = 
> mapnik::geometry::geometry]’
> /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 >; Expr = 
> mapnik::json::geometry_generator_grammar
>  >, mapnik::geometry::geometry >; Attr = 
> mapnik::geometry::geometry]’
> 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::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