#1096770 gramophone2: ftbfs with GCC-15

#1096770#5
Date:
2025-02-17 17:17:48 UTC
From:
To:
[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/gramophone2_0.8.13a-3.5_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

[...]
      | ^
midifile.h:33:15: error: prototype declaration
   33 | unsigned long mf_sec2ticks();
      |               ^~~~~~~~~~~~
midifile.c: In function ‘mf_ticks2sec’:
midifile.c:822:1: warning: old-style function definition [-Wold-style-definition]
  822 | mf_ticks2sec(ticks,division,tempo)
      | ^~~~~~~~~~~~
midifile.c:826:1: error: number of arguments doesn’t match prototype
  826 | {
      | ^
midifile.h:32:7: error: prototype declaration
   32 | float mf_ticks2sec();
      |       ^~~~~~~~~~~~
midifile.c: In function ‘write32bit’:
midifile.c:686:23: warning: old-style function definition [-Wold-style-definition]
  686 |     void write16bit(),write32bit();
      |                       ^~~~~~~~~~
midifile.c:855:1: error: number of arguments doesn’t match prototype
  855 | {
      | ^
midifile.c:686:23: error: prototype declaration
  686 |     void write16bit(),write32bit();
      |                       ^~~~~~~~~~
midifile.c: In function ‘write16bit’:
midifile.c:686:10: warning: old-style function definition [-Wold-style-definition]
  686 |     void write16bit(),write32bit();
      |          ^~~~~~~~~~
midifile.c:865:1: error: number of arguments doesn’t match prototype
  865 | {
      | ^
midifile.c:686:10: error: prototype declaration
  686 |     void write16bit(),write32bit();
      |          ^~~~~~~~~~
midifile.c: In function ‘eputc’:
midifile.c:871:5: warning: old-style function definition [-Wold-style-definition]
  871 | int eputc(c)
      |     ^~~~~
midifile.c:882:22: error: too many arguments to function ‘Mf_putc’; expected 0, have 1
  882 |         return_val = (Mf_putc)(c);
      |                      ^         ~
midifile.c: At top level:
midifile.c:76:13: warning: ‘to32bit’ used but never defined
   76 | static long to32bit();
      |             ^~~~~~~
In file included from GRAMophone.y:40:
GRAMophone.l: In function ‘check_id’:
GRAMophone.l:328:23: warning: comparison between pointer and zero character constant [-Wpointer-compare]
  328 |   if(dhSearch2(yytext)!='\0')
      |                       ^~
GRAMophone.l:328:6: note: did you mean to dereference the pointer?
  328 |   if(dhSearch2(yytext)!='\0')
      |      ^
GRAMophone.tab.c: In function ‘yyparse’:
GRAMophone.tab.c:4585:7: error: too many arguments to function ‘yyerror’; expected 0, have 1
 4585 |       yyerror (YY_("syntax error"));
      |       ^~~~~~~
GRAMophone.y:53:8: note: declared here
   53 |    int yyerror();
      |        ^~~~~~~
GRAMophone.tab.c:4696:3: error: too many arguments to function ‘yyerror’; expected 0, have 1
 4696 |   yyerror (YY_("memory exhausted"));
      |   ^~~~~~~
GRAMophone.y:53:8: note: declared here
   53 |    int yyerror();
      |        ^~~~~~~
make[1]: *** [Makefile:10: default] Error 1
make[1]: Leaving directory '/build/reproducible-path/gramophone2-0.8.13a'
make: *** [/usr/share/cdbs/1/class/makefile.mk:77: debian/stamp-makefile-build] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1096770#14
Date:
2026-06-29 08:32:13 UTC
From:
To:
Hi,

I've provided a patch for this build issue in Git to simplify
cooperation with this package:

https://salsa.debian.org/debian/gramophone2/-/blob/master/debian/patches/gcc-15.patch?ref_type=heads

Kind regards
    Andreas.

#1096770#21
Date:
2026-06-29 12:21:50 UTC
From:
To:
Hi Francesco,

I have NMUed gramophone2 to delayed=15 to fix bug #1096770.
You can find a patch fixing this issue in Git at
https://salsa.debian.org/debian/gramophone2/-/blob/master/debian/patches/gcc-15.patch?ref_type=heads

Since I usually upgrade d/watch to version=5 and convert d/copyright to
DEP5 I opened two according bugs since I was told NMUs should be bug
driven and its not clear whether these changes might fall under
"generally considered acceptable" since not explicitly mentioned in
developers reference.  Please let me know what you think about filing
bugs about such issues in the first place.  This might help me starting
an according discussion.

For your convenience you can find all changes of the NMU in Git at

https://salsa.debian.org/debian/gramophone2

Kind regards
    Andreas.