Hi, stupid newbie question here: I'm having problems starting swank (and, by implication, Slime as well).
When I start emacs and do an "M-x slime" I get this error:
; compiling file "/usr/share/common-lisp/source/swank/swank-source-path-parser.lisp" (written 09 MAY 2004 09:42:59 PM): debugger invoked on a SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread 26812: The name :SWANK-BACKEND does not designate any package. You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
I'm running emacs 21.3.50, and slime HEAD from CVS earlier today. I'm trying to use SBCL 0.8.10 as the backend.
Looking into it a little further, I see that if I just run sbcl from a shell and the do (require 'swank) or (asdf:operate 'asdf:load-op :swank) then I get the same result.
I thought at first that thjis was telling me that I needed to specify SBCL as a backend somewhere. I'm not too sure now though, I think that what is actually happening is that the swank files (in /usr/share/common-lisp/sources/swank) are getting loaded in the wrong order and that something is doing an (in-package :swank-backend) before the defpackage call has been loaded and run.
So, am I right? And if so, how can I make sure that the files are loaded in the correct sequence?
Another thought is: maybe there's a way to precompile all of this stuff (into a FASL file I think) and then it should "just work" ?
Any help would be gratly appreciated at this point.
Cheers, Ian.
Ian Phillips ianp@ianp.org writes:
; compiling file "/usr/share/common-lisp/source/swank/swank-source-path-parser.lisp" (written 09 MAY 2004 09:42:59 PM): debugger invoked on a SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread 26812: The name :SWANK-BACKEND does not designate any package. You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
Currently we assume that SLIME is placed in a writable directory. Is /usr/share/common-lisp/source/swank/ writable?
I'm running emacs 21.3.50, and slime HEAD from CVS earlier today. I'm trying to use SBCL 0.8.10 as the backend.
The version numbers look ok.
Looking into it a little further, I see that if I just run sbcl from a shell and the do (require 'swank) or (asdf:operate 'asdf:load-op :swank) then I get the same result.
SLIME has a custom loader script and also a ASDF file, but the custom loader is better tested. The recommended way to load SWANK is something like:
(load "/usr/share/common-lisp/source/swank/swank-loader.lisp")
This should compile and load all files in the correct order; it aborts when something goes wrong.
I thought at first that thjis was telling me that I needed to specify SBCL as a backend somewhere. I'm not too sure now though, I think that what is actually happening is that the swank files (in /usr/share/common-lisp/sources/swank) are getting loaded in the wrong order and that something is doing an (in-package :swank-backend) before the defpackage call has been loaded and run.
So, am I right? And if so, how can I make sure that the files are loaded in the correct sequence?
The loader script detects automatically that it runs inside SBCL and compiles and loads the SBCL specific stuff. (The #+sbcl directives in the swank-loader are used to mark code that should only be visible it SBCL; it's a bit like #ifdef in C.)
Another thought is: maybe there's a way to precompile all of this stuff (into a FASL file I think) and then it should "just work" ?
This is unfortunately quite difficult. We support 5 different Lisp implementations, the FASL file formats are different between OSes and often incompatible between different versions of the same implementation.
Some other suggestions:
- make sure the SLIME directory is writable
- delete the 'fasl' subdirectory. The loader script creates this directory and you can safely delete it.
- try to load SWANK manually with
(load "/usr/share/common-lisp/source/swank/swank-loader.lisp")
It makes no sense to continue if this doesn't work. If this doesn't work send us the complete output.
- If it works, start SLIME with M-x slime from Emacs.
Helmut.
Hi Helmut,
Thanks! It was perms on the .../sources/swank directory. I got a much more helpful error message when I tried loading via the recommended method.
(load "/usr/share/common-lisp/source/swank/swank-loader.lisp")
A quick chmod 777 later and everything looks OK.
Another thought is: maybe there's a way to precompile all of this stuff (into a FASL file I think) and then it should "just work" ?
This is unfortunately quite difficult. We support 5 different Lisp implementations, the FASL file formats are different between OSes and often incompatible between different versions of the same implementation.
I didn't realise that. I was assuming that FASL was some kind of portable byte-code, not an implementation specific thing.
- If it works, start SLIME with M-x slime from Emacs.
Once again, thanks.
Ian.