Hello,
I'm experiencing a strange problem when I load the swank via ASDF and sbcl-0.9.9.1 in a cl-launch [1] session (backtrace attached).
Basically, AFAIU it doesn't find the necessary *.lisp files in the ~/.cache folder. In fact, if I copy all the slime/*.lisp files into the corresponding ~/.cache folder, it works as expected.
Is this a SLIME problem or a cl-launch one? I guess the latter, as without cl-launch, the swank is correctly loaded by ASDF. But I'd like to be 100% sure.
Moreover, the problem seems to happen only with the swank and not with other CL software I tried, i.e. the dependencies of UCW [2] (like iterate, cl-ppcre, split-sequence and the BESE software suite [3]).
Thx, bye, Gismo / Luca
[1] http://www.cliki.net/cl-launch [2] http://common-lisp.net/project/ucw [3] http://common-lisp.net/project/bese
Hello!
On Thu, 16 Mar 2006 12:03:17 +0100, Luca Capello wrote:
Is this a SLIME problem or a cl-launch one? I guess the latter, as without cl-launch, the swank is correctly loaded by ASDF. But I'd like to be 100% sure.
I should say that after some tests I think it's a SLIME problem.
The Debian swank.asd [1] is heavily modified to bypass the load of swank-loader.lisp. And just rewriting the original swank.asd with the Debian one solves my problem :-)
Now, I didn't try anything other than loading the swank by ASDF, so I don't know if with the above modification causes other problems. And I'm not a Lisp expert to completely understand the modification :-(
Thx, bye, Gismo / Luca
[1] http://cl-debian.alioth.debian.org/repository/pvaneynd/slime/debian/swank.as...
Hello!
On Fri, 17 Mar 2006 22:14:07 +0100, Luca Capello wrote:
I should say that after some tests I think it's a SLIME problem.
The Debian swank.asd [1] is heavily modified to bypass the load of swank-loader.lisp. And just rewriting the original swank.asd with the Debian one solves my problem :-)
Ok, the root cause of the problem is that cl-launch wants to save the fasl files in a different folder than the default ~/.slime.
Here some more output: ===== gismo@soren:~$ cl-launch -x -l sbcl -i "(push "/home/gismo/systems/" asdf:*central-registry*) (asdf:oos 'asdf:load-op 'swank)" -- ; loading system definition from /home/gismo/systems/swank.asd into ; #<PACKAGE "ASDF824"> ; registering #<SYSTEM :SWANK {B164741}> as SWANK *load-pathname*: |#P"/home/gismo/.cache/lisp-fasl/sbcl-0.9.9.11-linux-x86/home/gismo/libs/slime-cvs/swank-loader.fasl"| *default-pathname-defaults*: |#P"/home/gismo/"| *source-directory*: |#P"/home/gismo/.cache/lisp-fasl/sbcl-0.9.9.11-linux-x86/home/gismo/libs/slime-cvs/"| =====
Thanks to Marco Baringer, I found a way to solve this problem:
--8<---------------cut here---------------start------------->8--- Index: swank-loader.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-loader.lisp,v retrieving revision 1.58 diff -u -r1.58 swank-loader.lisp --- swank-loader.lisp 16 Mar 2006 17:26:27 -0000 1.58 +++ swank-loader.lisp 27 Mar 2006 20:13:54 -0000 @@ -29,7 +29,9 @@
(defvar *source-directory* (make-pathname :name nil :type nil - :defaults (or *load-pathname* *default-pathname-defaults*)) + :defaults (truename + (asdf:component-pathname + (asdf:find-system :swank)))) "The directory where to look for the source.")
(defparameter *sysdep-files* --8<---------------cut here---------------end--------------->8---
With this patch, cl-launch can load the swank and the fasl are saved as the following:
- swank-loader.fasl in the cl-launch ~/.cache - all the others fasl in ~/.slime, as usual
BTW, the same error is present with the common-lisp-controller on a Debian unstable system: ===== luca@gismo:~/Hacking$ sbcl --eval "(asdf:oos 'asdf:load-op 'swank)" [...] ; loading system definition from /usr/share/common-lisp/systems/swank.asd into [...] ; /var/cache/common-lisp-controller/1000/sbcl/slime/swank-loader.fasl written ; compilation finished in 0:00:01 *load-pathname*: |#P"/var/cache/common-lisp-controller/1000/sbcl/slime/swank-loader.fasl"| *default-pathname-defaults*: |#P"/home/luca/Hacking/"| *source-directory*: |#P"/var/cache/common-lisp-controller/1000/sbcl/slime/"| =====
With the above patch, the problem is solved and the upstream swank.asd can be used in conjunction with the following patch (from [2]):
--8<---------------cut here---------------start------------->8--- Index: swank-loader.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-loader.lisp,v retrieving revision 1.58 diff -u -r1.58 swank-loader.lisp --- swank-loader.lisp 16 Mar 2006 17:26:27 -0000 1.58 +++ swank-loader.lisp 27 Mar 2006 20:42:54 -0000 @@ -129,9 +131,18 @@ (defun binary-pathname (source-pathname binary-directory) "Return the pathname where SOURCE-PATHNAME's binary should be compiled." (let ((cfp (compile-file-pathname source-pathname))) + #-common-lisp-controller (merge-pathnames (make-pathname :name (pathname-name cfp) :type (pathname-type cfp)) - binary-directory))) + binary-directory) + #+common-lisp-controller + (merge-pathnames (make-pathname + :directory + `(:relative "swank" "fasl" ,(unique-directory-name)) + :name (pathname-name cfp) + :type (pathname-type cfp)) + (clc:calculate-fasl-root)) + ))
(defun compile-files-if-needed-serially (files fasl-directory) "Compile each file in FILES if the source is newer than --8<---------------cut here---------------end--------------->8---
BTW, I'm aware of the correct way to customize the source- and fasl-directory :-)
Any comments?
Thx, bye, Gismo / Luca
[2] http://cl-debian.alioth.debian.org/repository/pvaneynd/slime/swank-loader.li...