Проблема с установкой
Итак, у меня стояло 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?
[#]
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")
[#]
Лучше не стало, но подозреваю, что чего-то не хватает. Как отслеживаешь зависимости? RESTAS кроме hunchentoot также требует мои cl-rotues (требуемые для него пакеты указаны по ссылке) и garbage-pools. Тоже самое возможно и с bordeaux-threads. Для Kubuntu возможно наиболее простой способ установки, это использовать clbuild, для которого есть мой форк содержащий мои пакеты: http://github.com/archimag/clbuild-archimag