monolithic-concatenate-source-op misses a few dependencies
Robert Goldman
rpgoldman at sift.info
Sat Oct 14 17:17:58 UTC 2017
Will you please clarify for my benefit, since I don't actually use any
of the image operations.
Is the problem that somewhere in the process of loading Postmodern, or
one of its dependencies, some bit of code invokes `REQUIRE`? Or is this
an issue with ASDF's `REQUIRE-SYSTEM`.
If it's the former, then I believe this is simply a bad implementation
in the relevant system.
If it's the latter, we should do something about it. However, I believe
that `REQUIRE-SYSTEM`, despite its name, doesn't actually use `REQUIRE`,
instead it "acts like `require`."
Thanks,
R
On 14 Oct 2017, at 11:45, Faré wrote:
> Dear Ben,
>
> sorry I won't be developing this feature, but I'll happily merge your
> patch if you do. "Just" add support for dumping source code for a
> (:require ...) dependency.
>
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics•
> http://fare.tunes.org
> Guns & bullets don't kill people — blood loss and organ damage kills
> people.
>
>
> On Thu, Oct 12, 2017 at 4:07 PM, Ben Vulpes <benv at mavn.is> wrote:
>> 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=683edf0f131a4ebe172b44425f597d7f67656e70;hb=HEAD#l16
>> ).
>>
>> Loading is resolved by requiring both libraries in question, as:
>>
>> sbcl --eval "(require :md5)" --eval "(require :usocket)" --load
>> build/full-concatenation.lisp
>>
>> Yours,
>> Benjamin
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20171014/c1108322/attachment.html>
More information about the asdf-devel
mailing list