[slime-devel] reconnect slime to lisp

David Steuber david at david-steuber.com
Sun Apr 25 05:19:16 UTC 2004


If you enter my subject line into Google and are feeling lucky, you
will find Bill Clemontson's blog on the subject.  I had slightly
different needs than what he described though.  Here's my deal.

Using a script, I want to start up a lisp session that runs as a web
application server on a remote host.  At arbitrary times, I wish to be
able to connect to this lisp session and modify the running process.

I connect to the remote host using the 'ssh -X' command and run Emacs
from there.  That is the Emacs I want to connect to my running lisp.

I'm using SBCL on Linux (Debian/testing with my own 2.6.5 kernel).
The SBCL is from CVS with sb-thread and sb-futex enabled.  I've got
KMR's cl-modlisp standing in for my application server at the moment.
Its debug page is a good way to test that I've got Apache talking to
SBCL.

I'm also using detachtty.  I find this very convenient.  Basicly, my
only remaining problem (other than writing web applications) is to
create a run control script for /etc/init.d/ so that SBCL can be
started, stopped, and restarted in the same fashion as apache.

This seems to be working.  This makes me very happy.  I suppose I
should mention that I have an sbclrc file that requires asdf and
asdf-install.  I am also using the var for the swank communication
style rather than assuming :spawn.  This works because the symbol was
exported.  The anounce-fn was not exported.  I am using a simple
lambda because it really doesn't need to do anything.  Here is the
script:

#!/bin/sh

#
# Start SBCL as a detachtty process and start listening to Apache
#
# Swank is used so that SLIME can connect to the running process at
# any time.  Consider this a huge security hole.
#

rm /home/david/usr/var/run/lisp-dribble   2>/dev/null
rm /home/david/usr/var/run/detachtty.log  2>/dev/null
rm /home/david/usr/var/run/lisp.pid       2>/dev/null
rm /home/david/usr/var/run/lisp-socket    2>/dev/null

export SBCL_HOME=/home/david/usr/lib/sbcl

/usr/bin/detachtty --dribble-file /home/david/usr/var/run/lisp-dribble \
                   --log-file /home/david/usr/var/run/detachtty.log \
                   --pid-file /home/david/usr/var/run/lisp.pid \
                   /home/david/usr/var/run/lisp-socket  \
                   /home/david/usr/bin/sbcl \
                     --eval "(asdf:operate 'asdf:load-op :modlisp)" \
                     --eval "(asdf:operate 'asdf:load-op :swank)" \
                     --eval "(ml:modlisp-start :port 3000)" \
                     --eval "(swank:create-swank-server 4005 swank:*communication-style* #'(lambda (p) p) t)"

-- 
I wouldn't mind the rat race so much if it wasn't for all the damn cats.




More information about the slime-devel mailing list