Ошибка запуска sbcl под слизью в Vista - PullRequest
1 голос
/ 04 августа 2010

У меня проблемы с запуском SBCL под слизью. Я все испортил и не знаю как поправиться. Это работало нормально, пока я ...

Возникла проблема с загрузкой пакета через asdf. В этот момент я начал отлаживать asdf.lisp, предоставляемый с SBCL, чтобы увидеть, что происходит не так. Единственное изменение, которое я сделал, - это поставить (перерыв), который я удалил, как только я выяснил, что было не так. Все было хорошо, пока в следующий раз я не попытался запустить SBCL.

Затем я получил ошибку компиляции swank о том, что asdf.fasl был старше, чем файл asdf.lisp. Это имело смысл для меня, поэтому я перекомпилировал asdf.fasl. Вывод, который я сейчас получаю:

(progn (load "c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "c:\\Users\\GILESR~1\\AppData\\Local\\Temp\\slime.3068" :coding-system "iso-latin-1-unix"))

This is SBCL 1.0.37, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

This is experimental prerelease support for the Windows platform: use
at your own risk.  "Your Kitten of Death awaits!"
* 
; loading #P"c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-backend.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-path-parser.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-file-cache.fasl"

; compiling file "c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp" (written 22 JUL 2010 08:15:02 AM):

; file: c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp
; in: EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
;     (REQUIRE 'SWANK-BACKEND::SB-BSD-SOCKETS)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-INTROSPECT)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-POSIX)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-CLTL2)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.
; 
; compilation unit aborted
;   caught 1 fatal ERROR condition
;   caught 4 ERROR conditions
;
; compilation aborted because of fatal error:
;   SB-INT:SIMPLE-READER-PACKAGE-ERROR at 1839 (line 62, column 18) on #<SB-SYS:FD-STREAM
;                                                                        for "file c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp"
;                                                                        {24564B89}>:
;     package "SB-POSIX" not found
;   ; compilation aborted after 0:00:00.045

;; 
;; Error while compiling c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp:
;;   COMPILE-FILE returned NIL.
;; Aborting.

Так что в моем перекомпилированном asdf нет нужных вещей. Чтобы решить эту проблему, я полностью удалил и переустановил SBCL. Нет радости У меня тоже ничего нет в .sbclrc.

Обновление: при просмотре исходного кода asdf.lisp отсутствующие функции обязательно находятся в файле. То, что мешает им скомпилировать, я думаю, строка:

#+(and sbcl sbcl-hooks-require)

Моих знаний о lisp в настоящее время недостаточно, чтобы скомпилировать файл asdf в среде, чтобы вызвать приведенный выше оператор условной компиляции.

1 Ответ

0 голосов
/ 05 августа 2010

Я разобрал проблему, выполнив следующие шаги:

  1. Запустите sbcl из меню Пуск Windows.
  2. Запустите следующий код, чтобы добавить sbcl-hooks-требовать символ в списке возможностей:

    (push: sbcl-hooks-require features )

  3. Перекомпилировать asdf.lisp.Для этого мне нужно было перекомпилировать asdf вне установленного каталога C: \ Program Files \ Steel ..., так как UAC в Windows Vista остановит запись файла.Например:

    (файл компиляции "C: \ foobar \ asdf.lisp")

  4. Скопировать сгенерированный файл fasl обратно в C: \ Program files \ Steel.... чтобы перезаписать исходный файл.

Обновление: форматирование в стеке переполнило некоторые биты кода.Код должен быть следующим:

(push :sbcl-hooks-require *features*)
(compile-file "C:\\foobar\\asdf.lisp")
...