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.77, either 3.1.0 or latest #4329

Open
Apteryks opened this issue Jul 13, 2022 · 6 comments
Open

mapnik fails to build with boost 1.77, either 3.1.0 or latest #4329

Apteryks opened this issue Jul 13, 2022 · 6 comments

Comments

@Apteryks
Copy link

Hello,

I'm trying to update mapnik in Guix, but I haven't been able to build it.

Here's an excerpt of the failed build when using the latest commit:

[...]
utils/mapnik-index/process_geojson_file_x3.cpp:136:46: note: ‘geom_type’ was declared here
  136 |             mapnik::geometry::geometry_types geom_type;
      |                                              ^~~~~~~~~
c++ -o src/libmapnik.so -Wl,-rpath-link,. -Wl,-soname,libmapnik.so.4.0 -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib -pthread -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib src/expression_grammar_x3.os src/fs.os src/request.os src/well_known_srs.os src/params.os src/parse_image_filters.os src/generate_image_filters.os src/image_filter_grammar_x3.os src/color.os src/conversions_numeric.os src/conversions_string.os src/image_copy.os src/image_compositing.os src/image_scaling.os src/datasource_cache.os src/datasource_cache_static.os src/debug.os src/geometry/box2d.os src/geometry/closest_point.os src/geometry/reprojection.os src/geometry/envelope.os src/geometry/interior.os src/geometry/polylabel.os src/expression_node.os src/expression_string.os src/expression.os src/transform_expression.os src/transform_expression_grammar_x3.os src/feature_kv_iterator.os src/feature_style_processor.os src/feature_type_style.os src/dasharray_parser.os src/font_engine_freetype.os src/font_set.os src/function_call.os src/gradient.os src/path_expression_grammar_x3.os src/parse_path.os src/image_reader.os src/cairo_io.os src/image.os src/image_view.os src/image_view_any.os src/image_any.os src/image_options.os src/image_util.os src/image_util_jpeg.os src/image_util_png.os src/image_util_tiff.os src/image_util_webp.os src/layer.os src/map.os src/load_map.os src/palette.os src/marker_helpers.os src/plugin.os src/rule.os src/save_map.os src/wkb.os src/twkb.os src/projection.os src/proj_transform.os src/proj_transform_cache.os src/scale_denominator.os src/simplify.os src/parse_transform.os src/memory_datasource.os src/symbolizer.os src/symbolizer_keys.os src/symbolizer_enumerations.os src/unicode.os src/raster_colorizer.os src/mapped_memory_cache.os src/marker_cache.os src/css/css_color_grammar_x3.os src/css/css_grammar_x3.os src/svg/svg_parser.os src/svg/svg_path_parser.os src/svg/svg_points_parser.os src/svg/svg_transform_parser.os src/svg/svg_path_grammar_x3.os src/warp.os src/vertex_cache.os src/vertex_adapters.os src/text/font_library.os src/text/text_layout.os src/text/text_line.os src/text/itemizer.os src/text/scrptrun.os src/text/face.os src/text/glyph_positions.os src/text/placement_finder.os src/text/properties_util.os src/text/renderer.os src/text/color_font_renderer.os src/text/symbolizer_helpers.os src/text/text_properties.os src/text/font_feature_settings.os src/text/formatting/base.os src/text/formatting/list.os src/text/formatting/text.os src/text/formatting/format.os src/text/formatting/layout.os src/text/formatting/registry.os src/text/placements/registry.os src/text/placements/base.os src/text/placements/dummy.os src/text/placements/list.os src/text/placements/simple.os src/group/group_layout_manager.os src/group/group_rule.os src/group/group_symbolizer_helper.os src/xml_tree.os src/config_error.os src/color_factory.os src/renderer_common.os src/renderer_common/render_group_symbolizer.os src/renderer_common/render_markers_symbolizer.os src/renderer_common/render_pattern.os src/renderer_common/render_thunk_extractor.os src/renderer_common/pattern_alignment.os src/util/math.os src/util/mapped_memory_file.os src/value.os src/cairo/process_markers_symbolizer.os src/cairo/process_group_symbolizer.os src/cairo/cairo_context.os src/cairo/cairo_renderer.os src/cairo/cairo_render_vector.os src/cairo/process_text_symbolizer.os src/cairo/process_line_symbolizer.os src/cairo/process_line_pattern_symbolizer.os src/cairo/process_polygon_symbolizer.os src/cairo/process_polygon_pattern_symbolizer.os src/cairo/process_debug_symbolizer.os src/cairo/process_point_symbolizer.os src/cairo/process_raster_symbolizer.os src/cairo/process_building_symbolizer.os src/png_reader.os src/tiff_reader.os src/webp_reader.os src/jpeg_reader.os src/agg/agg_renderer.os src/agg/process_dot_symbolizer.os src/agg/process_building_symbolizer.os src/agg/process_line_symbolizer.os src/agg/process_line_pattern_symbolizer.os src/agg/process_text_symbolizer.os src/agg/process_point_symbolizer.os src/agg/process_polygon_symbolizer.os src/agg/process_polygon_pattern_symbolizer.os src/agg/process_raster_symbolizer.os src/agg/process_shield_symbolizer.os src/agg/process_markers_symbolizer.os src/agg/process_group_symbolizer.os src/agg/process_debug_symbolizer.os src/grid/process_markers_symbolizer.os src/grid/process_group_symbolizer.os src/grid/grid.os src/grid/grid_renderer.os src/grid/process_building_symbolizer.os src/grid/process_line_pattern_symbolizer.os src/grid/process_line_symbolizer.os src/grid/process_point_symbolizer.os src/grid/process_polygon_pattern_symbolizer.os src/grid/process_polygon_symbolizer.os src/grid/process_raster_symbolizer.os src/grid/process_shield_symbolizer.os src/grid/process_text_symbolizer.os src/rapidxml_loader.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -L/gnu/store/6gq2n65ixpn6drd5wai2h7g5wjm6bp2b-cairo-1.16.0/lib -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl
c++ -o plugins/input/csv.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/csv/csv_utils.os plugins/input/csv/csv_datasource.os plugins/input/csv/csv_featureset.os plugins/input/csv/csv_inline_featureset.os plugins/input/csv/csv_index_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-json -lmapnik-wkt -lboost_system -licuuc
c++ -o utils/shapeindex/shapeindex -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib utils/shapeindex/shapeindex.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lboost_program_options -lboost_system -licuuc
c++ -o utils/mapnik-index/mapnik-index -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib utils/mapnik-index/mapnik-index.o utils/mapnik-index/process_csv_file.o utils/mapnik-index/process_geojson_file_x3.o plugins/input/csv/csv_utils.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lboost_program_options -lboost_system -lmapnik-json -lmapnik-wkt -licuuc
c++ -o plugins/input/pgraster.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/pgraster/pgraster_datasource.os plugins/input/pgraster/pgraster_featureset.os plugins/input/pgraster/pgraster_wkb_reader.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lpq -lboost_system -licuuc
c++ -o plugins/input/sqlite.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/sqlite/sqlite_datasource.os plugins/input/sqlite/sqlite_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lsqlite3 -lboost_system -licuuc
c++ -o plugins/input/raster.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/raster/raster_datasource.os plugins/input/raster/raster_featureset.os plugins/input/raster/raster_info.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lboost_system -licuuc
c++ -o test/standalone/datasource_registration_test-bin -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/standalone/datasource_registration_test.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
c++ -o demo/c++/rundemo -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib demo/c++/rundemo.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lsqlite3 -lpthread
c++ -o plugins/input/topojson.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/topojson/topojson_datasource.os plugins/input/topojson/topojson_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-json -lboost_system -licuuc
c++ -o test/unit/run -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/unit/vertex_adapter/clipping_test.o test/unit/vertex_adapter/extend_converter.o test/unit/vertex_adapter/line_offset_test.o test/unit/vertex_adapter/offset_converter.o test/unit/vertex_adapter/simplify_converters_test.o test/unit/vertex_adapter/transform_path_adapter.o test/unit/vertex_adapter/vertex_adapter.o test/unit/util/char_array_buffer.o test/unit/text/script_runs.o test/unit/text/shaping.o test/unit/text/text_placements_list.o test/unit/text/text_placements_simple.o test/unit/symbolizer/marker_placement_vertex_last.o test/unit/symbolizer/markers_point_placement.o test/unit/symbolizer/symbolizer_test.o test/unit/svg/svg_parser_test.o test/unit/svg/svg_path_parser_test.o test/unit/svg/svg_renderer_test.o test/unit/sql/sql_parse.o test/unit/serialization/wkb_formats_test.o test/unit/serialization/wkb_test.o test/unit/serialization/xml_parser_trim.o test/unit/renderer/buffer_size_scale_factor.o test/unit/renderer/cairo_io.o test/unit/renderer/feature_style_processor.o test/unit/projection/proj_transform.o test/unit/pixel/agg_blend_src_over_test.o test/unit/pixel/palette.o test/unit/numerics/enumeration.o test/unit/numerics/safe_cast.o test/unit/map/background.o test/unit/map/query_map_point.o test/unit/imaging/image.o test/unit/imaging/image_apply_opacity.o test/unit/imaging/image_filter.o test/unit/imaging/image_io_test.o test/unit/imaging/image_is_solid.o test/unit/imaging/image_painted_test.o test/unit/imaging/image_premultiply.o test/unit/imaging/image_set_pixel.o test/unit/imaging/image_view.o test/unit/imaging/tiff_io.o test/unit/imaging/webp_io.o test/unit/geometry/centroid.o test/unit/geometry/closest_point.o test/unit/geometry/geometry.o test/unit/geometry/geometry_envelope_test.o test/unit/geometry/geometry_hit_test.o test/unit/geometry/geometry_is_simple.o test/unit/geometry/geometry_is_valid.o test/unit/geometry/geometry_reprojection.o test/unit/geometry/geometry_strategy_test.o test/unit/geometry/geometry_test_helper.o test/unit/geometry/grid_vertex_converter.o test/unit/geometry/interior.o test/unit/geometry/is_clockwise.o test/unit/geometry/is_empty.o test/unit/geometry/polygon_vertex_processor.o test/unit/geometry/polylabel.o test/unit/geometry/remove_empty.o test/unit/font/fontset_runtime_test.o test/unit/datasource/csv.o test/unit/datasource/gdal.o test/unit/datasource/geobuf.o test/unit/datasource/geojson.o test/unit/datasource/memory.o test/unit/datasource/ogr.o test/unit/datasource/postgis.o test/unit/datasource/shapeindex.o test/unit/datasource/spatial_index.o test/unit/datasource/topojson.o test/unit/core/box2d_test.o test/unit/core/comparison_test.o test/unit/core/conversions_test.o test/unit/core/copy_move_test.o test/unit/core/exceptions_test.o test/unit/core/expressions_test.o test/unit/core/params_test.o test/unit/core/transform_expressions_test.o test/unit/core/value_test.o test/unit/color/css_color.o test/unit/run.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
c++ -o test/standalone/map_xml_test-bin -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/standalone/map_xml_test.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
ld: demo/c++/rundemo.o: in function `main':
rundemo.cpp:(.text.startup+0x2898): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: rundemo.cpp:(.text.startup+0x2cf6): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
collect2: error: ld returned 1 exit status
c++ -o test/standalone/agg_rasterizer_integer_overflow_test-bin -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/standalone/agg_rasterizer_integer_overflow_test.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
c++ -o test/standalone/font_registration_test-bin -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/standalone/font_registration_test.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
c++ -o plugins/input/postgis.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/postgis/postgis_datasource.os plugins/input/postgis/postgis_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lpq -lboost_system -licuuc
c++ -o test/visual/run -pthread -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib test/visual/report.o test/visual/runner.o test/visual/run.o test/visual/parse_map_sizes.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lboost_program_options
c++ -o utils/mapnik-render/mapnik-render -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib utils/mapnik-render/mapnik-render.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lboost_program_options -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl
c++ -o plugins/input/geojson.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/geojson/geojson_datasource.os plugins/input/geojson/geojson_featureset.os plugins/input/geojson/geojson_index_featureset.os plugins/input/geojson/geojson_memory_index_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lmapnik-json -lboost_system -licuuc
c++ -o plugins/input/shape.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/shape/shape_datasource.os plugins/input/shape/shape_featureset.os plugins/input/shape/shape_index_featureset.os plugins/input/shape/shape_io.os plugins/input/shape/shape_utils.os plugins/input/shape/dbfile.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -lmapnik -lboost_system -licuuc
c++ -o plugins/input/geobuf.input -shared -Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib plugins/input/geobuf/geobuf_datasource.os plugins/input/geobuf/geobuf_featureset.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/lib -L/usr/lib -licuuc -lboost_system -lmapnik-json -lmapnik
scons: *** [demo/c++/rundemo] Error 1
ld: test/standalone/agg_rasterizer_integer_overflow_test.o: in function `____C_A_T_C_H____T_E_S_T____0()':
agg_rasterizer_integer_overflow_test.cpp:(.text+0x3274f): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/visual/runner.o: in function `visual_tests::cairo_renderer::render(mapnik::Map const&, double) const [clone .constprop.0]':
runner.cpp:(.text+0x910): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
ld: test/visual/runner.o: in function `void visual_tests::renderer_visitor::test<visual_tests::renderer<visual_tests::cairo_svg_renderer> >(visual_tests::renderer<visual_tests::cairo_svg_renderer> const&) const':
runner.cpp:(.text._ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_18cairo_svg_rendererEEEEEvRKT_[_ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_18cairo_svg_rendererEEEEEvRKT_]+0x25e): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
ld: test/visual/runner.o: in function `void visual_tests::renderer_visitor::test<visual_tests::renderer<visual_tests::agg_renderer> >(visual_tests::renderer<visual_tests::agg_renderer> const&) const':
runner.cpp:(.text._ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_12agg_rendererEEEEEvRKT_[_ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_12agg_rendererEEEEEvRKT_]+0x2cf): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: runner.cpp:(.text._ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_12agg_rendererEEEEEvRKT_[_ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_12agg_rendererEEEEEvRKT_]+0x58a): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/visual/runner.o: in function `void visual_tests::renderer_visitor::test<visual_tests::renderer<visual_tests::cairo_ps_renderer> >(visual_tests::renderer<visual_tests::cairo_ps_renderer> const&) const':
runner.cpp:(.text._ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_17cairo_ps_rendererEEEEEvRKT_[_ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_17cairo_ps_rendererEEEEEvRKT_]+0x24f): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
ld: test/visual/runner.o: in function `void visual_tests::renderer_visitor::test<visual_tests::renderer<visual_tests::cairo_pdf_renderer> >(visual_tests::renderer<visual_tests::cairo_pdf_renderer> const&) const':
runner.cpp:(.text._ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_18cairo_pdf_rendererEEEEEvRKT_[_ZNK12visual_tests16renderer_visitor4testINS_8rendererINS_18cairo_pdf_rendererEEEEEvRKT_]+0x24f): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
collect2: error: ld returned 1 exit status
scons: *** [test/visual/run] Error 1
collect2: error: ld returned 1 exit status
scons: *** [test/standalone/agg_rasterizer_integer_overflow_test-bin] Error 1
ld: utils/mapnik-render/mapnik-render.o: in function `main':
mapnik-render.cpp:(.text.startup+0xc24): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
collect2: error: ld returned 1 exit status
scons: *** [utils/mapnik-render/mapnik-render] Error 1
ld: test/unit/renderer/buffer_size_scale_factor.o: in function `____C_A_T_C_H____T_E_S_T____0()':
buffer_size_scale_factor.cpp:(.text+0xc4f): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: buffer_size_scale_factor.cpp:(.text+0xcf1): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/unit/map/background.o: in function `____C_A_T_C_H____T_E_S_T____0()':
background.cpp:(.text+0x34f): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: background.cpp:(.text+0xbcd): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
ld: test/unit/imaging/image_painted_test.o: in function `____C_A_T_C_H____T_E_S_T____0()':
image_painted_test.cpp:(.text+0xec7): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/unit/font/fontset_runtime_test.o: in function `____C_A_T_C_H____T_E_S_T____0()':
fontset_runtime_test.cpp:(.text+0x152e): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/unit/datasource/ogr.o: in function `____C_A_T_C_H____T_E_S_T____0()':
ogr.cpp:(.text+0x4b0): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
ld: test/unit/core/exceptions_test.o: in function `____C_A_T_C_H____T_E_S_T____0()':
exceptions_test.cpp:(.text+0x183a): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
collect2: error: ld returned 1 exit status
scons: *** [test/unit/run] Error 1
scons: building terminated because of errors.
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "scons" arguments: ("-j" "24" "CC=gcc" "PREFIX=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0" "CUSTOM_LDFLAGS=-Wl,-rpath=/gnu/store/ssfra5gb56wvcybcqs8xhpcv9s0a79i6-mapnik-3.1.0/lib") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `build' failed after 117.8 seconds

If I use the latest release instead (3.1.0), I get:

[...]
c++ -o plugins/input/csv/csv_utils.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include plugins/input/csv/csv_utils.cpp
c++ -o plugins/input/csv/csv_utils.os -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include plugins/input/csv/csv_utils.cpp
c++ -o src/json/mapnik_geometry_to_geojson.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/mapnik_geometry_to_geojson.cpp
ar rc deps/agg/libagg.a deps/agg/src/agg_line_aa_basics.o deps/agg/src/agg_vcgen_bspline.o deps/agg/src/agg_trans_warp_magnifier.o deps/agg/src/agg_arc.o deps/agg/src/agg_vpgen_clip_polygon.o deps/agg/src/agg_vcgen_markers_term.o deps/agg/src/agg_trans_single_path.o deps/agg/src/agg_bspline.o deps/agg/src/agg_gsv_text.o deps/agg/src/agg_vcgen_contour.o deps/agg/src/agg_trans_double_path.o deps/agg/src/agg_vcgen_stroke.o deps/agg/src/agg_bezier_arc.o deps/agg/src/agg_line_profile_aa.o deps/agg/src/agg_vcgen_dash.o deps/agg/src/agg_image_filters.o deps/agg/src/agg_sqrt_tables.o deps/agg/src/agg_embedded_raster_fonts.o deps/agg/src/agg_vcgen_smooth_poly1.o deps/agg/src/agg_vpgen_segmentator.o deps/agg/src/agg_arrowhead.o deps/agg/src/agg_curves.o deps/agg/src/agg_vpgen_clip_polyline.o deps/agg/src/agg_pixfmt_rgba.o deps/agg/src/agg_rounded_rect.o deps/agg/src/agg_trans_affine.o
ranlib deps/agg/libagg.a
c++ -o src/json/mapnik_json_geometry_parser.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/mapnik_json_geometry_parser.cpp
c++ -o src/json/mapnik_json_generator_grammar.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/mapnik_json_generator_grammar.cpp
c++ -o src/json/mapnik_json_geometry_grammar.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/mapnik_json_geometry_grammar.cpp
c++ -o src/json/mapnik_json_feature_grammar.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/mapnik_json_feature_grammar.cpp
In file included from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp:25,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp:15,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/rtree.hpp:80,
                 from plugins/input/csv/csv_datasource.hpp:41,
                 from plugins/input/csv/csv_featureset.hpp:29,
                 from plugins/input/csv/csv_featureset.cpp:24:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp: In function ‘bool boost::geometry::index::detail::disjoint_box_box(const Box&, const Box&, const boost::geometry::default_strategy&)’:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:32: error: ‘boost::geometry::strategy::disjoint’ has not been declared
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                ^~~~~~~~
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:68: error: expected unqualified-id before ‘<’ token
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                                                    ^
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:36:82: error: missing template arguments before ‘(’ token
   36 |     return geometry::detail::disjoint::disjoint_box_box(box1, box2, strategy_type());
      |                                                                                  ^
In file included from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp:25,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp:15,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/rtree.hpp:80,
                 from plugins/input/csv/csv_datasource.hpp:41,
                 from plugins/input/csv/csv_index_featureset.hpp:30,
                 from plugins/input/csv/csv_index_featureset.cpp:24:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp: In function ‘bool boost::geometry::index::detail::disjoint_box_box(const Box&, const Box&, const boost::geometry::default_strategy&)’:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:32: error: ‘boost::geometry::strategy::disjoint’ has not been declared
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                ^~~~~~~~
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:68: error: expected unqualified-id before ‘<’ token
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                                                    ^
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:36:82: error: missing template arguments before ‘(’ token
   36 |     return geometry::detail::disjoint::disjoint_box_box(box1, box2, strategy_type());
      |                                                                                  ^
In file included from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp:25,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp:15,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/rtree.hpp:80,
                 from plugins/input/csv/csv_datasource.hpp:41,
                 from plugins/input/csv/csv_inline_featureset.hpp:29,
                 from plugins/input/csv/csv_inline_featureset.cpp:24:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp: In function ‘bool boost::geometry::index::detail::disjoint_box_box(const Box&, const Box&, const boost::geometry::default_strategy&)’:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:32: error: ‘boost::geometry::strategy::disjoint’ has not been declared
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                ^~~~~~~~
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:68: error: expected unqualified-id before ‘<’ token
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                                                    ^
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:36:82: error: missing template arguments before ‘(’ token
   36 |     return geometry::detail::disjoint::disjoint_box_box(box1, box2, strategy_type());
      |                                                                                  ^
In file included from plugins/input/csv/csv_featureset.hpp:38,
                 from plugins/input/csv/csv_featureset.cpp:24:
include/mapnik/mapped_memory_cache.hpp: At global scope:
include/mapnik/mapped_memory_cache.hpp:60:35: warning: type attributes ignored after type is already defined [-Wattributes]
   60 | extern template class MAPNIK_DECL singleton<mapped_memory_cache, CreateStatic>;
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from plugins/input/csv/csv_index_featureset.hpp:38,
                 from plugins/input/csv/csv_index_featureset.cpp:24:
include/mapnik/mapped_memory_cache.hpp: At global scope:
include/mapnik/mapped_memory_cache.hpp:60:35: warning: type attributes ignored after type is already defined [-Wattributes]
   60 | extern template class MAPNIK_DECL singleton<mapped_memory_cache, CreateStatic>;
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/choose_next_node.hpp:25,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp:15,
                 from /gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/rtree.hpp:80,
                 from plugins/input/csv/csv_datasource.hpp:41,
                 from plugins/input/csv/csv_datasource.cpp:25:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp: In function ‘bool boost::geometry::index::detail::disjoint_box_box(const Box&, const Box&, const boost::geometry::default_strategy&)’:
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:32: error: ‘boost::geometry::strategy::disjoint’ has not been declared
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                ^~~~~~~~
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:35:68: error: expected unqualified-id before ‘<’ token
   35 |     typedef typename strategy::disjoint::services::default_strategy<Box, Box>::type strategy_type;
      |                                                                    ^
/gnu/store/hm6dlgzkqz33fbiba07jjh8yzdikn7pp-boost-1.77.0/include/boost/geometry/index/detail/algorithms/intersection_content.hpp:36:82: error: missing template arguments before ‘(’ token
   36 |     return geometry::detail::disjoint::disjoint_box_box(box1, box2, strategy_type());
      |                                                                                  ^
c++ -o src/json/generic_json.o -c -std=c++14 -DU_USING_ICU_NAMESPACE=0 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -pthread -ftemplate-depth-300 -Wsign-compare -Wshadow -O3 -fPIC -DMAPNIK_MEMORY_MAPPED_FILE -DMAPNIK_HAS_DLCFN -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_WEBP -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDEBUG -Ideps -Ideps/mapbox/variant/include -Ideps/agg/include -Iinclude -I/gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/include/freetype2 -I/gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/include/libpng16 -I/gnu/store/sclbgw6zss7acky2ic0r8lrg430cys4a-postgresql-14.4/include -I/usr/include src/json/generic_json.cpp
scons: *** [plugins/input/csv/csv_inline_featureset.os] Error 1
In file included from plugins/input/csv/csv_featureset.hpp:38,
                 from plugins/input/csv/csv_datasource.cpp:26:
include/mapnik/mapped_memory_cache.hpp: At global scope:
include/mapnik/mapped_memory_cache.hpp:60:35: warning: type attributes ignored after type is already defined [-Wattributes]
   60 | extern template class MAPNIK_DECL singleton<mapped_memory_cache, CreateStatic>;
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scons: *** [plugins/input/csv/csv_featureset.os] Error 1
scons: *** [plugins/input/csv/csv_index_featureset.os] Error 1
scons: *** [plugins/input/csv/csv_datasource.os] Error 1
scons: building terminated because of errors.
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "scons" arguments: ("-j" "24" "CC=gcc" "PREFIX=/gnu/store/bfyzk5b4pgmlwa9i5lxxqvja4zrs4d6x-mapnik-3.1.0" "CUSTOM_LDFLAGS=-Wl,-rpath=/gnu/store/bfyzk5b4pgmlwa9i5lxxqvja4zrs4d6x-mapnik-3.1.0/lib") exit-status: 2 term-signal: #f stop-signal: #f> 
phase `build' failed after 85.9 seconds

