Bug 237016

Summary: graphics/mapnik: fails to build with boost 1.70
Product: Ports & Packages Reporter: Jan Beich <jbeich>
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed Overcome By Events    
Severity: Affects Only Me CC: fcharlier, lantw44, littlesavage, sagarharish999, w.schwarzenfeld
Priority: --- Keywords: needs-patch, regression
Version: LatestFlags: bugzilla: maintainer-feedback? (littlesavage)
Hardware: Any   
OS: Any   
See Also: https://github.com/mapnik/mapnik/issues/4041
https://github.com/mapnik/mapnik/issues/4095
Bug Depends on:    
Bug Blocks: 235956    
Attachments:
Description Flags
master (pre-4.0) snapshot none

Description Jan Beich freebsd_committer freebsd_triage 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 freebsd_triage 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 freebsd_triage 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 freebsd_triage 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.
Comment 9 Jan Beich freebsd_committer freebsd_triage 2019-12-12 15:05:40 UTC
portmgr@ scheduled the port for removal in ports r519652.
Comment 10 Jan Beich freebsd_committer freebsd_triage 2019-12-13 18:04:39 UTC
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
Comment 11 Rene Ladan freebsd_committer freebsd_triage 2020-01-10 20:48:23 UTC
Expired port removed.