Repository navigation
Detect dbm and gdbm dependencies in configure.ac #89910
Description
Activity
setup.py jumps through hoops to detect gdbm, gdbm_compat, ndbm, and bdb (libdb) build dependencies. I propose to simplify our support matrix and detect all dependencies in configure.ac.
gdbmmodule.c uses gdbm_open() API, which is provided by gdbm.h and libgdbm
dbmmodule.c uses the dbm_open() API, which can be provided by a combination of headers and shared libraries.
- gdbm/ndbm.h with libgdbm_compat
- gdbm-ndbm.h with libgdbm_compat
- ndbm.h with libgdbm_compat
- ndbm.h with libndbm
- db.h with libdb (lib-5.3 for over a decade)
setup.py makes some wrong assumption in regards of libgdbm. The shared library libgdbm does not provide the dbm_open() API on any system I tested. libgdbm_compat is always required. Linking with libgdbm is not needed. libgdbm_compat depends on and wraps libgdbm.
setup.py also performs additional steps to locate old versions of libdb-3.x and libdb-4.x. libdb-5.3 has been around for a decade. Even CentOS 7 and Debian oldoldstable ship with libdb version 5.3 and don't offer libdb version 4. I propose to remove support for libdb 4 and libdb 3.
- addedbuildThe build process and cross-buildThe build process and cross-buildtype-featureA feature request or enhancementA feature request or enhancement3.11only security fixesonly security fixes
on Nov 8, 2021 - addedbuildThe build process and cross-buildThe build process and cross-buildtype-featureA feature request or enhancementA feature request or enhancement
on Nov 8, 2021 Pablo's macOS ARM64 buildbot does not find libdb-5.3 although it has db.h: https://buildbot.python.org/all/#/builders/721/builds/97/steps/2/logs/stdio
macOS X86-64 buildbot has libdb-5.3: https://buildbot.python.org/all/#/builders/311/builds/332/steps/2/logs/stdio
dbm_open is in libc on macOS. likely due to being in SUSv2.
The implementation in libc appears to be suboptimal (for example: bpo-33074), although I wouldn't teach configure.ac to ignore the system version of the library.
Thanks Ronald. I was not aware that macOS has dbm_open in libc.
AC_CHECK_LIB() always tries to link with an external library. The macro should skip the symbol from libc. Could you please run the PR locally and upload your config.log?
AC_SEARCH_LIBS() will search libc before checking external libraries, FWIW.
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Contributed ... in bpo-bpo-45847typo #32299Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: