LINUX.ORG.RU

[Common Lisp] Проблемы с установкой LIFT с помощью asdf-install.


0

0

Решил изучить на досуге программирование на Common Lisp под web. Установил SBCL+Emacs+Slime, настроил. Пытаюсь поставить веб-сервер на SBCL (Hunchentoot) через asdf-install. При этом у меня возникла проблема с установкой пакета LIFT как одной из зависимостей Hunchentoot. При компиляции этого пакета выдает ошибку:

; compilation aborted because of fatal error:
; SB-INT:SIMPLE-READER-PACKAGE-ERROR at 7651 (line 199, column 39) on SB-SYS:FD-STREAM
; for "file /home/alex/lisp/sbclnew/lib/sbcl/site/lift/dev/utilities.lisp"
; {ABDB861}>:
; package "MOP" not found
;   
; compilation aborted after 0:00:00.572
WARNING:
   COMPILE-FILE warned while performing #<COMPILE-OP NIL {AACBE11}> on
   #<CL-SOURCE-FILE "utilities" {B3ED6D1}>.
Я так понимаю он хочет пакет «MOP». Что это за пакет может быть кто знает? Или ему чего-то другого хочется?

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

> Gentoo

Он же полумертвый? Или там с 2008 года после ухода робинса ситуация как-то изменилась к лучшему?

ЗЫ. Не троллинга ради, действительно интересно.

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

> Он же полумертвый?

Всё с ним отлично.

Gentoo - единственный известный мне дистрибутив, предоставляющий через gentoo-lisp-overlay отличную поддержку Common Lisp, которая позволяет легко рулить lisp-пакетами средствами дистрибутива (со всеми вытекающими). Во всех других - она просто ужасная: пакетов очень мало, они очень старые, плюс common-lisp-controller-уродство в Debian.

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

>плюс common-lisp-controller-уродство в Debian.

почему уродство?

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

> Всё с ним отлично.

С поддержкой Common Lisp'a может быть лучше всего, но вот сам дистрибутив не внушает доверия - качество портежа все хуже и хуже, разработчиков все меньше и меньше.

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

clbuild штука забавная...

Попробовал clbuild, штука забавная - спасибо за наводку. ) Однако с LIFT'ом те же яйца, только в профиль. clbuild исправно все качает, ошибка вылетает на этапе компиляции. Все-таки что это за пакет такой MOP?

ЗЫ Gentoo -не люблю.

frolfil ()
Ответ на: clbuild штука забавная... от frolfil

а что у вас в lift/dev/packages.lisp прописано?

    (defpackage #:lift
      (:use #:common-lisp #:com.metabang.trivial-timeout)
      (:import-from		     
       #+allegro #:mop
       #+clisp #:clos
       #+lispworks #:clos
       #+(or mcl ccl) #:ccl
       #+cmu #:clos-mop
       #+sbcl #:sb-mop
       #+scl #:clos
       #:class-direct-subclasses
       #:class-direct-superclasses
       #:class-precedence-list)
?

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

Так вот это что...

Хмм. Вот это что оказывается.... Для SBCL это сталобыть sb-mop. Ну и у меня там же тоже написано.

(defpackage #:lift
      (:use #:common-lisp #:com.metabang.trivial-timeout)
      (:import-from		     
       #+allegro #:mop
       #+clisp #:clos
       #+lispworks #:clos
       #+(or mcl ccl) #:ccl
       #+cmu #:clos-mop
       #+sbcl #:sb-mop
       #+scl #:clos
       #:class-direct-subclasses
И какого хера тогда не собирается? Оно же вроде в SBCL встроенное? Может его как-то включить надо? Типа require чгото там...?

frolfil ()
Ответ на: Так вот это что... от frolfil

> И какого хера тогда не собирается?

А что ты вообще делаешь то? При исполнении какой команды возникает ошибка? При загрузке hunchentoot LIFT на загружается (!), это пакет для тестирования, он нужен только если тесты какие запускать.

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

кстати да, интересно почему там mop явно указан?

(defun class-slot-names (thing)
  (let ((class (get-class thing)))
    (if class
      (mapcar 'mop:slot-definition-name
	      (mop:class-slots (finalize-class-if-necessary class)))
      (progn
	(warn "class for ~a not found)" thing)
	nil))))

(defun finalize-class-if-necessary (thing)
  "Finalizes thing if necessary. Thing can be a class, object or symbol naming a class. Returns the class of thing."
  (let ((class (get-class thing)))
    (unless (mop:class-finalized-p class)
      (mop:finalize-inheritance class))
    (values class)))

т.к. все эти ф-ции есть в sb-mop, то можно просто заменить все mop на sb-mop, я думаю

pseudo-cat ★★★ ()
Ответ на: Так вот это что... от frolfil

Re: Так вот это что...

Ради интереса, можешь привести вывод

*features*
в частноси наличие в нем :allegro

А вобще попробуй закоментировать строку

#+allegro #:mop
должно помочь

antares0 ★★★ ()

Отбой воздушной тревоги.

Так, все собралось. Всем спасибо! Особливо archimag за ссылку на clbuild. Правда почему не собиралось я так и не понял, как говорится "...что делал не помню, куда дел не знаю..." %)

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