quil-lang / quilc

The optimizing Quil compiler.
Apache License 2.0
457 stars 72 forks source link

Error when building: The loader tried loading the symbol named QUICKLOAD into the package named QUICKLISP-CLIENT, but the package did not get defined, and does not exist. #917

Closed notmgsk closed 5 months ago

notmgsk commented 7 months ago

With master for all of quilc, qvm, and magicl, running make cleanall && make clean in quilc produces the following error

Unhandled SB-KERNEL:SIMPLE-PACKAGE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                      {100E9B8073}>:
  The loader tried loading the symbol named QUICKLOAD into the package named QUICKLISP-CLIENT, but the package did not get defined, and does not exist.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {100E9B8073}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The loader tried loading the symbol named ~a into the package named ~a, but the package did not get defined, and does not exist." {100410D1B3}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK SB-EXT:*INVOKE-DEBUGGER-HOOK* #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The loader tried loading the symbol named ~a into the package named ~a, but the package did not get defined, and does not exist." {100410D1B3}>)
2: (INVOKE-DEBUGGER #<SB-KERNEL:SIMPLE-PACKAGE-ERROR "The loader tried loading the symbol named ~a into the package named ~a, but the package did not get defined, and does not exist." {100410D1B3}>)
3: (ERROR SB-KERNEL:SIMPLE-PACKAGE-ERROR :FORMAT-CONTROL "The loader tried loading the symbol named ~a into the package named ~a, but the package did not get defined, and does not exist." :FORMAT-ARGUMENTS ("QUICKLOAD" "QUICKLISP-CLIENT"))
4: (SB-IMPL::CALL-WITH-DEFERRED-PACKAGE-NAMES #<FUNCTION (LAMBDA NIL :IN SB-FASL::LOAD-AS-FASL) {1003A1EEBB}>)
5: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /home/mgsk/.cache/common-lisp/sbcl-2.2.4-linux-x64/home/mgsk/quicklisp/dists/quicklisp/software/tfeb-lisp-hax-20231021-git/abstract-classes.fasl" {1003A1B1A3}> NIL NIL)
6: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-SYS:FD-STREAM for "file /home/mgsk/.cache/common-lisp/sbcl-2.2.4-linux-x64/home/mgsk/quicklisp/dists/quicklisp/software/tfeb-lisp-hax-20231021-git/abstract-classes.fasl" {1003A1B1A3}> T)
7: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7F3D9547E01B}> #<SB-SYS:FD-STREAM for "file /home/mgsk/.cache/common-lisp/sbcl-2.2.4-linux-x64/home/mgsk/quicklisp/dists/quicklisp/software/tfeb-lisp-hax-20231021-git/abstract-classes.fasl" {1003A1B1A3}> T #<SB-SYS:FD-STREAM for "file /home/mgsk/.cache/common-lisp/sbcl-2.2.4-linux-x64/home/mgsk/quicklisp/dists/quicklisp/software/tfeb-lisp-hax-20231021-git/abstract-classes.fasl" {1003A1B1A3}>)
8: (LOAD #P"/home/mgsk/.cache/common-lisp/sbcl-2.2.4-linux-x64/home/mgsk/quicklisp/dists/quicklisp/software/tfeb-lisp-hax-20231021-git/abstract-classes.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*) {1003A1A9DB}> ("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 "org.tfeb.hax.abstract-classes" "abstract-classes">)
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 "org.tfeb.hax.abstract-classes" "abstract-classes">) [fast-method]
13: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "org.tfeb.hax.abstract-classes" "abstract-classes">) [fast-method]
14: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1004D53F63}>) [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 {1004D53F63}>) [fast-method]
17: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "quilc"> :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/SYSTEM:SYSTEM "quilc">)
19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
20: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "quilc">) [fast-method]
21: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP "quilc")
22: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
23: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP "quilc") [fast-method]
24: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<FUNCTION (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {10045B4C2B}> :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) {100317684B}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
27: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP "quilc") [fast-method]
28: (ASDF/OPERATE:LOAD-SYSTEM "quilc")
29: ((LAMBDA NIL :IN "/home/mgsk/hackery/lisp/quilc/build-app.lisp"))
30: (SB-INT:SIMPLE-EVAL-IN-LEXENV (LET ((*DEFAULT-PATHNAME-DEFAULTS* (MAKE-PATHNAME :TYPE NIL :NAME NIL :DEFAULTS *LOAD-TRUENAME*)) (COMMON-LISP-USER::OUTPUT-FILE (MAKE-PATHNAME :NAME "quilc" :TYPE NIL)) (COMMON-LISP-USER::SYSTEM-TABLE (MAKE-HASH-TABLE :TEST (QUOTE EQUAL))) (COMMON-LISP-USER::ENTRY-POINT "ENTRY-POINT") (COMMON-LISP-USER::LIBRARIES NIL)) (LABELS ((COMMON-LISP-USER::LOAD-SYSTEMS-TABLE NIL (UNLESS # #) (SETF # #) (WITH-OPEN-FILE # #)) (COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH (COMMON-LISP-USER::NAME) (VALUES #)) (COMMON-LISP-USER::STRIP-VERSION-GITHASH (COMMON-LISP-USER::VERSION) (SUBSEQ COMMON-LISP-USER::VERSION 0 #))) (COMMON-LISP-USER::LOAD-SYSTEMS-TABLE) (PUSH (FUNCTION COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH) ASDF/SYSTEM-REGISTRY:*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*) (LET ((COMMON-LISP-USER::SYSTEMS #)) (DOLIST (COMMON-LISP-USER::SYS #) (UNLESS # #))) (FUNCALL (FIND-SYMBOL "SETUP-DEBUGGER" :QUILC)) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--quilc-sdk") (LOAD "app/src/mangle-shared-objects.lisp")) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--unsafe") (FORMAT T "~&Using unsafe entry point~%") (SETF COMMON-LISP-USER::ENTRY-POINT "%ENTRY-POINT")) (FORCE-OUTPUT) (SETF COMMON-LISP-USER::LIBRARIES (COMMON-LISP-USER::UNLOAD-LIBRARIES)) (SB-EXT:SAVE-LISP-AND-DIE COMMON-LISP-USER::OUTPUT-FILE :COMPRESSION NIL :SAVE-RUNTIME-OPTIONS T :EXECUTABLE T :TOPLEVEL (LET (#) (LAMBDA NIL # #))))) #<NULL-LEXENV>)
31: (SB-EXT:EVAL-TLF (LET ((*DEFAULT-PATHNAME-DEFAULTS* (MAKE-PATHNAME :TYPE NIL :NAME NIL :DEFAULTS *LOAD-TRUENAME*)) (COMMON-LISP-USER::OUTPUT-FILE (MAKE-PATHNAME :NAME "quilc" :TYPE NIL)) (COMMON-LISP-USER::SYSTEM-TABLE (MAKE-HASH-TABLE :TEST (QUOTE EQUAL))) (COMMON-LISP-USER::ENTRY-POINT "ENTRY-POINT") (COMMON-LISP-USER::LIBRARIES NIL)) (LABELS ((COMMON-LISP-USER::LOAD-SYSTEMS-TABLE NIL (UNLESS # #) (SETF # #) (WITH-OPEN-FILE # #)) (COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH (COMMON-LISP-USER::NAME) (VALUES #)) (COMMON-LISP-USER::STRIP-VERSION-GITHASH (COMMON-LISP-USER::VERSION) (SUBSEQ COMMON-LISP-USER::VERSION 0 #))) (COMMON-LISP-USER::LOAD-SYSTEMS-TABLE) (PUSH (FUNCTION COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH) ASDF/SYSTEM-REGISTRY:*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*) (LET ((COMMON-LISP-USER::SYSTEMS #)) (DOLIST (COMMON-LISP-USER::SYS #) (UNLESS # #))) (FUNCALL (FIND-SYMBOL "SETUP-DEBUGGER" :QUILC)) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--quilc-sdk") (LOAD "app/src/mangle-shared-objects.lisp")) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--unsafe") (FORMAT T "~&Using unsafe entry point~%") (SETF COMMON-LISP-USER::ENTRY-POINT "%ENTRY-POINT")) (FORCE-OUTPUT) (SETF COMMON-LISP-USER::LIBRARIES (COMMON-LISP-USER::UNLOAD-LIBRARIES)) (SB-EXT:SAVE-LISP-AND-DIE COMMON-LISP-USER::OUTPUT-FILE :COMPRESSION NIL :SAVE-RUNTIME-OPTIONS T :EXECUTABLE T :TOPLEVEL (LET (#) (LAMBDA NIL # #))))) 5 NIL)
32: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (LET ((*DEFAULT-PATHNAME-DEFAULTS* (MAKE-PATHNAME :TYPE NIL :NAME NIL :DEFAULTS *LOAD-TRUENAME*)) (COMMON-LISP-USER::OUTPUT-FILE (MAKE-PATHNAME :NAME "quilc" :TYPE NIL)) (COMMON-LISP-USER::SYSTEM-TABLE (MAKE-HASH-TABLE :TEST (QUOTE EQUAL))) (COMMON-LISP-USER::ENTRY-POINT "ENTRY-POINT") (COMMON-LISP-USER::LIBRARIES NIL)) (LABELS ((COMMON-LISP-USER::LOAD-SYSTEMS-TABLE NIL (UNLESS # #) (SETF # #) (WITH-OPEN-FILE # #)) (COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH (COMMON-LISP-USER::NAME) (VALUES #)) (COMMON-LISP-USER::STRIP-VERSION-GITHASH (COMMON-LISP-USER::VERSION) (SUBSEQ COMMON-LISP-USER::VERSION 0 #))) (COMMON-LISP-USER::LOAD-SYSTEMS-TABLE) (PUSH (FUNCTION COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH) ASDF/SYSTEM-REGISTRY:*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*) (LET ((COMMON-LISP-USER::SYSTEMS #)) (DOLIST (COMMON-LISP-USER::SYS #) (UNLESS # #))) (FUNCALL (FIND-SYMBOL "SETUP-DEBUGGER" :QUILC)) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--quilc-sdk") (LOAD "app/src/mangle-shared-objects.lisp")) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--unsafe") (FORMAT T "~&Using unsafe entry point~%") (SETF COMMON-LISP-USER::ENTRY-POINT "%ENTRY-POINT")) (FORCE-OUTPUT) (SETF COMMON-LISP-USER::LIBRARIES (COMMON-LISP-USER::UNLOAD-LIBRARIES)) (SB-EXT:SAVE-LISP-AND-DIE COMMON-LISP-USER::OUTPUT-FILE :COMPRESSION NIL :SAVE-RUNTIME-OPTIONS T :EXECUTABLE T :TOPLEVEL (LET (#) (LAMBDA NIL # #))))) 5)
33: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (LET ((*DEFAULT-PATHNAME-DEFAULTS* (MAKE-PATHNAME :TYPE NIL :NAME NIL :DEFAULTS *LOAD-TRUENAME*)) (COMMON-LISP-USER::OUTPUT-FILE (MAKE-PATHNAME :NAME "quilc" :TYPE NIL)) (COMMON-LISP-USER::SYSTEM-TABLE (MAKE-HASH-TABLE :TEST (QUOTE EQUAL))) (COMMON-LISP-USER::ENTRY-POINT "ENTRY-POINT") (COMMON-LISP-USER::LIBRARIES NIL)) (LABELS ((COMMON-LISP-USER::LOAD-SYSTEMS-TABLE NIL (UNLESS # #) (SETF # #) (WITH-OPEN-FILE # #)) (COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH (COMMON-LISP-USER::NAME) (VALUES #)) (COMMON-LISP-USER::STRIP-VERSION-GITHASH (COMMON-LISP-USER::VERSION) (SUBSEQ COMMON-LISP-USER::VERSION 0 #))) (COMMON-LISP-USER::LOAD-SYSTEMS-TABLE) (PUSH (FUNCTION COMMON-LISP-USER::LOCAL-SYSTEM-SEARCH) ASDF/SYSTEM-REGISTRY:*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*) (LET ((COMMON-LISP-USER::SYSTEMS #)) (DOLIST (COMMON-LISP-USER::SYS #) (UNLESS # #))) (FUNCALL (FIND-SYMBOL "SETUP-DEBUGGER" :QUILC)) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--quilc-sdk") (LOAD "app/src/mangle-shared-objects.lisp")) (WHEN (COMMON-LISP-USER::OPTION-PRESENT-P "--unsafe") (FORMAT T "~&Using unsafe entry point~%") (SETF COMMON-LISP-USER::ENTRY-POINT "%ENTRY-POINT")) (FORCE-OUTPUT) (SETF COMMON-LISP-USER::LIBRARIES (COMMON-LISP-USER::UNLOAD-LIBRARIES)) (SB-EXT:SAVE-LISP-AND-DIE COMMON-LISP-USER::OUTPUT-FILE :COMPRESSION NIL :SAVE-RUNTIME-OPTIONS T :EXECUTABLE T :TOPLEVEL (LET (#) (LAMBDA NIL # #))))) :CURRENT-INDEX 5)
34: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {10015DCACB}> #<SB-C::SOURCE-INFO {10015DCA93}> SB-C::INPUT-ERROR-IN-LOAD)
35: (SB-INT:LOAD-AS-SOURCE #<SB-INT:FORM-TRACKING-STREAM for "file /home/mgsk/hackery/lisp/quilc/build-app.lisp" {10015DB4E3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
36: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-INT:FORM-TRACKING-STREAM for "file /home/mgsk/hackery/lisp/quilc/build-app.lisp" {10015DB4E3}> NIL)
37: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7F3D9547F95B}> #<SB-INT:FORM-TRACKING-STREAM for "file /home/mgsk/hackery/lisp/quilc/build-app.lisp" {10015DB4E3}> NIL #<SB-INT:FORM-TRACKING-STREAM for "file /home/mgsk/hackery/lisp/quilc/build-app.lisp" {10015DB4E3}>)
38: (LOAD #P"build-app.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST :ERROR :EXTERNAL-FORMAT :DEFAULT)
39: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(setf sb-ext:\\*on-package-variance\\* '(:warn (:swank :swank-backend :swank-repl) :error t))") (:LOAD . "build-app.lisp") (:QUIT)))
40: (SB-IMPL::TOPLEVEL-INIT)
41: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
42: ((FLET "WITHOUT-INTERRUPTS-BODY-3" :IN SB-IMPL::START-LISP))
43: (SB-IMPL::START-LISP)
ecpeterson commented 7 months ago

When running make, a bit before this ^ error I also see warnings like:

WARNING:
   Duplicate system quilc detected. Preferring /Users/ecpeterson/quicklisp/local-projects/quilc/quilc.asd over /Users/ecpeterson/quicklisp/local-projects/quilc/quilc.asd.

Dunno if it's related, just sharing.

mqmay3 commented 6 months ago

Did you ever resolve this error? I am getting the same error, but I haven't found a solution.

macrologist commented 6 months ago

Sigh. This has to do with a bad idea in the tfeb abstract classes and singleton classes systems.

They are compiling the symbol quicklisp:quickload into the generated fasl file b/c, for some reason, they decided that closer-mop should be loaded via quicklisp outside of the ASDF-managed loading of dependencies.

When the fasl gets loaded by build-app.lisp, quicklisp isn't available and the above error results.

The cleanest fix may be to implement our own abstract and singleton metaclasses instead of relying on external libraries for them. I'll think about it.

macrologist commented 5 months ago

There are now branches in qvm and quilc, both called clos-encounters that use clos-encounters as a home-grown dependency, replacing the offending tfeb systems. This ought to fix the silly build issue.

To compile, you'll need to fetch and checkout the clos-encounters branch of both projecs, and you'll need to clone clos-encounters into your quicklisp/local-projects. I'll await feedback before making PRs to the affected repos.

Long term, however, we may be phasing out the use of these OOPy patterns altogether.

mqmay3 commented 5 months ago

@macrologist Thank you very much for the help! This has resolved the issue, and I now have no issues compiling.