[slime-devel] Concurrent multiple slimes with different lisps

Peter Seibel peter at javamonkey.com
Tue Feb 17 22:55:38 UTC 2004

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?


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

Peter Seibel                                      peter at javamonkey.com

         Lisp is the red pill. -- John Fraser, comp.lang.lisp

More information about the slime-devel mailing list