LINUX.ORG.RU

Slime & sbcl


0

0

В slime не работает save-lisp-and-die:

CL-USER> (save-lisp-and-die "sbcl1.core")
Lisp connection closed unexpectedly: exited abnormally with code 256
 
В "чистом" sbcl - всё нормально.
Slime из emacs'a завпускаю. В .emacs прописано:

(load "/usr/share/emacs/site-lisp/slime/slime")
(setq inferior-lisp-program "/usr/bin/sbcl --noinform")

anonymous

Ответ на: комментарий от anonymous

>Удалил. Пишет - Cannot open load file "slime"

И правильно пишет. Теперь надо уже emacs путь указать на то, где теперь лежит slime.el. :)

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Вотдобавь перед настройками slime в .emacs строчку:

(add-to-list 'load-path "/new/path/to/slime/")

Слеш в конце пути поставить не забудь. Должно все заработать

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>Слеш в конце пути поставить не забудь. Должно все заработать

Хотя тут слеш и не обязателен. Это я попутал случаи кое-какие.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

> Удалил. Пишет - Cannot open load file "slime"

Хм, может в пути надо добавить ещё один /slime? Посмотри по каталогам...

yyk ★★★★★
()
Ответ на: комментарий от Zubok

Какая-то хня происходит:

~/.sbclrc
(require :asdf)
(pushnew "~/.sbcl/source/slime/" asdf:*central-registry* :test #'equal)

~/.emacs

(add-to-list 'load-path "~/.sbcl/source/slime/")
(setq inferior-lisp-program "/usr/bin/sbcl --noinform --core ~/projects/lisp/sbcl1.core")
(require 'slime)
(slime-setup) 

Компилю swank-sbcl.lisp уже в своём (домашнем) каталоге. 
fasl появляется в ~/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/

Далее делаю вemacs'e M-x slime выдаёт сначала:

(progn (load "/usr/share/emacs/site-lisp/slime/swank-loader.lisp" :verbose t)  
(funcall(read-from-string "swank:start-server") "/tmp/slime.5050" :external-format :iso-latin-1-unix))

Потом:
;; loading:#P"~/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/swank-sbcl.fasl&qu
ot;
;; Error while loading:  ~/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/swank-sbcl.fasl

А swank-sbcl.fasl есть то в этом каталоге, но после этого вызова,
ИСЧЕЗАЕТ. Вот мля фигня какая.

anonymous
()
Ответ на: комментарий от anonymous

C /usr/share/emacs/site-lisp/slime/ разобрался. Этот путь грузился ещё из (load "/usr/share/emacs/site-lisp/site-gentoo"). Ща эти строчки в этом файле зарэмил.

Уже в /usr/share/emacs/site-lisp/slime/ не лезет, но в остальном ничего не изменилось. Почему-то убивается swank-sbcl.fasl из ~/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/swank-sbcl.fasl, а потом пытается его грузануть. И ошибка....

anonymous
()
Ответ на: комментарий от anonymous

Так у тебя gentoo? Так ставь common-lisp-controller! Он все управление fasl делает. аккуратно все складывает в /var/cache/common-lisp-controller/$user_id/$lisp_implementation/... с необходимыми правами доступа.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да стоит уже. Да и с fasl'оми уже почти разобрался. Осталось узнать почему slime сначала убивает swank-sbcl.fasl, а потом загрузить его пытается.

anonymous
()
Ответ на: комментарий от anonymous

Хм, даже в чистом sbcl с моим ядром sbcl (--core my_core ) 
(require 'swank) не пашет. Туже самую ошибку выдаёт (fasl не найден).
Может в ядре дело ? Я его создаю так:
sbcl
* (save-lisp-and-die my_core)

И всё... Может ещё что-то надо ?

anonymous
()
Ответ на: комментарий от anonymous

>Да стоит уже.

А проверь! Набери (clc:clc-require :swank). Пакет clc -- это и есть common-lisp-controller. В Debian он сразу при установке SBCL компилируется, затем сразу же создается новое ядро, включающее clc. И далее SBCL всегда запускается с этим ядром.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Вроде получилось!!!
Перед созданием ядра сделал (asdf:operate 'asdf:load-op 'swank).
Потом для теста (setf a 5) и (save-lisp-and-die my_core).
Всё, теперь M-x slime загрузился! a enter 5.
Только несколько вопросов осталось:
1. Правильн ли я сделал в принципе ? может ъто случайно заработала ?
2. Какая разница между (asdf:operate 'asdf:load-op 'swank) и 
(require 'swank) ? Мне кажется никакой ???
3. Когда делал core без swank, оно получилось 22MB, а ща - 64KB.
Такое ощущение, что лажа какая-то !

anonymous
()

Всё равно странно. Ну у меня деб и controller - всё равно снеся "родной" slime "новый" грузился "на ура" без всяких спотыканий.

Если с каталогами ты разобрался - попробуй не компилить _сам_ этот файл. По идее всё slime должен сделать сам. И не поленись - покажи полный лог загрузки slime.

yyk ★★★★★
()
Ответ на: комментарий от Zubok

* (clc:clc-require :swank)

debugger invoked on a SB-KERNEL:READER-PACKAGE-ERROR:
  READER-ERROR on #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {90C5DC9}>:
package "CLC" not found

anonymous
()
Ответ на: комментарий от anonymous

> 1. Правильн ли я сделал в принципе ? может ъто случайно заработала ?

Это больше похоже на баг. В данном слечае не должно быть разницы. Версии sbcl и slime?

> 2. Какая разница между (asdf:operate 'asdf:load-op 'swank) и (require 'swank) ? Мне кажется никакой ???

Посмотри по исходникам sbcl :)

> 3. Когда делал core без swank, оно получилось 22MB, а ща - 64KB.

Да и родное порядка 22 метров. Да, фигня какая-то.

yyk ★★★★★
()
Ответ на: комментарий от yyk

САм не компилил
M-x slime

(progn (load "/home/xxx/.sbcl/source/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank:start-server") "/tmp/slime.6132" :external-format :iso-latin-1-unix))

* 
; loading #P"/home/xxx/.sbcl/source/slime/swank-loader.lisp"
;; loading #P"/home/xxx/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/swank-backend.fasl
"
;; loading #P"/home/xxx/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/nregex.fasl"


; compiling file "/home/xxx/.sbcl/source/slime/swank-sbcl.lisp" (written 10 JAN 2007 12:20:09 AM):
; compilation aborted after 0:00:00

;; Error while loading: /home/xxx/.slime/fasl/2007-01-10/sbcl-1.0.4-linux-x86/swank-sbcl.fasl
;;   Condition: Don't know how to REQUIRE SB-BSD-SOCKETS.
;; See also:
;;   The SBCL Manual, Variable SB-EXT:*MODULE-PROVIDER-FUNCTIONS*
;;   The SBCL Manual, Function REQUIRE
;; Aborting.
; 
; compilation unit aborted
;   caught 2 fatal ERROR conditions
* 

anonymous
()
Ответ на: комментарий от anonymous

Ну, не может найти SB-BSD-SOCKETS. Это ты со своим ядром грузишь или со стандартным?

Попробуй со стандартным. Или положи свё ядро туда-же, где и родное лежит.

yyk ★★★★★
()
Ответ на: комментарий от yyk

> Это ты со своим ядром грузишь или со стандартным?
Со своим. Со стандартным всё ОК.

> Или положи свё ядро туда-же, где и родное лежит.

Оппа! А где стандартное лежит ?

anonymous
()
Ответ на: комментарий от anonymous

Должно всё работать. Ну просто обязано! :)

yyk ★★★★★
()
Ответ на: комментарий от anonymous

ну если sbcl в /usr/bin, то ядро в /usr/lib/sbcl/, или, соответственно, /usr/local/bin и /usr/local/lib/sbcl/

yyk ★★★★★
()
Ответ на: комментарий от anonymous

"Не может такого быть!" :)

1. На всякий случай - в этой папке точно есть старый sbcl.core?

2. Ты уверен, что у тебя одна инсталляция sbcl?

3. Ты точно указываешь при загрузке то ядро, которое положил рядом со старым? (в ~/.emacs)

4. Для проверки - со своим ядром в консоли (require :sb-bsd-sockets) что говорит?

yyk ★★★★★
()
Ответ на: комментарий от yyk

Да, и с собственным ядром у меня тоже не работает, хотя и размер нормальный - почти 25 метров. Но это уже баг. Так что можешь не париться :)

yyk ★★★★★
()
Ответ на: комментарий от anonymous

Стоп-стоп-стоп, а что ты добавил в своё ядро?

Ещё раз - если бы оно работало (или если оно только у меня не работает) - то после сохранения ядра после (require :swank) нужно было бы запустить sbcl с этим ядром и вызвать (swank:create-server) /* или добавить в save-lisp-and-die :toplevel #'swank:create-server */ и после этого запустить emacs а в нём slime-connect.

yyk ★★★★★
()
Ответ на: комментарий от yyk

> 3. Ты точно указываешь при загрузке то ядро, которое положил рядом со старым? (в ~/.emacs) 

Нет, не точно! Теперь точно указал и всё заработало!!!
Ща нада как-то сделать чтоб не нужно было своё core в /usr/lib/sbcl
всё время закидывать. Чтоб из моего места работало. Как ?

anonymous
()
Ответ на: комментарий от anonymous

После сохранения ядра со swank и загрузки sbcl с этим ядром ни swank ни sb-bsd-sockets нормально не работают :(

yyk ★★★★★
()
Ответ на: комментарий от yyk

Всё. Я тока в новое ядро добавил (setf a,b,f,g, ) вобщем всякие присваиваия. И всё. Сделал ядро, кинул его в /usr/lib/sbcl и заработало !!! swank вообще не трогад.

anonymous
()
Ответ на: комментарий от anonymous

> Ща нада как-то сделать чтоб не нужно было своё core в /usr/lib/sbcl всё время закидывать. Чтоб из моего места работало. Как ?

Значит это у меня или в версии для офтопика баг... :(

Ладно, чтобы работало из твоего места надо... скопировать в это место _все_ папки со всем содержимым из .../lib/sbcl/ - это самый дурацкий путь. Другой - в ~/.sbclrc прописать

(setf *LOAD-PATHNAME* #P"/path/to/lib/sbcl/")

Должно заработать. Наверное :)

yyk ★★★★★
()
Ответ на: комментарий от anonymous

> Всё. Я тока в новое ядро добавил (setf a,b,f,g, ) вобщем всякие присваиваия. И всё. Сделал ядро, кинул его в /usr/lib/sbcl и заработало !!! swank вообще не трогад.

А, ну если так - тогда "да" - будет работать. Можешь даже в ядре сохранить asdf (хотя если ставил из пакета а не сам собирал - оно уже и так там должно быть :)

yyk ★★★★★
()

Всё, до завтра...

yyk ★★★★★
()
Ответ на: комментарий от anonymous

А-а-а, блин, забыл - задай переменную окружения SBCL_HOME=/old/path/to/lib/sbcl перед запуском со своим ядром - будет работать... :)

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.