wollmers / Image-Seek

A port of ImgSeek to Perl
Other
4 stars 2 forks source link

libimage-seek-perl: ftbfs with GCC-11 #3

Open gregoa opened 3 years ago

gregoa commented 3 years ago

We have the following bug reported to the Debian package of Image-Seek, c.f. https://bugs.debian.org/984112

It doesn't seem to be a bug in the packaging, so you may want to take a look. Thanks!

------8<-----------8<-----------8<-----------8<-----------8<-----

Package: src:libimage-seek-perl
Version: 0.06-2
Severity: normal
Tags: sid bookworm
User: debian-gcc@lists.debian.org
Usertags: ftbfs-gcc-11

[This bug is not targeted to the upcoming bullseye release]

Please keep this issue open in the bug tracker for the package it
was filed for.  If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.

The package fails to build in a test rebuild on at least amd64 with
gcc-11/g++-11, but succeeds to build with gcc-10/g++-10. The
severity of this report will be raised before the bookworm release,
so nothing has to be done for the bullseye release.

The full build log can be found at:
http://people.debian.org/~doko/logs/20210228/filtered/gcc11/libimage-seek-perl_0.06-2_unstable_gcc11.log
The last lines of the build log are at the end of this report.

To build with GCC 11, either set CC=gcc-11 CXX=g++-11 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++ 

Common build failures are new warnings resulting in build failures with
-Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-11/porting_to.html

GCC 11 defaults to the GNU++17 standard.  If your package installs
header files in /usr/include, please don't work around C++17 issues
by choosing a lower C++ standard for the package build, but fix these
issues to build with the C++17 standard.

[...]
/usr/include/c++/11/limits:1823:7: error: ‘constexpr’ static data member ‘min’ must have an initializer
 1823 |       min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
      |       ^~~
/usr/include/c++/11/limits:1823:7: error: expected ‘;’ at end of member declaration
 1823 |       min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
      |       ^~~
      |          ;
In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
                 from /usr/include/c++/11/bits/stl_tree.h:63,
                 from /usr/include/c++/11/map:60,
                 from imgdb.cpp:24,
                 from Seek.xs:1:
/usr/include/c++/11/limits:1823:13: error: expected unqualified-id before ‘noexcept’
 1823 |       min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
      |             ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/specfun.h:46,
                 from /usr/include/c++/11/cmath:1927,
                 from /usr/include/c++/11/math.h:36,
                 from imgdb.cpp:37,
                 from Seek.xs:1:
/usr/include/c++/11/limits:1826:7: error: ‘constexpr’ static data member ‘max’ must have an initializer
 1826 |       max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
      |       ^~~
/usr/include/c++/11/limits:1826:7: error: expected ‘;’ at end of member declaration
 1826 |       max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
      |       ^~~
      |          ;
In file included from /usr/include/c++/11/bits/stl_algobase.h:59,
                 from /usr/include/c++/11/bits/stl_tree.h:63,
                 from /usr/include/c++/11/map:60,
                 from imgdb.cpp:24,
                 from Seek.xs:1:
/usr/include/c++/11/limits:1826:13: error: expected unqualified-id before ‘noexcept’
 1826 |       max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
      |             ^~~~~~~~~~~~~~~~~~~~~
In file included from imgdb.cpp:33,
                 from Seek.xs:1:
/usr/include/c++/11/tr1/bessel_function.tcc: In function ‘void std::__detail::__bessel_jn(_Tp, _Tp, _Tp&, _Tp&, _Tp&, _Tp&)’:
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
/usr/include/c++/11/tr1/ell_integral.tcc: In function ‘_Tp std::__detail::__ellint_rf(_Tp, _Tp, _Tp)’:
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
/usr/include/c++/11/tr1/ell_integral.tcc: In function ‘_Tp std::__detail::__ellint_rd(_Tp, _Tp, _Tp)’:
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
/usr/include/c++/11/tr1/ell_integral.tcc: In function ‘_Tp std::__detail::__ellint_rj(_Tp, _Tp, _Tp, _Tp)’:
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
haar.h:37:20: error: expected unqualified-id before ‘(’ token
   37 | #define max(a, b)  (((a) > (b)) ? (a) : (b))
      |                    ^
make[1]: *** [Makefile:344: Seek.o] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_build: error: make -j1 returned exit code 2
make: *** [debian/rules:6: build] Error 25
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2

------8<-----------8<-----------8<-----------8<-----------8<-----

Thanks for considering, gregor herrmann, Debian Perl Group

wollmers commented 3 years ago

At first view it looks that forcing C++17 is the reason. I'm not sure which implications a port to C++17 can have to other toolchains like CPAN, cpanm etc.

This will take a while.