Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mapnik fails to build with Boost 1.83 #4407

Open
SMillerDev opened this issue Sep 20, 2023 · 3 comments
Open

Mapnik fails to build with Boost 1.83 #4407

SMillerDev opened this issue Sep 20, 2023 · 3 comments
Assignees

Comments

@SMillerDev
Copy link

Trying to compile mapnik with the latest boost gives a long list of:

  In file included from src/json/mapnik_json_geometry_grammar.cpp:23:
  In file included from include/mapnik/json/geometry_grammar_impl.hpp:26:
  In file included from include/mapnik/json/geometry_grammar.hpp:29:
  include/mapnik/json/generic_json.hpp:97:16: error: no member named 'utf8_output_iterator' in namespace 'boost'
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
          ~~~~~~~^
  include/mapnik/json/generic_json.hpp:97:37: error: unexpected type name 'insert_iter': expected expression
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
                                      ^
  include/mapnik/json/generic_json.hpp:97:50: error: use of undeclared identifier 'utf8_iter'
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
                                                   ^
  include/mapnik/json/generic_json.hpp:98:10: error: use of undeclared identifier 'utf8_iter'; did you mean 'out_iter'?
          *utf8_iter++ = code_point;
           ^~~~~~~~~
           out_iter
  include/mapnik/json/generic_json.hpp:96:21: note: 'out_iter' declared here
          insert_iter out_iter(utf8);
                      ^
  In file included from src/json/generic_json.cpp:23:
  include/mapnik/json/generic_json.hpp:97:16: error: no member named 'utf8_output_iterator' in namespace 'boost'
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
          ~~~~~~~^
  include/mapnik/json/generic_json.hpp:97:37: error: unexpected type name 'insert_iter': expected expression
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
                                      ^
  include/mapnik/json/generic_json.hpp:97:50: error: use of undeclared identifier 'utf8_iter'
          boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
                                                   ^
  include/mapnik/json/generic_json.hpp:98:10: error: use of undeclared identifier 'utf8_iter'; did you mean 'out_iter'?
          *utf8_iter++ = code_point;
           ^~~~~~~~~
           out_iter
  include/mapnik/json/generic_json.hpp:96:21: note: 'out_iter' declared here
          insert_iter out_iter(utf8);
                      ^
@artemp artemp self-assigned this Sep 20, 2023
@artemp
Copy link
Member

artemp commented Sep 21, 2023

@SMillerDev - unicode_iterators are still there but boost_1_83 re-arranged include directives e.g

grep -rn 'utf8_output_iterator' ../boost_1_83_0/boost
../boost_1_83_0/boost/regex/v5/icu.hpp:1199:inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, std::integral_constant<int, 1> const*)
../boost_1_83_0/boost/regex/v5/icu.hpp:1250:inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
../boost_1_83_0/boost/regex/v5/unicode_iterator.hpp:50:class utf8_output_iterator;
../boost_1_83_0/boost/regex/v5/unicode_iterator.hpp:790:class utf8_output_iterator

...

I can't replicate on macOS 13, please provide more details about you build environment.

As a solution try adding #include <boost/regex/icu.hpp> in generic_json.hpp and report back if this fixes compile error.

@SMillerDev
Copy link
Author

Oh, probably good to note for this issue that I'm building the latest release of Mapnik.

@hummeltech
Copy link
Contributor

The pull request #4413 should resolve this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants