Регистрация | Войти
Lisp — программируемый язык программирования
RSS
Проблема с установкой
memnek - 08.03.2010 18:23, Сообщений - 17
Итак, у меня стояло bordeaux-threads v0.7. Я установил hunchentoot и restas (удачно). Но ни hunch, ни restas не запускались (hunch при попытке запуска выдавал: undefined function^ bordeaux-threads:make-thread). На сайте тредсов есть таблица совместимости, для линукса указана версия 0.6. Итак, я поставил тредсы 0.6, и hunch заработал. Но restas перестал загружаться

erred while invoking #<COMPILE-OP NIL {10046FE691}> on                               
#<CL-SOURCE-FILE "module" {10051CE8C1}>
   [Condition of type ASDF:COMPILE-FAILED]

erred while invoking #<COMPILE-OP NIL {10046FE691}> on                               
#<CL-SOURCE-FILE "route" {10051CE8E1}>
   [Condition of type ASDF:COMPILE-FAILED]

это в слиме с sbcl. clisp компилит нормально, но не запускает (restas:start ...). пустая строчка в репле, ничего не происходит, браузер страницу не грузит

как быть?
[#]
Для начала что за система? Я понял, что linux, но какой? Как ставишь пакеты?

> На сайте тредсов есть таблица совместимости, для линукса указана версия 0.6

Таблица эта очень древняя, давно не обновлялась, не обращай на неё внимание, я меня bordeaux-threads версии 0.7.0

> Итак, я поставил тредсы 0.6, и hunch заработал.

Очень странно, hunchentoot какой версии? Требуется по крайней мере 1.0, а лучше 1.1

> clisp компилит нормально, но не запускает (restas:start ...). 

В clisp так и должно происходить, ибо он скорей всего однопоточный, и запуск hunchentoot занимает единственный поток.


По ошибкам: нужен более развернутый backtrace, так ничего не понятно. Какой restas, 0.0.4?
archimag - 09.03.2010 00:11
[#]
Kubuntu 9.10, x86_64, ставлю вручную, качаю с cliki.
с тредсами версии 0.6 не запускается веб-сервер.
hunch v 1.1.0, restas 0.0.4

Backtrace:
  0: ((SB-PCL::FAST-METHOD ASDF:PERFORM (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) ..)
  1: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1.)) ..)
  2: ((SB-PCL::FAST-METHOD ASDF:PERFORM ASDF:AROUND (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE)) ..)
  3: ((LAMBDA ()))
  4: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK))
  5: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-RECURSIVE-LOCK]291))
  6: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..)
  7: (SB-C::%WITH-COMPILATION-UNIT #<CLOSURE (LAMBDA #) {10035E5349}>)[:EXTERNAL]
  8: (ASDF:OPERATE ASDF:LOAD-OP RESTAS)[:EXTERNAL]
  9: (ASDF::MODULE-PROVIDE-ASDF RESTAS)
 10: ((LAMBDA (#:G[REQUIRE]13)) ASDF::MODULE-PROVIDE-ASDF)
 11: (SB-IMPL::%MAP-FOR-EFFECT-ARITY-1 #<CLOSURE (LAMBDA #) {100336D309}> (ASDF::MODULE-PROVIDE-ASDF SB-IMPL::MODULE-PROVIDE-CONTRIB))
 12: (REQUIRE RESTAS NIL)
 13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (REQUIRE 'RESTAS) #<NULL-LEXENV>)
 14: (SWANK::EVAL-REGION "(require 'restas)\n")
 15: ((LAMBDA ()))
 16: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA #) {100336CCA9}>)
 17: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation request." #<CLOSURE (LAMBDA #) {100336CBC9}>)
 18: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA #) {100336CB99}>)
 19: (SWANK::REPL-EVAL "(require 'restas)\n")
 20: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(require 'restas)\n") #<NULL-LEXENV>)
 21: (SWANK::EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(require 'restas)\n") "COMMON-LISP-USER" 13)
 22: (SWANK::PROCESS-REQUESTS NIL)
 23: ((LAMBDA ()))
 24: ((LAMBDA (SWANK-BACKEND::HOOK SWANK-BACKEND::FUN)) #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA #) {1002C8D159}>)
 25: (SWANK::CALL-WITH-BINDINGS ..)
 26: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {1003132571}> #<CLOSURE (LAMBDA #) {1002C8D159}>)
 27: (SWANK::HANDLE-REQUESTS #<SWANK::CONNECTION {1003132571}> NIL)
 28: (SWANK::CALL-WITH-BINDINGS NIL #<CLOSURE (LAMBDA #) {1002C8D109}>)
 29: ((FLET #:WITHOUT-INTERRUPTS-BODY-[BLOCK360]365))
 30: ((FLET SB-THREAD::WITH-MUTEX-THUNK))
 31: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-MUTEX]267))
 32: (SB-THREAD::CALL-WITH-MUTEX ..)
 33: ((LAMBDA ()))
 34: ("foreign function: #x421C90")
 35: ("foreign function: #x4183E7")

memnek - 09.03.2010 01:01
[#]
Лучше не стало, но подозреваю, что чего-то не хватает. Как отслеживаешь зависимости? RESTAS кроме hunchentoot также требует мои cl-rotues (требуемые для него пакеты указаны по ссылке) и garbage-pools. Тоже самое возможно и с bordeaux-threads. Для Kubuntu возможно наиболее простой способ установки, это использовать clbuild, для которого есть мой форк содержащий мои пакеты: http://github.com/archimag/clbuild-archimag
archimag - 09.03.2010 01:18
[#]
А как настроить авторизированный прокси в clbuild? А ещё в емаксе, и в asdf
memnek - 31.03.2010 14:51
[#] Ответ на комментарий от memnek 31.03.2010 14:51
Не пойму в чём проблема. Запускаю пример с "Hello, World" b и вываливается следующее:
CL-USER> (restas:define-module #:restas.hello-world
  (:use :cl))
#<PACKAGE "RESTAS.HELLO-WORLD">
CL-USER> (in-package #:restas.hello-world)
#<PACKAGE "RESTAS.HELLO-WORLD">
HELLO-WORLD> (restas:define-route main ("")
  "<h1>Hello world!</h1>")
; No value
HELLO-WORLD> (restas:start '#:restas.hello-world :port 8080)

The function BORDEAUX-THREADS:MAKE-THREAD is undefined.
   [Condition of type UNDEFINED-FUNCTION]

Backtrace:
  0: ("undefined function")
  1: ((SB-PCL::FAST-METHOD HUNCHENTOOT:EXECUTE-ACCEPTOR (HUNCHENTOOT:ONE-THREAD-PER-CONNECTION-TASKMASTER)) ..)
  2: ((SB-PCL::FAST-METHOD HUNCHENTOOT:START (HUNCHENTOOT:ACCEPTOR)) #<unavailable argument> #<unavailable argument> #<RESTAS:RESTAS-ACCEPTOR (host *, port 8080)>)
  3: (RESTAS:START #:RESTAS.HELLO-WORLD :SSL-CERTIFICATE-FILE NIL :SSL-PRIVATEKEY-FILE NIL :SSL-PRIVATEKEY-PASSWORD NIL :HOSTNAME NIL :PORT 8080 :ADDRESS NIL :ACCEPTOR-CLASS NIL :CONTEXT NIL)
  4: (SB-INT:SIMPLE-EVAL-IN-LEXENV (RESTAS:START '#:RESTAS.HELLO-WORLD :PORT 8080) #<NULL-LEXENV>)
  5: (EVAL (RESTAS:START '#:RESTAS.HELLO-WORLD :PORT 8080))
  6: (SWANK::EVAL-REGION "(restas:start '#:restas.hello-world :port 8080)\n")
  7: ((LAMBDA () :IN SWANK::REPL-EVAL))
  8: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {1006A859FB}>)
  9: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation request." #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {1006A8591B}>)
 10: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {1006A858EB}>)
 11: (SWANK::REPL-EVAL "(restas:start '#:restas.hello-world :port 8080)\n")
 12: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(restas:start '#:restas.hello-world :port 8080)\n") #<NULL-LEXENV>)
 13: (EVAL (SWANK:LISTENER-EVAL "(restas:start '#:restas.hello-world :port 8080)\n"))
 14: (SWANK:EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(restas:start '#:restas.hello-world :port 8080)\n") "RESTAS.HELLO-WORLD" 21)
 15: (SWANK::PROCESS-REQUESTS NIL)
 16: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
 17: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
 18: (SWANK-BACKEND::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA # :IN SWANK::HANDLE-REQUESTS) {10038A938B}>)
 19: ((FLET SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/alex/quicklisp/dists/quicklisp/software/slime-20120407-cvs/swank-sbcl.lisp") ..)
 20: (SWANK::CALL-WITH-BINDINGS ..)
 21: (SWANK::HANDLE-REQUESTS #<SWANK::MULTITHREADED-CONNECTION {1003136CC3}> NIL)
 22: ((FLET #:WITHOUT-INTERRUPTS-BODY-238208 :IN SB-THREAD:MAKE-THREAD))
 23: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD:MAKE-THREAD))
 24: ((FLET #:WITHOUT-INTERRUPTS-BODY-88859 :IN SB-THREAD::CALL-WITH-MUTEX))
 25: (SB-THREAD::CALL-WITH-MUTEX ..)
 26: (SB-THREAD::INITIAL-THREAD-FUNCTION)
 27: ("foreign function: call_into_lisp")
 28: ("foreign function: new_thread_trampoline")

Все пакеты подгружал quicklisp-oм (в т. ч. и "BORDEAUX-THREADS"), SBCL 1.0.55, Debian stable AMD64. Буду очень признателен за помощь.
alexloc - 10.04.2012 21:11
[#] Ответ на комментарий от alexloc 10.04.2012 21:11
Хм, если загрузить отдельно bordeaux-threads и проверить есть ли в этом пакете такая функция?

archimag - 10.04.2012 22:06
[#] Ответ на комментарий от alexloc 10.04.2012 21:11
вроде работает:

lithp - 11.04.2012 00:52
[#] Ответ на комментарий от lithp 11.04.2012 00:52

; SLIME 2012-04-07
CL-USER> (ql:quickload "restas")
To load "restas":
 Load 1 ASDF system:
   restas
; Loading "restas"
........
("restas")
CL-USER> (bt:make-thread #'(lambda ()
                             (sleep 1)
                             (format t "Hello from ~A (~A).~%"
                                     (lisp-implementation-type)
                                     (lisp-implementation-version)
)
)

                         :initial-bindings `((*standard-output* . ,*standard-output*))
)

Hello from SBCL (1.0.55).
#<SB-THREAD:THREAD "Anonymous thread" RUNNING {C2FD5A1}>
CL-USER> (restas:define-module #:restas.hello-world
             (:use :cl)
)

#<PACKAGE "RESTAS.HELLO-WORLD">
CL-USER> (in-package #:restas.hello-world)
#<PACKAGE "RESTAS.HELLO-WORLD">
HELLO-WORLD> (restas:define-route main ("")
               "<h1>Hello world!</h1>"
)

; No value
HELLO-WORLD> (restas:start '#:restas.hello-world :port 8080)
; No value
HELLO-WORLD>
lithp - 11.04.2012 00:53
[#] Ответ на комментарий от alexloc 10.04.2012 21:11
если стоит debian-based дистрибутив, убедись, что не устaнoвлено никаких пакетов из репозитария. Только из Quicklisp.
lithp - 11.04.2012 00:56
[#] Ответ на комментарий от lithp 11.04.2012 00:56
Также проверь, что твоя версия SBCL поддерживает треды  (все последние версии на линукс используют треды по умолчанию):

HELLO-WORLD> (find :sb-thread *features*)
:SB-THREAD

lithp - 11.04.2012 01:00
[#] Ответ на комментарий от lithp 11.04.2012 01:00
Судя по твоему трейсу треды поддерживаются.
lithp - 11.04.2012 01:08
[#] Ответ на комментарий от lithp 11.04.2012 01:08
Огромное спасибо за ответ.
1. Никаких пакетов из репозиториев, только quicklisp
2. Треды в 64-битных системах SBCL устанавливает по дефолту (" :SB-THREAD
      Native threads. Enabled by default on x86[-64] Linux only")
3.; SLIME 2012-04-07
CL-USER> (ql:quickload "restas")
To load "restas":
  Load 1 ASDF system:
    restas
; Loading "restas"
........
("restas")
CL-USER> (bt:make-thread #'(lambda ()
                             (sleep 1)
                             (format t "Hello from ~A (~A).~%"
                                     (lisp-implementation-type)
                                     (lisp-implementation-version)))
                         :initial-bindings `((*standard-output* . ,*standard-output*)))

; in:
;      BORDEAUX-THREADS:MAKE-THREAD #'(LAMBDA ()
;                                   (SLEEP 1)
;                                   (FORMAT T "Hello from ~A (~A).~%"
;                                           (LISP-IMPLEMENTATION-TYPE)
;                                           (LISP-IMPLEMENTATION-VERSION)))
;     (BORDEAUX-THREADS:MAKE-THREAD
;      #'(LAMBDA ()
;          (SLEEP 1)
;          (FORMAT T "Hello from ~A (~A).~%" (LISP-IMPLEMENTATION-TYPE)
;                  (LISP-IMPLEMENTATION-VERSION)))
;      :INITIAL-BINDINGS `((*STANDARD-OUTPUT* ,@*STANDARD-OUTPUT*)))
; caught STYLE-WARNING:
;   undefined function: BORDEAUX-THREADS:MAKE-THREAD
; compilation unit finished
;   Undefined function:
;     BORDEAUX-THREADS:MAKE-THREAD
;   caught 1 STYLE-WARNING condition
; Evaluation aborted on #<UNDEFINED-FUNCTION MAKE-THREAD {1005C324C3}>.

4. Это сообщение стало вылезать после вчерашнего обновления (ql:update-all-dists).
Эх, а я уже губу раскатал заюзать restas...:(   


alexloc - 11.04.2012 12:14
[#] Ответ на комментарий от alexloc 11.04.2012 12:14
Поскольку quicklisp я не использую, то понять что происходит тяжело. Есть предложение поставить bordeaux-threads "вручную", без quicklisp.
archimag - 11.04.2012 12:26
[#] Ответ на комментарий от alexloc 11.04.2012 12:14
какая-то непонятная хрень...

Попробуй снести текущую установку quicklisp:

mv $HOME/quicklisp $HOME/quicklisp_bak

И поставь все заново. Занимaет это дело всего пару минут.
lithp - 11.04.2012 13:06
[#] Ответ на комментарий от lithp 11.04.2012 13:06
> Это сообщение стало вылезать после вчерашнего обновления (ql:update-all-dists).
Эх, а я уже губу раскатал заюзать restas...:(  

Зак рекомендует обновлять quicklisp так:

(ql:update-dist "quicklisp")

может проблема в этом.
lithp - 11.04.2012 13:08
[#] Ответ на комментарий от lithp 11.04.2012 13:08
желательно перед установкой свежего quicklisp почистить кэш:

rm -rf ~/.cache/common-lisp/*
lithp - 11.04.2012 13:17
[#] Ответ на комментарий от lithp 11.04.2012 13:17
Точно, проблема была с quicklisp-ом (http://blog.quicklisp.org/2012/03/march-bugfix-update.html)

>(ql:update-dist "quicklisp"может проблема в этом.
Именно в этом!

Спасибо за поддержку !:)  

alexloc - 11.04.2012 14:16
@2009-2010 lisper.ru