What is the secret ingredient I'm missing for a successful build? :-)

The direct dependencies used are:

dependencies: boost@1.77.0 cairo@1.16.0 freetype@2.10.4 harfbuzz@2.8.2 icu4c@69.1 libjpeg-turbo@2.0.5
+ libpng@1.6.37 libtiff@4.3.0 libwebp@1.2.0 libxml2@2.9.12 pkg-config@0.29.2 postgresql@14.4 proj.4@4.9.3
+ sqlite@3.36.0 zlib@1.2.11
@mathisloge
Copy link
Collaborator

Have you tried it with the cmake build?

@Apteryks
Copy link
Author

I haven't; the latest 3.1.0 release lacks a CMakeLists.txt file.

@Apteryks
Copy link
Author

Using the latest commit, it seems to detect boost fine, but now I have a new problem:

ExternalProject.cmake:2650 (message):
  error: could not find git for clone of catch2-populate
Call Stack (most recent call first):
  /gnu/store/j65q3aw414010gdfvmsynwpzfb2jyyd3-cmake-minimal-3.21.4/share/cmake-3.21/Modules/ExternalProject.cmake:3700 (_ep_add_download_command)
  CMakeLists.txt:22 (ExternalProject_Add)

The build system insists on fetching catch2 from the web, although I've provided it with a system-provided package.

