#1096505 db5.3: ftbfs with GCC-15

Package:
src:db5.3
Source:
src:db5.3
Submitter:
Matthias Klose
Date:
2025-10-03 08:13:01 UTC
Severity:
normal
Tags:
#1096505#5
Date:
2025-02-17 17:09:23 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/db5.3_5.3.28+dfsg2-9_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

[...]
../src/env/env_config.c:109:49: note: (near initialization for 'config_descs[34].func')
../src/dbinc_auto/mp_ext.h:65:5: note: '__memp_set_mp_mtxcount' declared here
   65 | int __memp_set_mp_mtxcount __P((DB_ENV *, u_int32_t));
      |     ^~~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:110:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, u_int32_t)' {aka 'int (*)(struct __db_env *, unsigned int)'} [-Wincompatible-pointer-types]
  110 |     { "set_mp_pagesize",        CFG_UINT,       __memp_set_mp_pagesize  },
      |                                                 ^~~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:110:49: note: (near initialization for 'config_descs[35].func')
../src/dbinc_auto/mp_ext.h:61:5: note: '__memp_set_mp_pagesize' declared here
   61 | int __memp_set_mp_pagesize __P((DB_ENV *, u_int32_t));
      |     ^~~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:111:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, long int)' {aka 'int (*)(struct __db_env *, long int)'} [-Wincompatible-pointer-types]
  111 |     { "set_shm_key",            CFG_LONG,       __env_set_shm_key       },
      |                                                 ^~~~~~~~~~~~~~~~~
../src/env/env_config.c:111:49: note: (near initialization for 'config_descs[36].func')
../src/dbinc_auto/env_ext.h:66:6: note: '__env_set_shm_key' declared here
   66 | int  __env_set_shm_key __P((DB_ENV *, long));
      |      ^~~~~~~~~~~~~~~~~
../src/env/env_config.c:112:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, u_int32_t)' {aka 'int (*)(struct __db_env *, unsigned int)'} [-Wincompatible-pointer-types]
  112 |     { "set_tas_spins",          CFG_UINT,       __mutex_set_tas_spins   },
      |                                                 ^~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:112:49: note: (near initialization for 'config_descs[37].func')
../src/dbinc_auto/mutex_ext.h:33:5: note: '__mutex_set_tas_spins' declared here
   33 | int __mutex_set_tas_spins __P((DB_ENV *, u_int32_t));
      |     ^~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:113:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, u_int32_t)' {aka 'int (*)(struct __db_env *, unsigned int)'} [-Wincompatible-pointer-types]
  113 |     { "set_thread_count",       CFG_UINT,       __env_set_thread_count },
      |                                                 ^~~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:113:49: note: (near initialization for 'config_descs[38].func')
../src/dbinc_auto/env_ext.h:60:6: note: '__env_set_thread_count' declared here
   60 | int  __env_set_thread_count __P((DB_ENV *, u_int32_t));
      |      ^~~~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c:114:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, const char *)' {aka 'int (*)(struct __db_env *, const char *)'} [-Wincompatible-pointer-types]
  114 |     { "set_tmp_dir",            CFG_STRING,     __env_set_tmp_dir       },
      |                                                 ^~~~~~~~~~~~~~~~~
../src/env/env_config.c:114:49: note: (near initialization for 'config_descs[39].func')
../src/dbinc_auto/env_ext.h:67:6: note: '__env_set_tmp_dir' declared here
   67 | int  __env_set_tmp_dir __P((DB_ENV *, const char *));
      |      ^~~~~~~~~~~~~~~~~
../src/env/env_config.c:115:49: error: initialization of 'int (*)(void)' from incompatible pointer type 'int (*)(DB_ENV *, u_int32_t)' {aka 'int (*)(struct __db_env *, unsigned int)'} [-Wincompatible-pointer-types]
  115 |     { "set_tx_max",             CFG_UINT,       __txn_set_tx_max        }
      |                                                 ^~~~~~~~~~~~~~~~
../src/env/env_config.c:115:49: note: (near initialization for 'config_descs[40].func')
In file included from ../src/dbinc/txn.h:287,
                 from ../src/env/env_config.c:15:
../src/dbinc_auto/txn_ext.h:47:5: note: '__txn_set_tx_max' declared here
   47 | int __txn_set_tx_max __P((DB_ENV *, u_int32_t));
      |     ^~~~~~~~~~~~~~~~
