This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: ImportError for gdbm 1.14
Type: Stage: resolved
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: third party
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, sam-s, yan12125
Priority: normal Keywords:

Created on 2018-01-02 19:39 by sam-s, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (3)
msg309392 - (view) Author: sds (sam-s) Date: 2018-01-02 19:39
After upgrading to gdbm stable 1.14, I get this:
```
>>> import gdbm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/.../lib/python2.7/lib-dynload/gdbm.so, 2): Symbol not found: _gdbm_errno
  Referenced from: /.../lib/python2.7/lib-dynload/gdbm.so
  Expected in: /usr/local/opt/gdbm/lib/libgdbm.4.dylib
 in /.../lib/python2.7/lib-dynload/gdbm.so
```
This is probably related to this change:
```
* Make gdbm_error global thread safe.
```
(https://lists.gnu.org/archive/html/info-gnu/2018-01/msg00000.html)
msg309398 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2018-01-03 07:13
It seems like Python will need to be recompiled then.
msg309400 - (view) Author: (yan12125) * Date: 2018-01-03 07:36
I can confirm a rebuild fixes _gdbm for Python 3.6.4.

This is also a bug in gdbm - it should bump soname (gdbm.so.4 => gdbm.so.5) for such an ABI incompatibility. I've sent a report to gdbm developers.
History
Date User Action Args
2022-04-11 14:58:56adminsetgithub: 76665
2018-01-03 16:41:18benjamin.petersonsetstatus: open -> closed
resolution: third party
stage: resolved
2018-01-03 07:36:31yan12125setmessages: + msg309400
2018-01-03 07:13:52benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg309398
2018-01-03 03:26:12yan12125setnosy: + yan12125
2018-01-02 19:39:18sam-screate