#1097408 mojoshader: ftbfs with GCC-15

#1097408#5
Date:
2025-02-17 17:38:09 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/mojoshader_0.0~hg1314+dfsg-1.1_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

[...]
/usr/bin/cc -DMOJOSHADER_EFFECT_SUPPORT -I"/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/." -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/mojoshader-0.0~hg1314+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -pedantic -Wdate-time -D_FORTIFY_SOURCE=2   -Wall -ggdb3 -MD -MT CMakeFiles/lemon.dir/misc/lemon.c.o -MF CMakeFiles/lemon.dir/misc/lemon.c.o.d -o CMakeFiles/lemon.dir/misc/lemon.c.o -c "/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c"
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:666:6: error: conflicting types for ‘FindRulePrecedences’; have ‘void(struct lemon *)’
  666 | void FindRulePrecedences(struct lemon *xp)
      |      ^~~~~~~~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:84:6: note: previous declaration of ‘FindRulePrecedences’ with type ‘void(void)’
   84 | void FindRulePrecedences();
      |      ^~~~~~~~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:695:6: error: conflicting types for ‘FindFirstSets’; have ‘void(struct lemon *)’
  695 | void FindFirstSets(struct lemon *lemp)
      |      ^~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:85:6: note: previous declaration of ‘FindFirstSets’ with type ‘void(void)’
   85 | void FindFirstSets();
      |      ^~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:757:6: error: conflicting types for ‘FindStates’; have ‘void(struct lemon *)’
  757 | void FindStates(struct lemon *lemp)
      |      ^~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:86:6: note: previous declaration of ‘FindStates’ with type ‘void(void)’
   86 | void FindStates();
      |      ^~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:929:6: error: conflicting types for ‘FindLinks’; have ‘void(struct lemon *)’
  929 | void FindLinks(struct lemon *lemp)
      |      ^~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:87:6: note: previous declaration of ‘FindLinks’ with type ‘void(void)’
   87 | void FindLinks();
      |      ^~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:964:6: error: conflicting types for ‘FindFollowSets’; have ‘void(struct lemon *)’
  964 | void FindFollowSets(struct lemon *lemp)
      |      ^~~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:88:6: note: previous declaration of ‘FindFollowSets’ with type ‘void(void)’
   88 | void FindFollowSets();
      |      ^~~~~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1000:6: error: conflicting types for ‘FindActions’; have ‘void(struct lemon *)’
 1000 | void FindActions(struct lemon *lemp)
      |      ^~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:89:6: note: previous declaration of ‘FindActions’ with type ‘void(void)’
   89 | void FindActions();
      |      ^~~~~~~~~~~
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c: In function ‘main’:
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1425:21: warning: ISO C forbids conversion of function pointer to object pointer type [-Wpedantic]
 1425 |     {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."},
      |                     ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1426:21: warning: ISO C forbids conversion of function pointer to object pointer type [-Wpedantic]
 1426 |     {OPT_FSTR, "T", (char*)handle_T_option, "Specify a template file."},
      |                     ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c: In function ‘handleflags’:
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1760:7: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 1760 |     (*(void(*)(int))(op[j].arg))(v);
      |       ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1762:7: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 1762 |     (*(void(*)(char *))(op[j].arg))(&argv[i][2]);
      |       ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c: In function ‘handleswitch’:
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1843:11: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 1843 |         (*(void(*)(double))(op[j].arg))(dv);
      |           ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1849:11: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 1849 |         (*(void(*)(int))(op[j].arg))((int)lv);
      |           ^
/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/misc/lemon.c:1855:11: warning: ISO C forbids conversion of object pointer to function pointer type [-Wpedantic]
 1855 |         (*(void(*)(char *))(op[j].arg))(sv);
      |           ^
make[3]: *** [CMakeFiles/lemon.dir/build.make:82: CMakeFiles/lemon.dir/misc/lemon.c.o] Error 1
make[3]: Leaving directory '/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/obj-x86_64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:112: CMakeFiles/lemon.dir/all] Error 2
make[2]: Leaving directory '/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/obj-x86_64-linux-gnu'
make[1]: *** [Makefile:139: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/mojoshader-0.0~hg1314+dfsg/obj-x86_64-linux-gnu'
dh_auto_build: error: cd obj-x86_64-linux-gnu && make -j8 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:12: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2