Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
Hi, Am 13.04.26 um 19:39 schrieb Rene Engelhard: checking how to run the C++ preprocessor... g++ -std=gnu++11 -E checking for ld used by g++ -std=gnu++11... /usr/bin/x86_64-linux-gnu-ld -m elf_x86_64 checking if the linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) is GNU ld... yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking for g++ -std=gnu++11 option to produce PIC... -fPIC -DPIC checking if g++ -std=gnu++11 PIC flag -fPIC -DPIC works... yes checking if g++ -std=gnu++11 static flag -static works... yes checking if g++ -std=gnu++11 supports -c -o file.o... yes checking if g++ -std=gnu++11 supports -c -o file.o... (cached) yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether g++ -std=gnu++11 supports C++11 features by default... yes Looks like it. That of course breaks. Now the question is why autoconf unhelpfully adds that with gcc 16... CC'ing the autoconf maintainer. I see 2.72-6 removing debian/patches/fix-cxx-stdcxx-test.diff but according to the debdiff it was not applied before anyway... Aha. https://savannah.gnu.org/support/index.php?110879 (thanks to #libreoffice-dev) Now filed https://bugs.debian.org/1133694 Regards, Rene
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
checking how to run the C++ preprocessor... g++ -std=gnu++11 -E checking for ld used by g++ -std=gnu++11... /usr/bin/x86_64-linux-gnu-ld -m elf_x86_64 checking if the linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) is GNU ld... yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking for g++ -std=gnu++11 option to produce PIC... -fPIC -DPIC checking if g++ -std=gnu++11 PIC flag -fPIC -DPIC works... yes checking if g++ -std=gnu++11 static flag -static works... yes checking if g++ -std=gnu++11 supports -c -o file.o... yes checking if g++ -std=gnu++11 supports -c -o file.o... (cached) yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether g++ -std=gnu++11 supports C++11 features by default... yes Looks like it. That of course breaks. Now the question is why autoconf unhelpfully adds that with gcc 16... CC'ing the autoconf maintainer. I see 2.72-6 removing debian/patches/fix-cxx-stdcxx-test.diff but according to the debdiff it was not applied before anyway... Aha. https://savannah.gnu.org/support/index.php?110879 (thanks to #libreoffice-dev) Regards, Rene
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
Hi, Am 13.04.26 um 19:06 schrieb Rene Engelhard: Hi, Am 13.04.26 um 18:53 schrieb Rene Engelhard: Maybe. Or this is another case of what plagued libreoffice and was worked around with https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice/-/blob/master/patches/gcc16.diff?ref_type=heads#L59 ff. and See also upstreams https://gerrit.libreoffice.org/c/core/+/202511/comments/b6a92d32_0c72b450 and following comments... And indeed the same happens: checking how to run the C++ preprocessor... g++ -std=gnu++11 -E checking for ld used by g++ -std=gnu++11... /usr/bin/x86_64-linux-gnu-ld -m elf_x86_64 checking if the linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) is GNU ld... yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking for g++ -std=gnu++11 option to produce PIC... -fPIC -DPIC checking if g++ -std=gnu++11 PIC flag -fPIC -DPIC works... yes checking if g++ -std=gnu++11 static flag -static works... yes checking if g++ -std=gnu++11 supports -c -o file.o... yes checking if g++ -std=gnu++11 supports -c -o file.o... (cached) yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether g++ -std=gnu++11 supports C++11 features by default... yes Looks like it. That of course breaks. Now the question is why autoconf unhelpfully adds that with gcc 16... CC'ing the autoconf maintainer. I see 2.72-6 removing debian/patches/fix-cxx-stdcxx-test.diff but according to the debdiff it was not applied before anyway... That might also be the explanation for a loads of other gcc 16 FTBFS # work around autoconf unhelpfully adding -std=gnu++11 which breaks with gcc 16 SYSTEM_GCC_VERSION = $(shell gcc --version | sed -n '/^gcc/s/.*\(..\..\)\../\1/p' | cut -d" " -f1 | cut -d. -f1) ifeq "$(shell test $(SYSTEM_GCC_VERSION) -ge 16 && echo true)" "true" export DEB_CXXFLAGS_MAINT_APPEND += -std=gnu++17 endif in debian/rules in libe-book works but that of course is extremely ugly... Regards, Rene
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
Hi, Am 13.04.26 um 18:53 schrieb Rene Engelhard: Maybe. Or this is another case of what plagued libreoffice and was worked around with https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice/-/blob/master/patches/gcc16.diff?ref_type=heads#L59 ff. and See also upstreams https://gerrit.libreoffice.org/c/core/+/202511/comments/b6a92d32_0c72b450 and following comments... And indeed the same happens: checking how to run the C++ preprocessor... g++ -std=gnu++11 -E checking for ld used by g++ -std=gnu++11... /usr/bin/x86_64-linux-gnu-ld -m elf_x86_64 checking if the linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) is GNU ld... yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking for g++ -std=gnu++11 option to produce PIC... -fPIC -DPIC checking if g++ -std=gnu++11 PIC flag -fPIC -DPIC works... yes checking if g++ -std=gnu++11 static flag -static works... yes checking if g++ -std=gnu++11 supports -c -o file.o... yes checking if g++ -std=gnu++11 supports -c -o file.o... (cached) yes checking whether the g++ -std=gnu++11 linker (/usr/bin/x86_64-linux-gnu-ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether g++ -std=gnu++11 supports C++11 features by default... yes Looks like it. That of course breaks. Now the question is why autoconf unhelpfully adds that with gcc 16... CC'ing the autoconf maintainer. I see 2.72-6 removing debian/patches/fix-cxx-stdcxx-test.diff but according to the debdiff it was not applied before anyway... That might also be the explanation for a loads of other gcc 16 FTBFS Regards, Rene
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
Hi, Am 13.04.26 um 18:44 schrieb László Böszörményi (GCS): On Mon, Apr 13, 2026 at 6:16 PM Rene Engelhard wrote: Am 13.04.26 um 15:05 schrieb Emanuele Rocca: /usr/include/unicode/localpointer.h:559:26: error: parameter declared 'auto' 559 | template | ^~~~ /usr/include/unicode/localpointer.h:571:76: error: template argument 2 is invalid [-Wtemplate-body] 571 | explicit LocalOpenPointer(std::unique_ptr &&p) | ^ [...] Same case with libsmpub (1133524). Do you have a test environment for this? See the possible solution below. Yes, I have a experimental systemd-nspawn machine with experimentals gcc default installed. Ccing Lazslo., any idea? s/Lazslo/Laszlo/ oops, sorry and indeed, I have. libe-book seems to compile with std=c++11 while the new ICU bits needs to be compiled with std=c++17 but that is only enforcd with gcc 16? Subce both libe-book and libsmpub build fine as-is in unstable: https://buildd.debian.org/status/package.php?p=libe-book https://buildd.debian.org/status/package.php?p=libmspub so maybe configure needs to be recreated. The build does it every time. There's configure.ac in the source which needs to be modernized, there are several obsolete messages for that in the build log [1]. For example: Yes, as all those libs they are old... We already had that fun with libzmf... (which has an other C++ standard failure mode...) autoreconf: running: /usr/bin/autoconf --force configure.ac:19: warning: The macro 'AC_CONFIG_HEADER' is obsolete. configure.ac:19: You should run autoupdate. ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from... configure.ac:19: the top level configure.ac:184: warning: The macro 'AC_TRY_COMPILE' is obsolete. configure.ac:184: You should run autoupdate. ... etc. Maybe. Or this is another case of what plagued libreoffice and was worked around with https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice/-/blob/master/patches/gcc16.diff?ref_type=heads#L59 ff. and https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice/-/blob/debian-experimental-26.2/patches/gcc16-dragonbox-snapshot-check.diff aka something in autoconf insisting to add --std=gnu++11 where nowwhere specified outside .. Regards, Rene
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
On Mon, Apr 13, 2026 at 6:16 PM Rene Engelhard wrote: > Am 13.04.26 um 15:05 schrieb Emanuele Rocca: > > /usr/include/unicode/localpointer.h:559:26: error: parameter declared 'auto' > >559 | template > >| ^~~~ > > /usr/include/unicode/localpointer.h:571:76: error: template argument 2 is > > invalid [-Wtemplate-body] > >571 | explicit LocalOpenPointer(std::unique_ptr > decltype(closeFunction)> &&p) > >| > > ^ [...] > Same case with libsmpub (1133524). Do you have a test environment for this? See the possible solution below. > Ccing Lazslo., any idea? s/Lazslo/Laszlo/ and indeed, I have. libe-book seems to compile with std=c++11 while the new ICU bits needs to be compiled with std=c++17 so maybe configure needs to be recreated. There's configure.ac in the source which needs to be modernized, there are several obsolete messages for that in the build log [1]. For example: autoreconf: running: /usr/bin/autoconf --force configure.ac:19: warning: The macro 'AC_CONFIG_HEADER' is obsolete. configure.ac:19: You should run autoupdate. ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from... configure.ac:19: the top level configure.ac:184: warning: The macro 'AC_TRY_COMPILE' is obsolete. configure.ac:184: You should run autoupdate. ... etc. Hope this helps, Laszlo/GCS [1] https://buildd.debian.org/status/fetch.php?pkg=libe-book&arch=amd64&ver=0.1.3-4&stamp=1773502194&raw=0
Bug#1133524: Bug#1133513: libe-book: ftbfs with GCC-16
Hi Emanuele,
Am 13.04.26 um 15:05 schrieb Emanuele Rocca:
Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.
You probably should look for common stuff here. Here it is:
[...]
/usr/include/unicode/localpointer.h:559:26: error: parameter declared 'auto'
559 | template
| ^~~~
/usr/include/unicode/localpointer.h:571:76: error: template argument 2 is
invalid [-Wtemplate-body]
571 | explicit LocalOpenPointer(std::unique_ptr
&&p)
|
^
/usr/include/unicode/localpointer.h:581:78: error: template argument 2 is
invalid [-Wtemplate-body]
581 | LocalOpenPointer &operator=(std::unique_ptr
&&p) {
|
^
/usr/include/unicode/localpointer.h:597:59: error: template argument 2 is
invalid [-Wtemplate-body]
597 | operator std::unique_ptr () && {
| ^
/usr/include/unicode/uenum.h:69:1: note: invalid template non-type parameter
69 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration,
uenum_close);
| ^~~
/usr/include/unicode/ucnv.h:597:1: note: invalid template non-type parameter
597 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter,
ucnv_close);
| ^~~
make[5]: *** [Makefile:1258: libe_book_internal_la-PluckerParser.lo] Error 1
make[5]: *** [Makefile:1237: libe_book_internal_la-PalmDocParser.lo] Error 1
make[5]: *** [Makefile:985: libe_book_internal_la-BBeBParser.lo] Error 1
ICU header.
In file included from /usr/include/unicode/uenum.h:25,
from /usr/include/unicode/ucnv.h:52,
from EBOOKCharsetConverter.h:16,
from TealDocParser.cpp:24:
/usr/include/unicode/localpointer.h:559:26: error: parameter declared 'auto'
559 | template
| ^~~~
/usr/include/unicode/localpointer.h:571:76: error: template argument 2 is
invalid [-Wtemplate-body]
571 | explicit LocalOpenPointer(std::unique_ptr
&&p)
|
^
/usr/include/unicode/localpointer.h:581:78: error: template argument 2 is
invalid [-Wtemplate-body]
581 | LocalOpenPointer &operator=(std::unique_ptr
&&p) {
|
^
/usr/include/unicode/localpointer.h:597:59: error: template argument 2 is
invalid [-Wtemplate-body]
597 | operator std::unique_ptr () && {
| ^
/usr/include/unicode/uenum.h:69:1: note: invalid template non-type parameter
69 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUEnumerationPointer, UEnumeration,
uenum_close);
| ^~~
/usr/include/unicode/ucnv.h:597:1: note: invalid template non-type parameter
597 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter,
ucnv_close);
| ^~~
Here also the complains comes from ICU
Same case with libsmpub (1133524).
Ccing Lazslo., any idea?
Regards,
Rene

