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*)