On 5/5/07, Ian Eslick <[EMAIL PROTECTED]> wrote:
PS - I've had several people load the current HEAD and run on linux/ sbcl with the same positive result. So far you are the only failure.
I also don't have any problem with SBCL at all. I'm running fedora core 6, SBCL 1.0.3 and lispworks 5.0.2. BTW, I found out that the MOP error only happens with lispworks 5.0.1. I should have checked lispwork's website first, it turns out that 5.0.2 has been out for a while. Sorry for the false alarm.
I'll test Lispworks under Linux later and see if I can reproduce the problem, but it worked fine for me before I released RC1. Do you have your library path setup correctly in your my- config.sexp?
I use henrik's install-bdb.sh script to install the latest bdb and it creates my-config.sexp automatically. Remember without the -ldb flag, ldd shows that $ ldd src/db-bdb/libberkeley-db.so linux-gate.so.1 => (0x009fb000) libm.so.6 => /lib/libm.so.6 (0x00110000) libc.so.6 => /lib/libc.so.6 (0x00db5000) /lib/ld-linux.so.2 (0x0085f000)
(asdf:operate 'asdf:load-op :elephant) (asdf:operate 'asdf:load-op :ele-bdb)
The elephant.asd loads both (uffi:load-foreign-library "/usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so" :module "/usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so") and (uffi:load-foreign-library "src/db-bdb/libberkeley-db.so" :module "src/db-bdb/libberkeley-db.so") To verify that libdb is loaded, I type the following in the REPL
(uffi:def-function ("db_strerror" test-db-strerror)
((error :int)) :returning :cstring)
(test-db-strerror 1)
"Operation not permitted" Now in src/db-bdb/libberkeley-db.c there's a wrapper function db_strerr which call the above db_strerror. If I tried this in the REPL
(%db-strerror 1)
lispworks-5-0-0-x86-linux: symbol lookup error: src/db-bdb/libberkeley-db.so: undefined symbol: db_strerror So even though both "*.so" are loaded with load-foreign-library, libberkeley-db.so cannot access functions in libdb-4.5.so Now with the -ldb flag $ ldd src/db-bdb/libberkeley-db.so linux-gate.so.1 => (0x00d71000) libm.so.6 => /lib/libm.so.6 (0x00d43000) libdb-4.5.so => /usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so (0x00918000) libc.so.6 => /lib/libc.so.6 (0x00b43000) /lib/ld-linux.so.2 (0x0085f000) libpthread.so.0 => /lib/libpthread.so.0 (0x00f9c000) By the time libberkeley-db.so is loaded, it should pull in libdb-4.5.so automatically, and the above test will succeed. I really don't have much knowledge of how SBCL/lispworks implement their FFI load-library function, but it seems that for SBCL, merely using load-foreign-library is enough. Someone might have a clue of what's going on. _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel