#1097917 sphinxbase: ftbfs with GCC-15

#1097917#5
Date:
2025-02-17 17:54:34 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/sphinxbase_0.8+5prealpha+1-21_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[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_matrix'
Making all in test_fe
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_fe'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_fe'
Making all in test_feat
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_feat'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_feat'
Making all in test_lineiter
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_lineiter'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_lineiter'
Making all in test_logmath
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_logmath'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_logmath'
Making all in test_ngram
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_ngram'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_ngram'
Making all in test_fsg
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_fsg'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_fsg'
Making all in test_util
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_util'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_util'
Making all in test_thread
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_thread'
make[5]: Nothing to be done for 'all'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit/test_thread'
make[5]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit'
make[5]: Nothing to be done for 'all-am'.
make[5]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit'
make[4]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/unit'
Making all in regression
make[4]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/regression'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test/regression'
make[4]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test'
make[4]: Nothing to be done for 'all-am'.
make[4]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test'
make[3]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/test'
Making all in swig
make[3]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/swig'
Making all in python
make[4]: Entering directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/swig/python'
/usr/bin/swig -I../../../include -DHAS_DOC -I../../doc -outdir . -o sphinxbase_wrap.c -python ../../../swig/sphinxbase.i
/bin/bash ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../../swig/python -I../../include  -I/usr/include/python3.12 -I../../../include -D_DATADIR=\"/usr/share/sphinxbase\" -Wno-unused-value -Wdate-time -D_FORTIFY_SOURCE=2  -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/sphinxbase-0.8+5prealpha+1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o _sphinxbase_la-sphinxbase_wrap.lo `test -f 'sphinxbase_wrap.c' || echo '../../../swig/python/'`sphinxbase_wrap.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../../swig/python -I../../include -I/usr/include/python3.12 -I../../../include -D_DATADIR=\"/usr/share/sphinxbase\" -Wno-unused-value -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/sphinxbase-0.8+5prealpha+1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c sphinxbase_wrap.c  -fPIC -DPIC -o .libs/_sphinxbase_la-sphinxbase_wrap.o
sphinxbase_wrap.c:14:13: error: 'bool' cannot be defined via 'typedef'
   14 | typedef int bool;
      |             ^~~~
sphinxbase_wrap.c:14:13: note: 'bool' is a keyword with '-std=c23' onwards
sphinxbase_wrap.c:14:1: warning: useless type name in empty declaration
   14 | typedef int bool;
      | ^~~~~~~
make[4]: *** [Makefile:494: _sphinxbase_la-sphinxbase_wrap.lo] Error 1
make[4]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/swig/python'
make[3]: *** [Makefile:440: all-recursive] Error 1
make[3]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12/swig'
make[2]: *** [Makefile:486: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1/build-python3.12'
dh_auto_build: error: cd build-python3.12 && make -j8 returned exit code 2
make[1]: *** [debian/rules:29: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/sphinxbase-0.8+5prealpha+1'
make: *** [debian/rules:14: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1097917#16
Date:
2025-11-14 13:41:33 UTC
From:
To:
Like the error message already says, the source can not be compiled,
because it defines the type 'bool' and 'bool' is a keyword with
'-std=c23' onwards. To fix this we can either remove the typedef or
check if __STDC_VERSION__ < 202311L, see patch below. I tested this
patch on Ubuntu resolute.
--- a/swig/sphinxbase.i +++ b/swig/sphinxbase.i @@ -74,10 +74,12 @@ %begin %{ #ifndef __cplusplus +#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 202311L) typedef int bool; #define true 1 #define false 0 #endif +#endif #include <sphinxbase/cmd_ln.h> #include <sphinxbase/err.h>
#1097917#21
Date:
2025-11-15 17:50:32 UTC
From:
To:
Hello,

Dominik Viererbe, le ven. 14 nov. 2025 15:41:33 +0200, a ecrit:

The problem is that the current version in Debian is old and
unmaintained. Migrating to version 5 is already pushed to the
pocketsphinx debian repo, but it also requires fixing the build-deps.
Some have fixed it, some others are not really keen on fixing them, e.g.

https://invent.kde.org/multimedia/subtitlecomposer/-/issues/83

There is also ffmpeg https://trac.ffmpeg.org/ticket/10520#ticket

To move forward we'd probably want to just disable the build-deps in
these packages for now, until upstream fixes the support.

The thing is: I don't have bandwidth to work on these. I'm quite next to
just orphan these package, which I actually don't even know how to test
properly.

Help really welcome on all this from people who actually care about
sphinx.

Samuel

#1097917#26
Date:
2025-11-18 19:26:48 UTC
From:
To:
When anything using a typedef'ed bool was part of an ABI (rare,
but cases exist), then using C23 bool instead would break ABI.

Otherwise stdbool.h works with all standards >= C99.

Upstream used the latter to fix it:
https://github.com/cmusphinx/sphinxbase/commit/7397d13fcc56b0a304611a4d2c598eaf1177df2d

cu
Adrian

#1097917#31
Date:
2026-02-17 18:30:42 UTC
From:
To:
Hi Samuel,

could you just upload this tiny fix for now?

There are 90 packages on the autoremoval list due to this issue,
and no convincing reason against uploading the trivial fix.

Thanks
Adrian

#1097917#36
Date:
2026-02-17 22:22:28 UTC
From:
To:
Hello,

Adrian Bunk, le mar. 17 févr. 2026 20:30:42 +0200, a ecrit:

No :) I'm about to ask for removal of the package, simply :)

I hadn't realized that gnustep-gui was using pocketsphinx, I was only
concerned with ffmpeg, subtitlecomposer and parlatype, so I missed
asking for the rebuild transition. It happens that it already got
scheduled (thanks to $WHO scheduled it!) and the rebuilds already
happened, except on loong64, for which I have just now uploaded a fix.

Samuel