@mathisloge
Copy link
Collaborator

If you are working in a offline setup, you need to specify some cmake variables:
https://cmake.org/cmake/help/latest/module/FetchContent.html

  • FETCHCONTENT_FULLY_DISCONNECTED=ON
  • catch2_SOURCE_DIR=<location to catch2>
  • catch2_BINARY_DIR=<location to catch2 cmake binary dir>
  • catch2_POPULATED=ON

@Apteryks
Copy link
Author

Thanks for pointing the doc, the build got farther with this patch, which uses a very recent feature making the above variables obsolete:

1 file changed, 3 insertions(+), 2 deletions(-)
test/CMakeLists.txt | 5 +++--

modified   test/CMakeLists.txt
@@ -6,7 +6,8 @@ include(FetchContent)
 FetchContent_Declare(
   Catch2
   GIT_REPOSITORY https://github.com/catchorg/Catch2.git
-  GIT_TAG        v2.13.7)
+  GIT_TAG        v2.13.7
+  FIND_PACKAGE_ARGS NAMES Catch2)
 FetchContent_MakeAvailable(Catch2)
 
 if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.19.0")
@@ -174,7 +175,7 @@ target_link_libraries(map_xml_test PUBLIC
 )
 target_include_directories(map_xml_test PRIVATE "${Catch2_SOURCE_DIR}/single_include/catch2" "${CMAKE_CURRENT_BINARY_DIR}")
 
