Debian Bug report logs - #1096759
gpm: ftbfs with GCC-15

version graph

Package: src:gpm; Maintainer for src:gpm is Axel Beckert <[email protected]>;

Reported by: Matthias Klose <[email protected]>

Date: Mon, 17 Feb 2025 17:18:56 UTC

Severity: important

Tags: forky, patch, sid

Found in version gpm/1.20.7-11

Forwarded to https://github.com/telmich/gpm/pull/49

Reply or subscribe to this bug.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to Axel Beckert <[email protected]>:
Bug#1096759; Package src:gpm. (Mon, 17 Feb 2025 17:18:56 GMT) (full text, mbox, link).


Acknowledgement sent to Matthias Klose <[email protected]>:
New Bug report received and forwarded. Copy sent to Axel Beckert <[email protected]>. (Mon, 17 Feb 2025 17:18:57 GMT) (full text, mbox, link).


Message #5 received at [email protected] (full text, mbox, reply):

From: Matthias Klose <[email protected]>
To: [email protected]
Subject: gpm: ftbfs with GCC-15
Date: Mon, 17 Feb 2025 17:17:27 +0000
Package: src:gpm
Version: 1.20.7-11
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/gpm_1.20.7-11_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

[...]
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o report.o report.c
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o tools.o tools.c
daemon/check_uniqueness.c: In function ‘check_uniqueness’:
daemon/check_uniqueness.c:38:7: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   38 |       fscanf(fp, "%d", &old_pid);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/liblow.lo lib/liblow.c
daemon/startup.c: In function ‘startup’:
daemon/startup.c:38:14: warning: unused variable ‘opt’ [-Wunused-variable]
   38 |    int i, j, opt;
      |              ^~~
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/libhigh.lo lib/libhigh.c
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/libxtra.lo lib/libxtra.c
lib/libxtra.c: In function ‘Gpm_GetServerVersion’:
lib/libxtra.c:64:7: warning: ignoring return value of ‘fgets’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   64 |       fgets(line, 128, f);
      |       ^~~~~~~~~~~~~~~~~~~
lib/libxtra.c: In function ‘Gpm_GetSnapshot’:
lib/libxtra.c:126:4: warning: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  126 |    write(gpm_fd, &conn, sizeof(Gpm_Connect));
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/report-lib.lo lib/report-lib.c
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o tools.lo tools.c
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -DPIC -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/libcurses.lo lib/libcurses.c
lib/report-lib.c: In function ‘gpm_report’:
lib/report-lib.c:50:23: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
   50 |    syslog(log_level, "%s", string);
      |                       ^~
In file included from /usr/include/x86_64-linux-gnu/sys/syslog.h:207,
                 from /usr/include/syslog.h:1,
                 from /build/reproducible-path/gpm-1.20.7/src/headers/message.h:235,
                 from lib/report-lib.c:25:
In function ‘syslog’,
    inlined from ‘gpm_report’ at lib/report-lib.c:50:4:
/usr/include/x86_64-linux-gnu/bits/syslog.h:37:3: warning: ‘log_level’ may be used uninitialized [-Wmaybe-uninitialized]
   37 |   __syslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/report-lib.c: In function ‘gpm_report’:
lib/report-lib.c:30:8: note: ‘log_level’ was declared here
   30 |    int log_level;
      |        ^~~~~~~~~
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/liblow.o lib/liblow.c
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/gpm-1.20.7/src -DHAVE_CONFIG_H -include headers/config.h -Wall -DSYSCONFDIR="\"/etc\"" -DSBINDIR="\"/usr/sbin\"" -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/gpm-1.20.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o lib/libhigh.o lib/libhigh.c
lib/libcurses.c:52:5: error: conflicting types for ‘Gpm_Wgetch’; have ‘int(WINDOW *)’ {aka ‘int(struct _WINDOW *)’}
   52 | int Gpm_Wgetch(WINDOW *win)
      |     ^~~~~~~~~~
In file included from /build/reproducible-path/gpm-1.20.7/src/headers/gpmInt.h:28,
                 from lib/libcurses.c:30:
