Subject: libgda5: ftbfs with GCC-15

From: Matthias Klose <[email-masked]>
Date: Mon, 17 Feb 2025 17:31:14 +0000

Package: src:libgda5
Version: 5.2.10-5
Severity: important
Tags: sid forky
User: [email-masked]
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/libgda5_5.2.10-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

[...]
make[3]: Leaving directory '/build/reproducible-path/libgda5-5.2.10/libgda/binreloc'
Making all in sql-parser
make[3]: Entering directory '/build/reproducible-path/libgda5-5.2.10/libgda/sql-parser'
( cd . && glib-mkenums \
                --fhead "#include <sql-parser/gda-sql-parser.h>\n" \
                --fhead "#include <sql-parser/gda-sql-statement.h>\n" \
                --fhead "#include <glib-object.h>" \
		--vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" 	\
		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
	gda-sql-parser.h gda-sql-statement.h gda-statement-struct-decl.h gda-statement-struct.h gda-statement-struct-compound.h gda-statement-struct-delete.h gda-statement-struct-update.h gda-statement-struct-insert.h gda-statement-struct-parts.h gda-statement-struct-pspec.h gda-statement-struct-select.h gda-statement-struct-trans.h gda-statement-struct-unknown.h gda-statement-struct-util.h) > tmp-gda-enum-types.c \
&& (cmp -s tmp-gda-enum-types.c gda-sql-parser-enum-types.c || cp tmp-gda-enum-types.c gda-sql-parser-enum-types.c ) \
&& rm -f tmp-gda-enum-types.c \
&& echo timestamp > s-enum-types-c
gcc -o gen_def -DSRCDIR=\".\" ./gen_def.c
gcc -o lemon ./lemon.c
( cd . && glib-mkenums \
                --fhead "#ifndef __LIBGDA_SQL_PARSER_ENUM_TYPES_H__\n#define __LIBGDA_SQL_PARSER_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
		--vhead "GType @enum_name@_get_type (void);\n#define GDA_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" 	\
		--ftail "G_END_DECLS\n\n#endif /* __LIBGDA_ENUM_TYPES_H__ */" \
	gda-sql-parser.h gda-sql-statement.h gda-statement-struct-decl.h gda-statement-struct.h gda-statement-struct-compound.h gda-statement-struct-delete.h gda-statement-struct-update.h gda-statement-struct-insert.h gda-statement-struct-parts.h gda-statement-struct-pspec.h gda-statement-struct-select.h gda-statement-struct-trans.h gda-statement-struct-unknown.h gda-statement-struct-util.h) > tmp-gda-enum-types.h \
&& (cmp -s tmp-gda-enum-types.h gda-sql-parser-enum-types.h || cp tmp-gda-enum-types.h gda-sql-parser-enum-types.h ) \
&& rm -f tmp-gda-enum-types.h	\
&& echo timestamp > s-enum-types-h
./lemon.c:652:6: error: conflicting types for ‘FindRulePrecedences’; have ‘void(struct lemon *)’
  652 | void FindRulePrecedences(struct lemon *xp)
      |      ^~~~~~~~~~~~~~~~~~~
./lemon.c:73:6: note: previous declaration of ‘FindRulePrecedences’ with type ‘void(void)’
   73 | void FindRulePrecedences();
      |      ^~~~~~~~~~~~~~~~~~~
./lemon.c:681:6: error: conflicting types for ‘FindFirstSets’; have ‘void(struct lemon *)’
  681 | void FindFirstSets(struct lemon *lemp)
      |      ^~~~~~~~~~~~~
./lemon.c:74:6: note: previous declaration of ‘FindFirstSets’ with type ‘void(void)’
   74 | void FindFirstSets();
      |      ^~~~~~~~~~~~~
./lemon.c:743:6: error: conflicting types for ‘FindStates’; have ‘void(struct lemon *)’
  743 | void FindStates(struct lemon *lemp)
      |      ^~~~~~~~~~
./lemon.c:75:6: note: previous declaration of ‘FindStates’ with type ‘void(void)’
   75 | void FindStates();
      |      ^~~~~~~~~~
./lemon.c:915:6: error: conflicting types for ‘FindLinks’; have ‘void(struct lemon *)’
  915 | void FindLinks(struct lemon *lemp)
      |      ^~~~~~~~~
./lemon.c:76:6: note: previous declaration of ‘FindLinks’ with type ‘void(void)’
   76 | void FindLinks();
      |      ^~~~~~~~~
./lemon.c:950:6: error: conflicting types for ‘FindFollowSets’; have ‘void(struct lemon *)’
  950 | void FindFollowSets(struct lemon *lemp)
      |      ^~~~~~~~~~~~~~
./lemon.c:77:6: note: previous declaration of ‘FindFollowSets’ with type ‘void(void)’
   77 | void FindFollowSets();
      |      ^~~~~~~~~~~~~~
./lemon.c:986:6: error: conflicting types for ‘FindActions’; have ‘void(struct lemon *)’
  986 | void FindActions(struct lemon *lemp)
      |      ^~~~~~~~~~~
./lemon.c:78:6: note: previous declaration of ‘FindActions’ with type ‘void(void)’
   78 | void FindActions();
      |      ^~~~~~~~~~~
make[3]: *** [Makefile:959: lemon] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/build/reproducible-path/libgda5-5.2.10/libgda/sql-parser'
make[2]: *** [Makefile:1276: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/libgda5-5.2.10/libgda'
make[1]: *** [Makefile:747: all-recursive] Error 1
make[1]: Leaving directory '/build/reproducible-path/libgda5-5.2.10'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:8: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2