When trying to install GSLL (the gnu scientific library lisp package) using quicklisp, I noticed that it failed because the library name was a pathname rather than a string.
I fixed it by changing cffi's src/libraries.lisp as described below, putting pathnames into the etypecase.
Is there some reason why this isn't done normally?
John
;; from src/libraries.lisp (defun load-foreign-library-helper (name thing &optional search-path) (etypecase thing (string (load-foreign-library-path name thing search-path)) (pathname ;; #### MAKE IT HANDLE PATHNAMES (load-foreign-library-path name (namestring thing) search-path)) ;; JTK (cons (ecase (first thing) (:framework (load-darwin-framework name (second thing))) (:default (unless (stringp (second thing)) (fl-error "Argument to :DEFAULT must be a string.")) (let ((library-path (concatenate 'string (second thing) (default-library-suffix)))) (load-foreign-library-path name library-path search-path))) (:or (try-foreign-library-alternatives name (rest thing)))))))
On Tue, 14 Feb 2012 10:20:30 -1000, JTK said:
When trying to install GSLL (the gnu scientific library lisp package) using quicklisp, I noticed that it failed because the library name was a pathname rather than a string.
I fixed it by changing cffi's src/libraries.lisp as described below, putting pathnames into the etypecase.
Is there some reason why this isn't done normally?
Version 0.10.6 already has a case for pathname in load-foreign-library-helper.
Which version of cffi are you using? Perhaps you need to update quicklisp?
__Martin