lem-project/lem

Unknown &KEY argument: :LOCAL-NICKNAMES when installing

Xephobia opened this issue · 5 comments

system : Gentoo Linux
SBCL version : 2.4.3, using the system's version in roswell

When launching ros follow-dependency=t install lem-project/lem or any make targets, I get this error :

Unhandled SB-EXT:UNKNOWN-KEYWORD-ARGUMENT in thread #<SB-THREAD:THREAD tid=9940 "main thread" RUNNING
                                                       {1003F78003}>:
  Unknown &KEY argument: :LOCAL-NICKNAMES

here's the full backtrace :

Backtrace for: #<SB-THREAD:THREAD tid=9940 "main thread" RUNNING {1003F78003}>
0: (UIOP/PACKAGE:ENSURE-PACKAGE #:QLOT/SOURCE :NICKNAMES NIL :DOCUMENTATION NIL :USE (#:QLOT/SOURCE/BASE #:QLOT/SOURCE/QL #:QLOT/SOURCE/GIT #:QLOT/SOURCE/HTTP #:QLOT/SOURCE/GITHUB #:QLOT/SOURCE/DIST #:QLOT/SOURCE/ULTRALISP #:QLOT/SOURCE/LOCAL) :SHADOW NIL :SHADOWING-IMPORT-FROM NIL :IMPORT-FROM NIL :EXPORT NIL :INTERN NIL :RECYCLE (#:QLOT/SOURCE) :MIX NIL :REEXPORT (#:QLOT/SOURCE/BASE #:QLOT/SOURCE/QL #:QLOT/SOURCE/GIT #:QLOT/SOURCE/HTTP #:QLOT/SOURCE/GITHUB #:QLOT/SOURCE/DIST #:QLOT/SOURCE/ULTRALISP #:QLOT/SOURCE/LOCAL) :UNINTERN NIL :LOCAL-NICKNAMES NIL) [more]
1: ("top level form") [toplevel]
2: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file /home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" {10034DD2F3}> :TABLE #(56 #1="/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.lisp" "QLOT/SOURCE" #2="top level form" #<PACKAGE "ROS.SCRIPT.INSTALL.3671936092"> #(12 79 0 6 71 30 69 21 70 10 0 0 ...) #() #<PACKAGE "SB-INT"> SB-INT:SFUNCTION CONS (SB-INT:SFUNCTION NIL CONS) #<SB-KERNEL:LAYOUT (ID=-53) for SB-C::COMPILED-DEBUG-INFO {50901543}> ...) :STACK #(0 #<FUNCTION #2# {1003424A0B}> :NICKNAMES :DOCUMENTATION :USE (#:QLOT/SOURCE/BASE #:QLOT/SOURCE/QL #:QLOT/SOURCE/GIT #:QLOT/SOURCE/HTTP #:QLOT/SOURCE/GITHUB #:QLOT/SOURCE/DIST #:QLOT/SOURCE/ULTRALISP #:QLOT/SOURCE/LOCAL) :SHADOW :SHADOWING-IMPORT-FROM :IMPORT-FROM :EXPORT :INTERN :RECYCLE ...) :NAME-BUFFER #("QLOT/SOURCE/LOCALLISP" "ENSURE-PACKAGECKAGEOM") :PRINT NIL :PARTIAL-SOURCE-INFO #S(SB-C::DEBUG-SOURCE :NAMESTRING #1# :CREATED 3906596906 :START-POSITIONS NIL :PLIST NIL)))
3: ((LAMBDA NIL :IN SB-FASL::LOAD-AS-FASL))
4: (SB-IMPL::CALL-WITH-LOADER-PACKAGE-NAMES #<FUNCTION (LAMBDA NIL :IN SB-FASL::LOAD-AS-FASL) {100350F52B}>)
5: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" {10034DD2F3}> NIL NIL)
6: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-SYS:FD-STREAM for "file /home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" {10034DD2F3}> T)
7: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7FBFC279DAFB}> #<SB-SYS:FD-STREAM for "file /home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" {10034DD2F3}> T #<SB-SYS:FD-STREAM for "file /home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" {10034DD2F3}>)
8: (LOAD #P"/home/gnuwu/.cache/common-lisp/sbcl-2.4.8-linux-x64/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/source.fasl" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST :ERROR :EXTERNAL-FORMAT :DEFAULT)
9: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<FUNCTION (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {10034D794B}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
10: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "qlot/source" "lisp">)
11: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
12: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "qlot/source" "lisp">) [fast-method]
13: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "qlot/source" "lisp">) [fast-method]
14: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {10030A1CD3}>) [fast-method]
15: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
16: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {10030A1CD3}>) [fast-method]
17: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "qlot/install"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
18: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "qlot/install">)
19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
20: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM "qlot/install">) [fast-method]
21: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP :QLOT/INSTALL)
22: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
23: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :QLOT/INSTALL) [fast-method]
24: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1003089D6B}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
25: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
26: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1003078B4B}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
27: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :QLOT/INSTALL) [fast-method]
28: (ASDF/OPERATE:LOAD-SYSTEM :QLOT/INSTALL)
29: (QLOT/CLI:INSTALL NIL :INSTALL-DEPS NIL)
30: (QLOT-COMMAND "install" "--no-deps")
31: (SB-INT:SIMPLE-EVAL-IN-LEXENV (APPLY (QUOTE MAIN) ROSWELL:*ARGV*) #<NULL-LEXENV>)
32: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) #<NULL-LEXENV>)
33: (SB-EXT:EVAL-TLF (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL NIL)
34: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ROSWELL:QUIT (APPLY (QUOTE MAIN) ROSWELL:*ARGV*)) NIL)
35: (SB-INT:LOAD-AS-SOURCE #<CONCATENATED-STREAM :STREAMS NIL {1002255903}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
36: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<CONCATENATED-STREAM :STREAMS NIL {1002255903}> NIL)
37: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7FBFC279F5DB}> #<CONCATENATED-STREAM :STREAMS NIL {1002255903}> NIL #<CONCATENATED-STREAM :STREAMS NIL {1002255903}>)
38: (LOAD #<CONCATENATED-STREAM :STREAMS NIL {1002255903}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST :ERROR :EXTERNAL-FORMAT :DEFAULT)
39: ((FLET ROSWELL::BODY :IN ROSWELL:SCRIPT) #<SB-SYS:FD-STREAM for "file /home/gnuwu/.roswell/bin/qlot" {1002252B03}>)
40: (ROSWELL:SCRIPT "/home/gnuwu/.roswell/bin//qlot" "install" "--no-deps")
41: (ROSWELL:RUN ((:EVAL "(ros:quicklisp)") (:SCRIPT "/home/gnuwu/.roswell/bin//qlot" "install" "--no-deps") (:QUIT NIL)))
42: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "/home/gnuwu/.roswell/bin//qlot" "install" "--no-deps") (:QUIT NIL)))) #<NULL-LEXENV>)
43: (EVAL (ROSWELL:RUN (QUOTE ((:EVAL "(ros:quicklisp)") (:SCRIPT "/home/gnuwu/.roswell/bin//qlot" "install" "--no-deps") (:QUIT NIL)))))
44: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(progn #-ros.init(cl:load \"/etc/roswell/init.lisp\"))") (:EVAL . "(ros:run '((:eval\"(ros:quicklisp)\")(:script \"/home/gnuwu/.roswell/bin//qlot\"\"install\"\"--no-deps\")(:quit ())))")))
45: (SB-IMPL::TOPLEVEL-INIT)
46: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
47: ((FLET "WITHOUT-INTERRUPTS-BODY-3" :IN SB-IMPL::START-LISP))
48: (SB-IMPL::%START-LISP)

That's probably an old ASDF version.

To check:

$ rlwrap sbcl
CL-USER> (asdf:asdf-version)

it should be >= 3.3.4

To upgrade it, a one liner:

( cd ~/common-lisp/ && wget https://asdf.common-lisp.dev/archives/asdf-3.3.5.tar.gz  && tar -xvf asdf-3.3.5.tar.gz && mv asdf-3.3.5 asdf )

but this will likely not change the roswell one, I'd re-try the install with the make commands.

My system's asdf is 3.3.5 according to my package manager. It's also the same version when checking using the SBCL REPL inside ros:

$ ros run
* (asdf:asdf-version)
"3.3.5"

Strangely, I cannot tell ros to use the system's asdf, even if it seems to already be using it :

$ ros use asdf/system
Unhandled SIMPLE-ERROR in thread #<SB-THREAD:THREAD tid=11782 "main thread" RUNNING
                                    {1001870003}>:
  system not installed

When I install it using ros install asdf, I get another error :

$ ros install lem-project/lem
Installing from github lem-project/lem
Installing Quicklisp to /home/gnuwu/.roswell/local-projects/lem-project/lem/.qlot/...
Unhandled QLOT/UTILS/SHELL:SHELL-COMMAND-ERROR in thread #<SB-THREAD:THREAD tid=12213 "main thread" RUNNING
                                                            {1000BA80A3}>:
  Error while executing a shell command: "/usr/bin/ros" "+Q" "-e" "(require 'asdf)" "-e" "(setf *debugger-hook* (lambda (c parent) (declare (ignore parent)) (format *error-output* \"~&Error: ~A~%\" c) (uiop/image:quit -1)))" "-e" "(setf asdf/source-registry:*default-source-registries* (quote (asdf/source-registry:environment-source-registry asdf/source-registry:system-source-registry asdf/source-registry:system-source-registry-directory)))" "-e" "(let ((*standard-output* (make-broadcast-stream))) (load #P\"/home/gnuwu/.roswell/lisp/quicklisp/dists/quicklisp/software/qlot-20231021-git/quicklisp/quicklisp-installer.lisp\"))" "-e" "(setf quicklisp-quickstart:*after-initial-setup-message* \"\")" "-e" "(let ((*standard-output* (make-broadcast-stream)) (*trace-output* (make-broadcast-stream))) (quicklisp-quickstart:install :path #P\"/home/gnuwu/.roswell/local-projects/lem-project/lem/.qlot/\"))" (Code=1)

  fatal error encountered in SBCL pid 12219 tid 12219:
core was built for runtime "cc21d1f9ffa7-root-2024-08-30-02-11-47" but this is "localhost-portage-2024-05-20-21-27-02"

Using roswell's SBCL with ros use sbcl, I again get another unrelated error :

$ ros install lem-project/lem
Installing from github lem-project/lem
[1/3] System 'lem' found. Loading the system..
While evaluating the form starting at line 1, column 0
  of #P"/home/gnuwu/.roswell/local-projects/lem-project/lem/lem.asd":Aborted during step [1/3].
Unhandled LOAD-SYSTEM-DEFINITION-ERROR in thread #<SB-THREAD:THREAD tid=12432 "main thread" RUNNING {1003F78003}>: Error while trying to load definition for system lem from pathname /home/gnuwu/.roswell/local-projects/lem-project/lem/lem.asd: Couldn't load #P"/home/gnuwu/.roswell/local-projects/lem-project/lem/.qlot/setup.lisp": file does not exist.

ACK. mmm… if I were you I would focus on the make targets, and leave out Roswell for now. It shouldn't be needed (the installation are not using it anymore).

This is the buggy line, it's well and confirmed a miss of asdf.

(UIOP/PACKAGE:ENSURE-PACKAGE
 #:QLOT/SOURCE :NICKNAMES NIL :DOCUMENTATION NIL :USE (#:QLOT/SOURCE/BASE #:QLOT/SOURCE/QL #:QLOT/SOURCE/GIT #:QLOT/SOURCE/HTTP #:QLOT/SOURCE/GITHUB #:QLOT/SOURCE/DIST #:QLOT/SOURCE/ULTRALISP #:QLOT/SOURCE/LOCAL)
               :SHADOW NIL :SHADOWING-IMPORT-FROM NIL :IMPORT-FROM NIL :EXPORT NIL :INTERN NIL :RECYCLE (#:QLOT/SOURCE)
               :MIX NIL :REEXPORT (#:QLOT/SOURCE/BASE #:QLOT/SOURCE/QL #:QLOT/SOURCE/GIT #:QLOT/SOURCE/HTTP #:QLOT/SOURCE/GITHUB #:QLOT/SOURCE/DIST #:QLOT/SOURCE/ULTRALISP #:QLOT/SOURCE/LOCAL)
               :UNINTERN NIL :LOCAL-NICKNAMES NIL)

If I go to the function definition, the argument is there on my side.

  (defun ensure-package (name &key
                                nicknames documentation use
                                shadow shadowing-import-from
                                import-from export intern
                                recycle mix reexport
                                unintern local-nicknames)

3.3.5 according to my package manager.

How did you install asdf?

Did you try my one-liner to install-update it? It may work…

I'm not sure, I'm trying to help in the void.

any make target produces the same error after your one liner that I got after I install asdf using roswell. asdf is a dependency of sbcl in Gentoo, so it is automatically installed.

Hi, it seems to have been a compatibility problem between roswell's SBCL and the system one. The make targets worked when deleting the ~/.roswell directory, running roswell's setup with the system's SBCL (ros lisp=sbcl-bin/system setup)