Unable to run Gendl after installing to home directory using Quicklisp
Created by: ackalker
Using SBCL 1.2.7 (out today, yay!) on Arch Linux, I've managed to install Gendl using Quicklisp (version 2014-12-17, which is installed in my home directory under ~/quicklisp
).
However, I am getting an error when I try to start it.
The steps I've taken come directly from README.md
:
(ql:quickload :gendl)
(gendl:start-gendl!)
The first step installs gendl without any apparent problems, but evaluating (gendl:start-gendl!)
signals the following error:
The value NIL
is not of type
(OR (VECTOR CHARACTER) (VECTOR NIL) BASE-STRING PATHNAME
STREAM).
[Condition of type TYPE-ERROR]
Restarts:
0: [RETRY] Retry SLY mREPL evaluation request.
1: [*ABORT] Return to SLY's top level.
2: [ABORT] Abort thread (#<THREAD "sly-channel-1-mrepl-remote-1" RUNNING {1005A92A23}>)
Backtrace:
0: (OPEN NIL) [more,optional]
1: (GENDL::QUICKLISP-COPYRIGHT-STRING)
2: (GENDL::STARTUP-BANNER)
3: (START-GENDL! :FEATURES NIL :BANNER? T :INIT-FILES? T)
4: (SB-INT:SIMPLE-EVAL-IN-LEXENV (START-GENDL!) #<NULL-LEXENV>)
5: (EVAL (START-GENDL!))
[...]
As far as I can tell, my Quicklisp installation is working well, i.e. I can use (ql:quickload :something)
to install other libraries just fine.
EDIT:
From poking around in the debugger, it appears that the form which signals the error is in ~/quicklisp/dists/quicklisp/software/gendl-20141217-git/base/source/start.lisp
:
(with-open-file (in (or (probe-file
(merge-pathnames "quicklisp/dists/quicklisp/distinfo.txt"
glisp:*gdl-home*))
(probe-file
(merge-pathnames "quicklisp/dists/quicklisp/distinfo.txt"
glisp:*genworks-source-home*))))
(read-line in)
(string-trim (list #\space) (second (glisp:split-regexp ":" (read-line in)))))
Evaluating some tests in this frame, i find that both probe-file
forms evaluate to NIL. Looking a bit closer to find out why, I find:
(merge-pathnames "quicklisp/dists/quicklisp/distinfo.txt"
glisp:*gdl-home*)
;; => #P"/usr/lib/quicklisp/dists/quicklisp/distinfo.txt"
This file does not exist (I'm not installing system-wide).
(merge-pathnames "quicklisp/dists/quicklisp/distinfo.txt"
glisp:*genworks-source-home*)
;; => #P"/home/miki/quicklisp/dists/quicklisp/software/quicklisp/dists/quicklisp/distinfo.txt"
Finally, glisp:*genworks-source-home*
is bound to: #P"/home/miki/quicklisp/dists/quicklisp/software/"
.
Ah, here is where the problem appears to be: the pathnames don't merge correctly :-)
Imported comments:
By ackalker on 2015-01-01 14:42:14 UTC
Quick hackedyhack fix, replace:
(merge-pathnames "quicklisp/dists/quicklisp/distinfo.txt"
glisp:*genworks-source-home*)
with
(merge-pathnames "../distinfo.txt"
glisp:*genworks-source-home*)
and recompile. This made the simple test of visiting http://localhost:9000/tasty work for me.
Happy New Year!
By genworks on 2015-01-15 01:03:00 UTC
Dear ackalker,
Thank you for looking into this! A similar fix to yours has been pushed and should get picked up in the next Quicklisp.
Thanks again,
The Gendl team
By ackalker on 2015-01-15 04:28:13 UTC
You're welcome :-)