On SBCL 1.3.11, when producing a monolithic source concatenation with the library "Postmodern", asdf produces a file that needs a Lisp image to need manual calls to (require :usocket) and (require :md5) in order to load completely.
Given:
concatenatrix.asd as:
(asdf:defsystem :concatenatrix :build-operation monolithic-concatenate-source-op :build-pathname "build/full-concatenation" :depends-on (:postmodern) :components ((:file "concatenatrix")))
concatenatrix.lisp as:
(defpackage :concatenatrix (:use :cl :postmodern)) (in-package :concatenatrix)
(defun wat (it) (format t "~A~%" it))
Concatenated sources produced with:
(asdf:make :concatenatrix)
Loading tested with:
sbcl --noinform --disable-debugger --load build/full-concatenation.lisp
Produces:
Unhandled SB-C::INPUT-ERROR-IN-LOAD in thread #<SB-THREAD:THREAD "main thread" RUNNING {10027FE873}>: READ error during LOAD:
Package SB-ROTATE-BYTE does not exist.
Line: 221, Column: 29, File-Position: 8706
Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/b/quicklisp/local-projects/concatenatrix/build/full-concatenation.lisp" {1003CFCA03}>
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10027FE873}> 0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #SB-C::INPUT-ERROR-IN-LOAD {1004014AC3} #<unavailable argument>) 1: (SB-DEBUG::RUN-HOOK SB-EXT:*INVOKE-DEBUGGER-HOOK* #<SB-C::INPUT-ERROR-IN-LOAD {1004014AC3}>) 2: (INVOKE-DEBUGGER #<SB-C::INPUT-ERROR-IN-LOAD {1004014AC3}>) 3: (ERROR #<SB-C::INPUT-ERROR-IN-LOAD {1004014AC3}>) 4: (SB-C:COMPILER-ERROR SB-C::INPUT-ERROR-IN-LOAD :CONDITION #<SB-INT:SIMPLE-READER-PACKAGE-ERROR "Package ~A does not exist." {10040149E3}> :STREAM #<SB-INT:FORM-TRACKING-STREAM for "file /home/b/quicklisp/local-projects/concatenatrix/build/full-concatenation.lisp" {1003CFCA03}>) 5: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {1003D004FB}> #<SB-C::SOURCE-INFO {1003D004B3}> SB-C::INPUT-ERROR-IN-LOAD) 6: (SB-INT:LOAD-AS-SOURCE #<SB-INT:FORM-TRACKING-STREAM for "file /home/b/quicklisp/local-projects/concatenatrix/build/full-concatenation.lisp" {1003CFCA03}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading") 7: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-INT:FORM-TRACKING-STREAM for "file /home/b/quicklisp/local-projects/concatenatrix/build/full-concatenation.lisp" {1003CFCA03}> NIL) 8: (LOAD #P"build/full-concatenation.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT) 9: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:LOAD . "build/full-concatenation.lisp"))) 10: (SB-IMPL::TOPLEVEL-INIT) 11: ((FLET #:WITHOUT-INTERRUPTS-BODY-90 :IN SB-EXT:SAVE-LISP-AND-DIE)) 12: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))
There is another complaint about usocket, which is confusing, as cl-postgres explicitly doesn't require usocket on sbcl by my read ( http://marijnhaverbeke.nl/git/?p=postmodern;a=blob;f=cl-postgres.asd;h=683ed... ).
Loading is resolved by requiring both libraries in question, as:
sbcl --eval "(require :md5)" --eval "(require :usocket)" --load build/full-concatenation.lisp
Yours, Benjamin