common-lispsbclasdfquicklisp

ASDF system uffi does not return version number


I successfully did load clsql with quicklisp. Loading of a source file with function definitions, which use clsql, was also successfull. When executing a clsql function I am getting this error.

(clsql:with-database (db "spendendb" :database-type :sqlite3 :make-default nil) (clsql:database-name db))
WARNING: Requested version "2.0" but #<ASDF/SYSTEM:SYSTEM "uffi"> has no version

debugger invoked on a ASDF/FIND-COMPONENT:MISSING-DEPENDENCY-OF-VERSION in thread #<THREAD tid=4907 "main thread" RUNNING {1000BB00A3}>:
  Component CLSQL-UFFI-SYSTEM::UFFI does not match version 2.0, required by
  #<SYSTEM "clsql-uffi">

Then I read the clsql-uffi.asd file. It's defsystem does not set a version number. It has these dependencies:

:depends-on (clsql #-:clsql-cffi (:version uffi "2.0")
                     #+:clsql-cffi cffi-uffi-compat)

Clsql-cffi does not exist. So it calls uffi. Uffi has version 2.0.0. in it's defsystem (uffi.asd). I uninstalled uffi with quicklisp and installed the same version manually in quicklisp/local-projects. I loaded unchanged uffi manually and nothing changed. Then I changed the version to 2.0 and reloaded uffi but the error remains the same. Even restart of SBCL and reload of uffi, clsql and source file did not work.

SBCL 2.4.8 ASDF 3.3.1

What could be the reason and is there a way to fix it?


Solution

  • UFFI is abandoned. I use cffi-uffi-compat with CLSQL and it works well. Just make certain CFFI is loaded before you load CLSQL. You can do that with (asdf:load-system :cffi). Use (ql:quickload :cffi) if you don't already have it downloaded.