../src/env/env_config.c: In function '__env_read_db_config':
../src/env/env_config.c:267:1: warning: old-style function definition [-Wold-style-definition]
  267 | __env_read_db_config(env)
      | ^~~~~~~~~~~~~~~~~~~~
../src/env/env_config.c: In function '__config_parse':
../src/env/env_config.c:344:1: warning: old-style function definition [-Wold-style-definition]
  344 | __config_parse(env, s, lc)
      | ^~~~~~~~~~~~~~
../src/env/env_config.c: In function 'cmp_cfg_name':
../src/env/env_config.c:677:1: warning: old-style function definition [-Wold-style-definition]
  677 | cmp_cfg_name(sought, element)
      | ^~~~~~~~~~~~
../src/env/env_config.c: In function '__config_scan':
../src/env/env_config.c:697:1: warning: old-style function definition [-Wold-style-definition]
  697 | __config_scan(input, argv, descptr)
      | ^~~~~~~~~~~~~
make[2]: *** [Makefile:2013: env_config.lo] Error 1
make[2]: Leaving directory '/build/reproducible-path/db5.3-5.3.28+dfsg2/build-test'
make[1]: *** [debian/rules:107: override_dh_auto_test] Error 2
make[1]: Leaving directory '/build/reproducible-path/db5.3-5.3.28+dfsg2'
make: *** [debian/rules:69: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1096505#14
Date:
2025-09-11 14:50:11 UTC
From:
To:
I just posted a Salsa MR that fixes this at

https://salsa.debian.org/debian/db5.3/-/merge_requests/3

#1096505#19
Date:
2025-09-16 14:21:09 UTC
From:
To:
JFTR, Arch and Fedora decided to got with -std=gnu99 instead, cf.
<https://gitlab.archlinux.org/archlinux/packaging/packages/db5.3/-/commit/983e8d406ab920477d506836adbe21d4ed6ddb75>
and
<https://src.fedoraproject.org/rpms/libdb/c/c250c61cc3d56c5cff7ba59308f46245a32bdc69?branch=rawhide>.

Cheers,
Flo

#1096505#24
Date:
2025-10-01 15:25:21 UTC
From:
To:
Or ... we can finally remove this unmaintained crap from Debian?

Oracle decided to kill Berkeley DB with the hostile licensing change, so perhaps
it is now time to stop using it?

There's only few reverse B-D remaining now:

# Broken Build-Depends:
animals: libdb5.3++-dev
bdbvu: libdb5.3++-dev
exim4: libdb5.3-dev
freespeech: libdb5.3t64
litecoin: libdb5.3++-dev
python-bsddb3: libdb5.3-dev
rulex: libdb5.3t64
subversion: libdb5.3-dev

And I expect that most of the Broken Depends that dak reports are actually bogus...

Ondrej
--
Ondřej Surý (He/Him)
ondrej@sury.org

#1096505#29
Date:
2025-10-01 18:28:08 UTC
From:
To:
What program are you **exactly** speaking about?

Ondrej
--
Ondřej Surý (He/Him)

#1096505#34
Date:
2025-10-01 18:24:17 UTC
From:
To:
Am 01.10.2025 um 17:25:21 Uhr schrieb Ondřej Surý:

What happens to the aliases/access DBs?

Can that be used with another DB without PITA?

#1096505#39
Date:
2025-10-01 18:44:55 UTC
From:
To:
Am 01.10.2025 um 20:28:08 Uhr schrieb Ondřej Surý:

IIRC when using newaliases (sendmail) it builds a BDB out of the text
files.

Is that affected by a removal of db5 in Debian?

#1096505#44
Date:
2025-10-01 19:17:42 UTC
From:
To:
sendmail is not a default MTA in Debian since forever and it has been orphaned since 2014. This is a question that needs to be asked the sendmail maintainers.

Ondrej
--
Ondřej Surý (He/Him)

#1096505#49
Date:
2025-10-02 04:34:15 UTC
From:
To:
I've now tested it with apt. sendmail doesn't depend on the db5
packages, but cyrus-imap and sasl2 do - at least in trixie.

Is removal of db5.3 a real thing for the next release?
Should I file a bug for the cyrus packages?

#1096505#54
Date:
2025-10-03 08:10:44 UTC
From:
To:
* Marco Moock <mm@dorfdsl.de> [251002 06:35]:

While it's unclear if db5.3 can be removed from forky, all packages
must come up with at least a transition plan. Please file these
bugs.

The time on db5.3 has been ticking since the license change by
Oracle, quite some time ago.

Chris