/build/reproducible-path/gpm-1.20.7/src/headers/gpm.h:271:12: note: previous declaration of ‘Gpm_Wgetch’ with type ‘int(void)’
  271 | extern int Gpm_Wgetch();
      |            ^~~~~~~~~~
lib/libcurses.c: In function ‘Gpm_Wgetch’:
lib/libcurses.c:154:25: warning: pointer targets in passing argument 1 of ‘gpm_convert_event’ differ in signedness [-Wpointer-sign]
  154 |       gpm_convert_event(mdata,&ev);
      |                         ^~~~~
      |                         |
      |                         unsigned char *
lib/libcurses.c:104:40: note: expected ‘char *’ but argument is of type ‘unsigned char *’
  104 |     extern int gpm_convert_event(char *data, Gpm_Event *event);
      |                                  ~~~~~~^~~~
make[3]: *** [Makefile:71: lib/libcurses.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/build/reproducible-path/gpm-1.20.7/src'
make[2]: *** [Makefile:77: do-all] Error 1
make[2]: Leaving directory '/build/reproducible-path/gpm-1.20.7'
dh_auto_build: error: make -j8 returned exit code 2
make[1]: *** [debian/rules:20: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/gpm-1.20.7'
make: *** [debian/rules:8: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2



Information forwarded to [email protected], Axel Beckert <[email protected]>:
Bug#1096759; Package src:gpm. (Fri, 21 Feb 2025 20:51:04 GMT) (full text, mbox, link).


Acknowledgement sent to Helmut Grohne <[email protected]>:
Extra info received and forwarded to list. Copy sent to Axel Beckert <[email protected]>. (Fri, 21 Feb 2025 20:51:04 GMT) (full text, mbox, link).


Message #10 received at [email protected] (full text, mbox, reply):

From: Helmut Grohne <[email protected]>
To: [email protected]
Subject: Re: Bug#1096759: gpm: ftbfs with GCC-15
Date: Thu, 20 Feb 2025 21:50:15 +0100
[Message part 1 (text/plain, inline)]
Control: forwarded -1 https://github.com/telmich/gpm/pull/49
Control: tags -1 + patch

Hi Samuel,

On Mon, Feb 17, 2025 at 05:17:27PM +0000, Matthias Klose wrote:
> lib/libcurses.c:52:5: error: conflicting types for ‘Gpm_Wgetch’; have ‘int(WINDOW *)’ {aka ‘int(struct _WINDOW *)’}
>    52 | int Gpm_Wgetch(WINDOW *win)
>       |     ^~~~~~~~~~
> In file included from /build/reproducible-path/gpm-1.20.7/src/headers/gpmInt.h:28,
>                  from lib/libcurses.c:30:
> /build/reproducible-path/gpm-1.20.7/src/headers/gpm.h:271:12: note: previous declaration of ‘Gpm_Wgetch’ with type ‘int(void)’
>   271 | extern int Gpm_Wgetch();
>       |            ^~~~~~~~~~

This is a really tricky one. src/headers/gpm.h wants to declare

    int Gpm_Wgetch(WINDOW*);

without #including <curses.h>. Until C23, its workaround is declaring

    int Gpm_Wgetch();

but that is now treated as a function taking no arguments and it does
not work. There is work upstream trying to fix this, but the proposed MR
makes gpm depend on ncurses and that means we'll get into a
bootstrapping loop. Do you build gpm before curses or curses before gpm?

The MR also fixes a problem with shadowing and another unspecified
argument list. In the latter case a forward declaration can be used.

So in this case, I don't see many options but to turn it into

    int Gpm_Wgetch(void*);

which should keep existing code compiling (except when it passes
multiple arguments or non-pointer arguments).

The attached patch makes it build. It's not great.

Helmut
[gpm_1.20.7-11.1.debdiff (text/plain, attachment)]

Set Bug forwarded-to-address to 'https://github.com/telmich/gpm/pull/49'. Request was from Helmut Grohne <[email protected]> to [email protected]. (Fri, 21 Feb 2025 20:51:04 GMT) (full text, mbox, link).


Added tag(s) patch. Request was from Helmut Grohne <[email protected]> to [email protected]. (Fri, 21 Feb 2025 20:51:04 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <[email protected]>. Last modified: Tue May 13 13:42:31 2025; Machine Name: bembo

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU General Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.