[elephant-devel] Problem with LWW 5.1.2, BDB-backend

Ian Eslick eslick at media.mit.edu
Sun Dec 6 16:44:15 UTC 2009


Hey, quick answers:

1) In the online FAQ you'll notice that you have to ensure that you are using uffi and not the uffi compatibility package from cffi.
2) The prebuilt DLLs are not up to date (sorry!), they need to be made current against BDB 4.7 which Elephant 1.0 depends on.
3) We have one or two lispworks users that I'm aware of, so it should work, but I can't rule out a lispworks specific problem, although I think #1 and #2 above explain what you're seeing.

Are you a position to build the DLLs yourself?

Ian

On Dec 5, 2009, at 5:28 AM, Plamen . wrote:

> Hello,
> I need to use BDB for my current application and from what I see on
> the net, elephant seems to be the most mature and functional solution.
> After following the installation instructions (I use LispWorks 5.1.2
> for Windows - yes - I need that configuration at the moment, with
> Berkeley DB 4.5.20, with prebuild DLLs (libberkeley-db.dll and
> libmemutil.dll) in the elephant-root and from what I see a correct
> my-config.sexp also in the elephant-root directory), after loading
> Elephant I get the following error :
> ELE-USER 13 > (open-store '(:bdb "/temp/db2/"))
> Error: The call (#<Function DB-BDB::%DB-ENV-CREATE 22053092> 0) does
> not match definition (#<Function DB-BDB::%DB-ENV-CREATE 22053092>
> DB-BDB::FLAGS DB-BDB::ERRNO).
> From what I see in the sources - there are 3 relevant definitions :
> 1. the BDB one :
> 
> db_env_create
> 
> ________________________________
> 
> #include <db.h>
> 
> int
> db_env_create(DB_ENV **dbenvp, u_int32_t flags);
> 
> 2. then the libberkeley-db one :
> 
> DB_ENV *db_env_cr(u_int32_t flags, int *errno) {
>  DB_ENV *envp;
>  *errno = db_env_create(&envp, flags);
>  return envp;
> }
> 
> 3. and finally the Lisp definitions :
> 
> (def-function ("db_env_cr" %db-env-create)
>    ((flags :unsigned-int)
>     (errno :int :out))
>  :returning :pointer-void)
> 
> (defun db-env-create ()
>  "Create an environment handle."
>  (multiple-value-bind (env errno)
>      (%db-env-create 0)
>    (declare (type fixnum errno))
>    (if (= errno 0)
> 	env
> 	(error 'db-error :errno errno))))
> 
> I have cffi_0.10.5 and uffi-1.6.2 (which are currently the newest
> versions of that libraries).
> 
> The call (%db-env-create 0) in the db-env-create function looks of
> course weird for me, but if people use these lines of source on all
> other Lisp-implementations, obviously I miss something. I know the LW
> FFI, but I'm not really proficient in the CFFI/UFFI-conversion to see
> the missing parts, but if there is someone outside in the WWW who runs
> LWW & BDB and/or knows how to help, I would be very gratefull.
> 
> Regards
> Plamen
> 
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel





More information about the elephant-devel mailing list