The attempt to get at Berkeley DB, installed from packages, via tkinter fails 
with some undefined symbol messages.

Is there something I have not done which would make this work?

I tried this because the bsddb3 (Python) package is not supported at Python 10, 
and it's replacement, berkeleydb, does not support the Berkeley DB versions 
provided as OpenBSD packages.

Script started on Sat Dec 17 11:42:08 2022
d630amd64$ python3.9
Python 3.9.15 (main, Oct 21 2022, 14:01:40) 
[Clang 13.0.0 ] on openbsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.TclVersion
8.6
>>> exit()
d630amd64$ tclsh8.6
% package require Db_tcl
can't find package Db_tcl
% lappend auto_path /usr/local/lib/db4
/usr/local/lib/tcl/tcl8.6 /usr/local/lib/tcl /usr/local/lib/db4
% package require Db_tcl
4.6
% exit
d630amd64$ python3.9
Python 3.9.15 (main, Oct 21 2022, 14:01:40) 
[Clang 13.0.0 ] on openbsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tcl =tkinter.Tk(useTk=False)
>>> tcl.tk.call("package", "require", "Db_tcl")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_tkinter.TclError: can't find package Db_tcl
>>> tcl.tk.call("lappend", "auto_path", "/usr/local/lib/db4")
(<path object: '/usr/local/lib/tcl/tcl8.6'>, <path object: 
'/usr/local/lib/tcl'>, '/usr/local/lib/db4')
>>> tcl.tk.call("package", "require", "Db_tcl")
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_DeleteCommand'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ResetResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_WrongNumArgs'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetIndexFromObjStruct'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetStringFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_SetResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewStringObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewListObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewIntObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_SetObjResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewWideIntObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ListObjGetElements'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_CreateObjCommand'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ListObjAppendElement'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewByteArrayObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_EvalObjv'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'TclFreeObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetObjResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetByteArrayFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_PkgProvideEx'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_LinkVar'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetWideIntFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetIntFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetLongFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewLongObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_SetErrno'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_PosixError'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AppendResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_SetErrorCode'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AddErrorInfo'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AppendToObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_DeleteCommand'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ResetResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_WrongNumArgs'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetIndexFromObjStruct'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetStringFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_SetResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewStringObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewListObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewIntObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_SetObjResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewWideIntObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ListObjGetElements'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_CreateObjCommand'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_ListObjAppendElement'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_NewByteArrayObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_EvalObjv'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'TclFreeObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetObjResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetByteArrayFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_PkgProvideEx'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_LinkVar'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetWideIntFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetIntFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_GetLongFromObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_NewLongObj'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_SetErrno'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 'Tcl_PosixError'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AppendResult'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_SetErrorCode'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AddErrorInfo'
python3.9:/usr/local/lib/db4/libdb_tcl.so.6.0: undefined symbol 
'Tcl_AppendToObj'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_tkinter.TclError: couldn't load file "/usr/local/lib/db4/libdb_tcl.so.6.0": 
Cannot load specified object
>>> exit()
d630amd64$ tclsh8.6
% package require sqlite3
3.39.2
% exit
d630amd64$ python3.9
Python 3.9.15 (main, Oct 21 2022, 14:01:40) 
[Clang 13.0.0 ] on openbsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tcl = tkinter.Tk(useTk=False)
>>> tcl.tk.call("package", "require", "sqlite3")
'3.39.2'
>>> exit()
d630amd64$ ls /usr/local/lib/db4
libdb.a             libdb_cxx.a         libdb_tcl.a         pkgIndex.tcl
libdb.la            libdb_cxx.la        libdb_tcl.la
libdb.so.5.0        libdb_cxx.so.6.0    libdb_tcl.so.6.0
d630amd64$ uname -a
OpenBSD d630amd64.home 7.2 GENERIC.MP#2 amd64
d630amd64$ exit

Script done on Sat Dec 17 11:53:34 2022

Thanks,

Roger

Reply via email to