Skip to content

libfile-mmagic-xs-perl: ftbfs with GCC-15 #9

@gregoa

Description

@gregoa

We have the following bug reported to the Debian package of
File-MMagic-XS, c.f. https://bugs.debian.org/1097185

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:libfile-mmagic-xs-perl
Version: 0.09008-4
Severity: important
Tags: sid forky
User: [email protected]
Usertags: ftbfs-gcc-15

[This bug is NOT targeted to the upcoming trixie 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-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.

The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/libfile-mmagic-xs-perl_0.09008-4_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.

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

  apt-get -t=experimental install g++ 

GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other 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-15/porting_to.html

[...]
      |                                       ~^~~~~~~~~~~~~~~~~~~~~~ ~~~
src/MMagicST.c:456:36: note: in expansion of macro �EQUAL�
  456 |         if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) {
      |                                    ^~~~~
src/MMagicST.h:15:11: note: declared here
   15 |     int (*compare)();
      |           ^~~~~~~
src/MMagicST.c: In function �delete_never�:
src/MMagicST.c:469:1: warning: old-style function definition [-Wold-style-definition]
  469 | delete_never(key, value, never)
      | ^~~~~~~~~~~~
src/MMagicST.c:470:15: warning: unused parameter �key� [-Wunused-parameter]
  470 |     st_data_t key, value, never;
      |               ^~~
src/MMagicST.c: In function �st_cleanup_safe�:
src/MMagicST.c:477:1: warning: old-style function definition [-Wold-style-definition]
  477 | st_cleanup_safe(table, never)
      | ^~~~~~~~~~~~~~~
src/MMagicST.c: In function �st_foreach�:
src/MMagicST.c:488:1: warning: old-style function definition [-Wold-style-definition]
  488 | st_foreach(table, func, arg)
      | ^~~~~~~~~~
src/MMagicST.c:500:23: error: too many arguments to function �func�; expected 0, have 4
  500 |             retval = (*func)(ptr->key, ptr->record, arg, 0);
      |                      ~^~~~~~ ~~~~~~~~
src/MMagicST.c:511:31: error: too many arguments to function �func�; expected 0, have 4
  511 |                     retval = (*func)(0, 0, arg, 1);
      |                              ~^~~~~~ ~
src/MMagicST.c: In function �strhash�:
src/MMagicST.c:538:1: warning: old-style function definition [-Wold-style-definition]
  538 | strhash(string)
      | ^~~~~~~
src/MMagicST.c: In function �numcmp�:
src/MMagicST.c:577:1: warning: old-style function definition [-Wold-style-definition]
  577 | numcmp(x, y)
      | ^~~~~~
src/MMagicST.c: In function �numhash�:
src/MMagicST.c:584:1: warning: old-style function definition [-Wold-style-definition]
  584 | numhash(n)
      | ^~~~~~~
make[1]: *** [Makefile:354: src/MMagicST.o] Error 1
make[1]: *** Waiting for unfinished jobs....
mv src/MMagic.xsc src/MMagic.c
src/perl-mmagic-xs.c: In function �PerlFMM_ascmagic�:
src/perl-mmagic-xs.c:1645:36: warning: pointer targets in passing argument 1 of �strlen� differ in signedness [-Wpointer-sign]
 1645 |     rc = fmm_ascmagic(data, strlen(data), &type);
      |                                    ^~~~
      |                                    |
      |                                    unsigned char *
In file included from /usr/lib/x86_64-linux-gnu/perl/5.40/CORE/perl.h:1711,
                 from src/perl-mmagic-xs.h:5,
                 from src/perl-mmagic-xs.c:105:
/usr/include/string.h:407:35: note: expected �const char *� but argument is of type �unsigned char *�
  407 | extern size_t strlen (const char *__s)
      |                       ~~~~~~~~~~~~^~~
src/perl-mmagic-xs.c: In function �fmm_append_buf�:
src/perl-mmagic-xs.c:375:5: warning: �__builtin_strncat� specified bound depends on the length of the source argument [-Wstringop-overflow=]
  375 |     strncat(*dst, buf, strlen(buf));
      |     ^
src/perl-mmagic-xs.c:367:9: note: length computed here
  367 |     if (strlen(buf) + 1 > MAXMIMESTRING - strlen(*dst)) {
      |         ^~~~~~~~~~~
src/perl-mmagic-xs.c: In function �fmm_ext_magic�:
src/perl-mmagic-xs.c:1457:5: warning: �__builtin_strncpy� specified bound 8192 equals destination size [-Wstringop-truncation]
 1457 |     strncpy(ext, dot + 1, BUFSIZ);
      |     ^
make[1]: Leaving directory '/build/reproducible-path/libfile-mmagic-xs-perl-0.09008'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:13: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2


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

Thanks for considering,
gregor herrmann,
Debian Perl Group

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions