#1133589 octave-strings: ftbfs with GCC-16

#1133589#5
Date:
2026-04-13 13:08:57 UTC
From:
To:
Hi,

octave-strings fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/octave-strings_arm64.build.xz

The last lines of the build log are at the end of this report.

To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

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.

[...]


   dh_clean -O--buildsystem=octave
 debian/rules binary
dh binary --buildsystem=octave
   dh_update_autotools_config -O--buildsystem=octave
   dh_autoreconf -O--buildsystem=octave
   dh_octave_version -O--buildsystem=octave
Checking the Octave version... ok
   dh_auto_configure -O--buildsystem=octave
   dh_auto_build -O--buildsystem=octave
   dh_auto_test -O--buildsystem=octave
   create-stamp debian/debhelper-build-stamp
   dh_testroot -O--buildsystem=octave
   dh_prep -O--buildsystem=octave
   dh_auto_install --destdir=debian/octave-strings/ -O--buildsystem=octave
	octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m /build/reproducible-path/octave-strings-1.3.1/debian/octave-strings/usr/share/octave/packages /build/reproducible-path/octave-strings-1.3.1/debian/octave-strings/usr/lib/aarch64-linux-gnu/octave/packages
mkdir (/tmp/oct-7BGcaT)
untar (/tmp//octave-strings-1.3.1.tar.gz, /tmp/oct-7BGcaT)
checking for mkoctfile... /usr/bin/mkoctfile --verbose
checking for octave-config... /usr/bin/octave-config
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... -std=gnu++11
checking how to run the C++ preprocessor... g++ -std=gnu++11 -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PCRE2... yes
checking   gripe_wrong_type_arg or err_wrong_type_arg...   gripe_wrong_type_arg
checking   unwind_protect or octave::unwind_protect...   unwind_protect
checking for octave::unwind_action... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
make[1]: Entering directory '/tmp/oct-7BGcaT/octave-strings-1.3.1/src'
/usr/bin/mkoctfile --verbose -o pcregexp.oct pcregexp.cc -DUSE_PCRE2 -lpcre2-8
g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-11.1.0/octave/.. -I/usr/include/octave-11.1.0/octave  -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/octave-strings-1.3.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard    -DUSE_PCRE2 pcregexp.cc -o /tmp/oct-BNTmh3.o
Extracting tests from pcregexp.cc ...
In file included from pcregexp.cc:36:
pcregexp.cc: In function ‘octave_value_list Fpcregexp(const octave_value_list&, int)’:
config.h:43:32: error: ‘unwind_protect’ was not declared in this scope; did you mean ‘octave::unwind_protect’?
   43 | #define OCTAVE__UNWIND_PROTECT unwind_protect
      |                                ^~~~~~~~~~~~~~
pcregexp.cc:88:5: note: in expansion of macro ‘OCTAVE__UNWIND_PROTECT’
   88 |     OCTAVE__UNWIND_PROTECT cleanup;
      |     ^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/octave-11.1.0/octave/../octave/error.h:35,
                 from /usr/include/octave-11.1.0/octave/../octave/oct.h:37,
                 from pcregexp.cc:24:
/usr/include/octave-11.1.0/octave/../octave/unwind-prot.h:40:18: note: ‘octave::unwind_protect’ declared here
   40 | class OCTAVE_API unwind_protect : public action_container
      |                  ^~~~~~~~~~~~~~
pcregexp.cc:89:5: error: ‘cleanup’ was not declared in this scope
   89 |     cleanup.add_fcn (pcre2_match_data_free, match_data);
      |     ^~~~~~~
make[1]: *** [Makefile:36: pcregexp.oct] Error 1
make[1]: Leaving directory '/tmp/oct-7BGcaT/octave-strings-1.3.1/src'

error: pkg: error running 'make' for the strings package
error: called from
    configure_make at line 121 column 9
    install at line 202 column 7
    pkg at line 692 column 9
    /usr/share/dh-octave/install-pkg.m at line 45 column 1
dh_auto_install: error: octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m /build/reproducible-path/octave-strings-1.3.1/debian/octave-strings/usr/share/octave/packages /build/reproducible-path/octave-strings-1.3.1/debian/octave-strings/usr/lib/aarch64-linux-gnu/octave/packages returned exit code 1
make: *** [debian/rules:5: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2