Hi Marcin,
I think that the value of your $SBCL_HOME ends with 'sbcl' without '/'. In this case merge-pathnames will consider sbcl as a regular file name and will remove it. Check the value of asdf:*central-registry* after loading the init.lisp file. It should contain paths to all directories with *.asd files.
Also you will need the latest versions of all thirdparty libraries in order to compile with SBCL.
-Tchavdar
On 2/17/07, Marcin Tustin mm3@zepler.net wrote:
I'm trying to install bknr, but I can't get my lisp (sbcl) to find it.
In brief, I've put bknr-svn in $SBCL_HOME, and I have the file $SBCL_HOME/bknr-svn/bknr/init.lisp looking as below.
The problem is that once I load the file, (asdf:oos 'asdf:load-op :bknr) just drops me into the debugger with the message "debugger invoked on a ASDF:MISSING-COMPONENT in thread #<THREAD "initial thread" {A744531}>: component "bknr" not found."
init.lisp:
(in-package :cl-user) (require :asdf)
;;;;;;;;;;;;; ;; Tweak this (eval-when (:execute :compile-toplevel :load-toplevel) #+allegro (setf (logical-pathname-translations "bknr") `(("**;*.*.*" "bknr/**/")) (logical-pathname-translations "bknr-thirdparty") `(("**;*.*.*" "thirdparty/**/")) (logical-pathname-translations "eboy") `(("**;*.*.*" "eboy/**/")))
#+cmu (setf (logical-pathname-translations "bknr") `(("**;*.*.*" "home:bknr-sputnik/bknr/**/")) (logical-pathname-translations "bknr-thirdparty") `(("**;*.*.*" "home:bknr-sputnik/thirdparty/**/")) (logical-pathname-translations "eboy") `(("**;*.*.*" "home:bknr-sputnik/eboy/**/")))
#+sbcl (setf (logical-pathname-translations "bknr") `(("**;*.*.*" ,(merge-pathnames (make-pathname :directory '(:relative "bknr-svn" "bknr" :wild-inferiors) :name :wild :type :wild :version :wild) (POSIX-GETENV "SBCL_HOME")))) (logical-pathname-translations "bknr-thirdparty") `(("**;*.*.*" ,(merge-pathnames (make-pathname :directory '(:relative "bknr-svn" "thirdparty" :wild-inferiors) :name :wild :type :wild :version :wild) (POSIX-GETENV "SBCL_HOME")))) (logical-pathname-translations "eboy") `(("**;*.*.*" ,(merge-pathnames (make-pathname :directory '(:relative "bknr-svn" "eboy" :wild-inferiors) :name :wild :type :wild :version :wild) (POSIX-GETENV "SBCL_HOME"))))))
(eval-when (:execute :compile-toplevel :load-toplevel) #-sbcl (load #p"bknr-thirdparty:asdf;asdf") #+sbcl (require :asdf))
(pushnew (translate-logical-pathname #p"bknr:src;") asdf:*central-registry* :test #'equal) (pushnew (translate-logical-pathname #p"eboy:src;") asdf:*central-registry* :test #'equal)
(defparameter *patch-directory* "bknr:patches;")
(defun load-patches (&optional (directory *patch-directory*)) (dolist (file (directory (merge-pathnames directory #p"patch-*.lisp"))) (warn "; Loading patch from file ~A~%" file) (load file)))
(defun fix-dpd () #+cmu ;; Die Sache mit dem aktuellen Verzeichnis hat CMUCL noch immer nicht im ;; Griff. Nachbessern! (setf *default-pathname-defaults* (pathname (concatenate 'string (nth-value 1 (unix:unix-current-directory)) "/"))))
(defun make-wild-pathname (type directory) (merge-pathnames (make-pathname :type type :name :wild :directory '(:relative :wild-inferiors)) directory))
(defun setup-registry () (mapc #'(lambda (asd-pathname) (pushnew (make-pathname :directory (pathname-directory asd-pathname)) asdf:*central-registry* :test #'equal)) (append (directory #p"bknr-thirdparty:**;*.asd") (directory #p"bknr:**;*.asd"))))
(defun clean-registry (&optional (dirs asdf:*central-registry*)) (let ((files (mapcan #'directory (mapcan #'(lambda (dir) (when (pathnamep dir) (list (make-wild-pathname "fas" dir) (make-wild-pathname "lib" dir) (make-wild-pathname "x86f" dir) (make-wild-pathname "fasl" dir)))) dirs)))) (dolist (file files) (when (probe-file file) (format t "Deleting binary file ~S~%" file) (delete-file file)))))
#+cmu (load-patches)
(setup-registry) (fix-dpd)
(pushnew :cl-gd-gif *features*)
bknr-devel mailing list bknr-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/bknr-devel