Since I constantly have to move between different Lisp impls to test things out, I'm interested in running multiple SLIME at the same time talking to different implementations. Anyway, as a first step toward making this a bit more sane, here's a patch that changes the way SLIME builds itself so each impl gets its own directory for its fasl files. Or is there some other way I should be doing this?
-Peter
Index: swank-loader.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-loader.lisp,v retrieving revision 1.16 diff -u -r1.16 swank-loader.lisp --- swank-loader.lisp 5 Feb 2004 05:57:04 -0000 1.16 +++ swank-loader.lisp 17 Feb 2004 22:46:50 -0000 @@ -35,12 +35,27 @@ #+clisp '("xref" "metering" "swank-clisp" "swank-gray") ))
+(defparameter *lisp-name* + #+cmu "cmu" + #+sbcl "sbcl" + #+openmcl "openmcl" + #+lispworks "lispworks" + #+allegro "allegro" + #+clisp "clisp") + + (defparameter *swank-pathname* (make-swank-pathname "swank"))
(defun file-newer-p (new-file old-file) "Returns true if NEW-FILE is newer than OLD-FILE." (> (file-write-date new-file) (file-write-date old-file)))
+(defun binary-pathname (source-pathname) + (merge-pathnames + (make-pathname :directory `(:relative "fasl" ,*lisp-name*)) + (merge-pathnames (compile-file-pathname source-pathname)))) + + (defun compile-files-if-needed-serially (files) "Compile each file in FILES if the source is newer than its corresponding binary, or the file preceding it was @@ -48,14 +63,15 @@ (with-compilation-unit () (let ((needs-recompile nil)) (dolist (source-pathname files) - (let ((binary-pathname (compile-file-pathname source-pathname))) + (let ((binary-pathname (binary-pathname source-pathname))) (handler-case (progn (when (or needs-recompile (not (probe-file binary-pathname)) (file-newer-p source-pathname binary-pathname)) (format t "~&;; Compiling ~A...~%" source-pathname) - (compile-file source-pathname) + (ensure-directories-exist binary-pathname) + (compile-file source-pathname :output-file binary-pathname) (setq needs-recompile t)) (load binary-pathname)) #+(or)