-include("${Catch2_SOURCE_DIR}/contrib/Catch.cmake")
+include(Catch)
 
 file(COPY data DESTINATION "${MAPNIK_OUTPUT_DIR}/test")
 file(COPY data-visual DESTINATION "${MAPNIK_OUTPUT_DIR}/test")
Catch)\n"))))

Or in Guix's language, Scheme:

      (arguments
       (list
        #:cmake cmake                   ;for FIND_PACKAGE_ARGS
        #:configure-flags
        #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
                               #$(this-package-native-input "catch2")
                               "/include/catch2"))
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'unpack 'use-system-catch2
              (lambda _
                (substitute* "test/CMakeLists.txt"
                  (("GIT_TAG.*v2.13.7" all)
                   (string-append all "\n"
                                  "  FIND_PACKAGE_ARGS NAMES Catch2"))
                  (("^include.*Catch2_SOURCE_DIR.*contrib/Catch.cmake.*")
                   "include(Catch)\n")))))))

I needed the submodules in the checkout for the mapbox dependencies and test data (I'll try making separate packages for the mapbox things later), and the above extra include directive so the test #include catch2.hpp headers could be located.

After which I got a build to fail with a single test failure:

Running tests...
/gnu/store/b1cnwv44s3hnbrp2mqcyxp8kfibpbdhx-cmake-3.24.2/bin/ctest --force-new-ctest-process 
Test project /tmp/guix-build-mapnik-3.1.0-0.8110349.drv-0/build
      Start  1: CSS color
 1/88 Test  #1: CSS color ................................................   Passed    0.02 sec
      Start  2: box2d
 2/88 Test  #2: box2d ....................................................   Passed    0.02 sec
      Start  3: comparison
 3/88 Test  #3: comparison ...............................................   Passed    0.02 sec
      Start  4: conversions
 4/88 Test  #4: conversions ..............................................   Passed    0.02 sec
      Start  5: copy
 5/88 Test  #5: copy .....................................................   Passed    0.03 sec
      Start  6: exceptions
 6/88 Test  #6: exceptions ...............................................   Passed    0.20 sec
      Start  7: expressions
 7/88 Test  #7: expressions ..............................................   Passed    0.02 sec
      Start  8: parameters
 8/88 Test  #8: parameters ...............................................   Passed    0.02 sec
      Start  9: transform-expressions
 9/88 Test  #9: transform-expressions ....................................   Passed    0.02 sec
      Start 10: mapnik::value
10/88 Test #10: mapnik::value ............................................   Passed    0.02 sec
      Start 11: csv
11/88 Test #11: csv ......................................................   Passed    1.25 sec
      Start 12: gdal
12/88 Test #12: gdal .....................................................   Passed    0.03 sec
      Start 13: Geobuf
13/88 Test #13: Geobuf ...................................................   Passed    0.02 sec
      Start 14: geojson
14/88 Test #14: geojson ..................................................   Passed    0.20 sec
      Start 15: memory datasource
15/88 Test #15: memory datasource ........................................   Passed    0.02 sec
      Start 16: ogr
16/88 Test #16: ogr ......................................................***Failed    0.10 sec
Filters: ogr

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mapnik-test-unit is a Catch v2.13.7 host application.
Run with -? for options

-------------------------------------------------------------------------------
ogr
  ogr point feature
-------------------------------------------------------------------------------
/tmp/guix-build-mapnik-3.1.0-0.8110349.drv-0/source/test/unit/datasource/ogr.cpp:38
...............................................................................

/tmp/guix-build-mapnik-3.1.0-0.8110349.drv-0/source/test/unit/datasource/ogr.cpp:56: FAILED:
  REQUIRE( mapnik::compare(expected, im) == 0 )
with expansion:
  33 == 0

===============================================================================
test cases: 1 | 1 failed
assertions: 2 | 1 passed | 1 failed


      Start 17: postgis
17/88 Test #17: postgis ..................................................   Passed    0.04 sec
      Start 18: ConnectionCreator
18/88 Test #18: ConnectionCreator ........................................   Passed    0.02 sec
      Start 19: invalid shapeindex
19/88 Test #19: invalid shapeindex .......................................   Passed    0.03 sec
      Start 20: shapeindex
20/88 Test #20: shapeindex ...............................................   Passed    0.37 sec
      Start 21: spatial_index
21/88 Test #21: spatial_index ............................................   Passed    0.02 sec
      Start 22: TopoJSON
22/88 Test #22: TopoJSON .................................................   Passed    0.02 sec
      Start 23: fontset
23/88 Test #23: fontset ..................................................   Passed    0.02 sec
      Start 24: geometry centroid
24/88 Test #24: geometry centroid ........................................   Passed    0.02 sec
      Start 25: geometry closest point
25/88 Test #25: geometry closest point ...................................   Passed    0.02 sec
      Start 26: geometry
26/88 Test #26: geometry .................................................   Passed    0.02 sec
      Start 27: geometry ops - envelope
27/88 Test #27: geometry ops - envelope ..................................   Passed    0.02 sec
      Start 28: geometry ops
28/88 Test #28: geometry ops .............................................   Passed    0.02 sec
      Start 29: geometry is_simple
29/88 Test #29: geometry is_simple .......................................   Passed    0.02 sec
      Start 30: geometry is_valid
30/88 Test #30: geometry is_valid ........................................   Passed    0.02 sec
      Start 31: geometry reprojection
31/88 Test #31: geometry reprojection ....................................   Passed    0.23 sec
      Start 32: geometry strategy tests
32/88 Test #32: geometry strategy tests ..................................   Passed    0.03 sec
      Start 33: spiral_iterator
33/88 Test #33: spiral_iterator ..........................................   Passed    0.02 sec
      Start 34: grid_vertex_converter
34/88 Test #34: grid_vertex_converter ....................................   Passed    0.02 sec
      Start 35: polygon interior
35/88 Test #35: polygon interior .........................................   Passed    0.02 sec
      Start 36: Ring is_clockwise
36/88 Test #36: Ring is_clockwise ........................................   Passed    0.02 sec
      Start 37: geometry is_empty
37/88 Test #37: geometry is_empty ........................................   Passed    0.02 sec
      Start 38: polygon_vertex_processor
38/88 Test #38: polygon_vertex_processor .................................   Passed    0.02 sec
      Start 39: polylabel
39/88 Test #39: polylabel ................................................   Passed    0.02 sec
      Start 40: geometry remove_empty
40/88 Test #40: geometry remove_empty ....................................   Passed    0.02 sec
      Start 41: image class
41/88 Test #41: image class ..............................................   Passed    0.02 sec
      Start 42: image apply_opacity
42/88 Test #42: image apply_opacity ......................................   Passed    0.02 sec
      Start 43: image filter
43/88 Test #43: image filter .............................................   Passed    0.02 sec
      Start 44: image io
44/88 Test #44: image io .................................................   Passed    0.06 sec
      Start 45: image is_solid
45/88 Test #45: image is_solid ...........................................   Passed    0.02 sec
      Start 46: image
46/88 Test #46: image ....................................................   Passed    0.02 sec
      Start 47: image premultiply
47/88 Test #47: image premultiply ........................................   Passed    0.02 sec
      Start 48: image set_pixel
48/88 Test #48: image set_pixel ..........................................   Passed    0.02 sec
      Start 49: image view
49/88 Test #49: image view ...............................................   Passed    0.02 sec
      Start 50: tiff io
50/88 Test #50: tiff io ..................................................   Passed    0.06 sec
      Start 51: webp io
51/88 Test #51: webp io ..................................................   Passed    0.03 sec
      Start 52: map
52/88 Test #52: map ......................................................   Passed    0.02 sec
      Start 53: enumeration
53/88 Test #53: enumeration ..............................................   Passed    0.02 sec
      Start 54: saturated cast
54/88 Test #54: saturated cast ...........................................   Passed    0.02 sec
      Start 55: blending
55/88 Test #55: blending .................................................   Passed    0.02 sec
      Start 56: palette
56/88 Test #56: palette ..................................................   Passed    0.02 sec
      Start 57: projection transform
57/88 Test #57: projection transform .....................................   Passed    0.13 sec
      Start 58: feature_style_processor: buffer-size with scale-factor
58/88 Test #58: feature_style_processor: buffer-size with scale-factor ...   Passed    0.02 sec
      Start 59: cairo_io
59/88 Test #59: cairo_io .................................................   Passed    0.02 sec
      Start 60: feature_style_processor
60/88 Test #60: feature_style_processor ..................................   Passed    0.03 sec
      Start 61: geometry formats
61/88 Test #61: geometry formats .........................................   Passed    0.02 sec
      Start 62: Well-known-geometries
62/88 Test #62: Well-known-geometries ....................................   Passed    0.02 sec
      Start 63: xml parser
63/88 Test #63: xml parser ...............................................   Passed    0.02 sec
      Start 64: sql parse
64/88 Test #64: sql parse ................................................   Passed    0.02 sec
      Start 65: SVG parser
65/88 Test #65: SVG parser ...............................................   Passed    0.02 sec
      Start 66: SVG path parser
66/88 Test #66: SVG path parser ..........................................   Passed    0.02 sec
      Start 67: SVG renderer
67/88 Test #67: SVG renderer .............................................   Passed    0.02 sec
      Start 68: marker placement vertex last
68/88 Test #68: marker placement vertex last .............................   Passed    0.02 sec
      Start 69: marker placement point
69/88 Test #69: marker placement point ...................................   Passed    0.02 sec
      Start 70: symbolizer
70/88 Test #70: symbolizer ...............................................   Passed    0.02 sec
      Start 71: nested script runs
71/88 Test #71: nested script runs .......................................   Passed    0.02 sec
      Start 72: many punctuation chars
72/88 Test #72: many punctuation chars ...................................   Passed    0.02 sec
      Start 73: empty runs
73/88 Test #73: empty runs ...............................................   Passed    0.02 sec
      Start 74: shaping
74/88 Test #74: shaping ..................................................   Passed    0.04 sec
      Start 75: text_placements_list
75/88 Test #75: text_placements_list .....................................   Passed    0.02 sec
      Start 76: text_placements_simple
76/88 Test #76: text_placements_simple ...................................   Passed    0.02 sec
      Start 77: char_array_buffer
77/88 Test #77: char_array_buffer ........................................   Passed    0.02 sec
      Start 78: clipping
78/88 Test #78: clipping .................................................   Passed    0.02 sec
      Start 79: extend converter
79/88 Test #79: extend converter .........................................   Passed    0.02 sec
      Start 80: offsets
80/88 Test #80: offsets ..................................................   Passed    0.05 sec
      Start 81: offset converter
81/88 Test #81: offset converter .........................................   Passed    0.06 sec
      Start 82: converters
82/88 Test #82: converters ...............................................   Passed    0.02 sec
      Start 83: transform_path_adapter
83/88 Test #83: transform_path_adapter ...................................   Passed    0.05 sec
      Start 84: vertex_adapters
84/88 Test #84: vertex_adapters ..........................................   Passed    0.02 sec
      Start 85: agg_rasterizer_integer_overflow
85/88 Test #85: agg_rasterizer_integer_overflow ..........................   Passed    0.01 sec
      Start 86: datasource_cache
86/88 Test #86: datasource_cache .........................................   Passed    0.02 sec
      Start 87: font
87/88 Test #87: font .....................................................   Passed    0.05 sec
      Start 88: map xml I/O
88/88 Test #88: map xml I/O ..............................................   Passed    0.30 sec

99% tests passed, 1 tests failed out of 88

Total Test time (real) =   4.87 sec

The following tests FAILED:
         16 - ogr (Failed)
Errors while running CTest
make: *** [Makefile:94: test] Error 8

The dependencies used are:

boost@1.77.0 cairo@1.16.0 catch2@2.13.8 freetype@2.10.4 gdal@3.5.1 harfbuzz@2.8.2
+ icu4c@69.1 libjpeg-turbo@2.0.5 libpng@1.6.37 libtiff@4.3.0 libwebp@1.2.0 libxml2@2.9.12
+ pkg-config@0.29.2 postgresql@14.4 proj@9.1.0 sqlite@3.36.0 zlib@1.2.11

And the build is made in a containerized environment. Any ideas?

@Apteryks
Copy link
Author

For now I've marked the ogr test as expected to fail with

(add-after 'unpack 'disable-problematic-tests
              (lambda _
                ;; The 'ogr' test fails for unknown reasons.  Mark it as
                ;; expected to fail (see:
                ;; https://github.com/mapnik/mapnik/issues/4329).
                (substitute* "/test/unit/datasource/ogr.cpp"
                  (("TEST_CASE\\(\"ogr\"" all)
                   (string-append all ", \"[!shouldfail]\"")))))

And pushed the fixed package to the Guix repo.

archlinux-github pushed a commit to archlinux/aur that referenced this issue Aug 4, 2023
** Changes: **
* Add 3 packages dependencies:
  * Use mapbox-variant rather than submodule
  * Use protozero rather than submodule
  * Use ttf-dejavu rather than bundled fonts
** Patches: **
* mapnik-cmake-harfbuzz.patch based on [this](https://github.com/NixOS/nixpkgs/blob/4cd04c8dbf79b608cfd2274621dd154052dc23ae/pkgs/development/libraries/mapnik/cmake-harfbuzz.patch)
* mapnik-datasource-ogr-test.patch based on [this](mapnik/mapnik#4329)
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

2 participants