Bug#1133511: libboost-geometry-utils-perl: ftbfs with GCC-16
Emanuele Rocca
ema at debian.org
Mon Apr 13 14:05:16 BST 2026
Package: src:libboost-geometry-utils-perl
Version: 0.15-3
Severity: important
Tags: sid forky ftbfs
User: debian-gcc at lists.debian.org
Usertags: ftbfs-gcc-16
Hi,
libboost-geometry-utils-perl fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.
The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/libboost-geometry-utils-perl_arm64.build.xz
The last lines of the build log are at the end of this report.
To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.
apt-get -t=experimental install g++
Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html
Please only close this issue after double-checking that the package can be
built correctly with GCC 16.
Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.
[...]
862 | InterruptPolicy
| ~~~~~~~~~~~~~~~
863 | >
| ~
864 | >::type::apply(
| ~~~~~~~~~~~~~~^
865 | 0, geometry1,
| ~~~~~~~~~~~~~
866 | 1, geometry2,
| ~~~~~~~~~~~~~
867 | turns, interrupt_policy);
| ~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp:171:14: required from ‘static OutputIterator boost::geometry::detail::intersection::intersection_of_linestring_with_areal<ReverseAreal, LineStringOut, OverlayType>::apply(const LineString&, const Areal&, OutputIterator, const Strategy&) [with LineString = boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> >; Areal = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>; OutputIterator = std::back_insert_iterator<boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > > >; Strategy = boost::geometry::strategy_intersection<boost::geometry::cartesian_tag, boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>, boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >, boost::geometry::model::d2::point_xy<double>, void>; bool ReverseAreal = true; LineStringOut = boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> >; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection]’
166 | geometry::get_turns
| ~~~~~~~~~~~~~~~~~~~
167 | <
| ~
168 | false,
| ~~~~~~
169 | (OverlayType == overlay_intersection ? ReverseAreal : !ReverseAreal),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
170 | detail::overlay::calculate_distance_policy
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
171 | >(linestring, areal, turns, policy);
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/geometry/multi/algorithms/intersection.hpp:134:25: required from ‘static OutputIterator boost::geometry::detail::intersection::intersection_of_multi_linestring_with_areal<ReverseAreal, LineStringOut, OverlayType>::apply(const MultiLinestring&, const Areal&, OutputIterator, const Strategy&) [with MultiLinestring = boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >; Areal = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>; OutputIterator = std::back_insert_iterator<boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > > >; Strategy = boost::geometry::strategy_intersection<boost::geometry::cartesian_tag, boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>, boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >, boost::geometry::model::d2::point_xy<double>, void>; bool ReverseAreal = true; LineStringOut = boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> >; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection]’
131 | out = intersection_of_linestring_with_areal
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
132 | <
| ~
133 | ReverseAreal, LineStringOut, OverlayType
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134 | >::apply(*it, areal, out, strategy);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/geometry/multi/algorithms/intersection.hpp:163:21: required from ‘static OutputIterator boost::geometry::detail::intersection::intersection_of_areal_with_multi_linestring<ReverseAreal, LineStringOut, OverlayType>::apply(const Areal&, const MultiLinestring&, OutputIterator, const Strategy&) [with Areal = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>; MultiLinestring = boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >; OutputIterator = std::back_insert_iterator<boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > > >; Strategy = boost::geometry::strategy_intersection<boost::geometry::cartesian_tag, boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>, boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >, boost::geometry::model::d2::point_xy<double>, void>; bool ReverseAreal = true; LineStringOut = boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> >; boost::geometry::overlay_type OverlayType = boost::geometry::overlay_intersection]’
160 | return intersection_of_multi_linestring_with_areal
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161 | <
| ~
162 | ReverseAreal, LineStringOut, OverlayType
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
163 | >::apply(ml, areal, out, strategy);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/geometry/algorithms/intersection.hpp:103:17: required from ‘static bool boost::geometry::dispatch::intersection<Geometry1, Geometry2, Tag1, Tag2, Reverse>::apply(const Geometry1&, const Geometry2&, GeometryOut&, const Strategy&) [with GeometryOut = boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >; Strategy = boost::geometry::strategy_intersection<boost::geometry::cartesian_tag, boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>, boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >, boost::geometry::model::d2::point_xy<double>, void>; Geometry1 = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>, false, false>; Geometry2 = boost::geometry::model::multi_linestring<boost::geometry::model::linestring<boost::geometry::model::d2::point_xy<double> > >; Tag1 = boost::geometry::polygon_tag; Tag2 = boost::geometry::multi_linestring_tag; bool Reverse = false]’
99 | intersection_insert
| ~~~~~~~~~~~~~~~~~~~
100 | <
| ~
101 | Geometry1, Geometry2, OneOut,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102 | overlay_intersection
| ~~~~~~~~~~~~~~~~~~~~
103 | >::apply(geometry1, geometry2, std::back_inserter(geometry_out), strategy);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/geometry/algorithms/intersection.hpp:201:20: required from ‘bool boost::geometry::intersection(const Geometry1&, const Geometry2&, GeometryOut&) [with Geometry1 = model::polygon<model::d2::point_xy<double>, false, false>; Geometry2 = model::multi_linestring<model::linestring<model::d2::point_xy<double> > >; GeometryOut = model::multi_linestring<model::linestring<model::d2::point_xy<double> > >]’
198 | return dispatch::intersection<
| ~~~~~~~~~~~~~~~~~~~~~~~
199 | Geometry1,
| ~~~~~~~~~~
200 | Geometry2
| ~~~~~~~~~
201 | >::apply(geometry1, geometry2, geometry_out, strategy());
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/perl -MExtUtils::XSpp::Cmd -e xspp -- -t "../xsp/typemap.xspt" "../xsp/Utils.xsp":79:34: required from here
src/boost/geometry/algorithms/detail/sections/sectionalize.hpp:84:35: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
84 | for (register std::size_t i = 0; i < DimensionCount; i++)
| ^
error building buildtmp/Utils.o from 'buildtmp/Utils.c' at /usr/share/perl/5.40/ExtUtils/CBuilder/Base.pm line 185.
dh_auto_build: error: /usr/bin/perl Build returned exit code 2
make: *** [debian/rules:4: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
More information about the pkg-perl-maintainers
mailing list