[asdf-devel] [Sbcl-help] cl-fad, sb-grovel and failure to compile constants.lisp-temp

Nikodemus Siivola nikodemus at random-state.net
Wed Aug 18 13:41:50 UTC 2010


On 18 August 2010 14:49, James Fleming <lisp at electronic-quill.net> wrote:
> The very short version of the question: what changed between 1.0.39 and
> 1.0.40, regarding the expected locations of source files, and when/how
> they're expected to be copied there during asdf::perform operations?

ASDF version supplied with SBCL changing is the probable culprit for
at least some of this -- adding asdf-devel to CC.

(It seems the NEWS entry for ASDF2 was forgotten, oops...)

However, this bit right here

> ; compiling file
> "/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-grovel/def-to-lisp.lisp" (written 15

indicates that something else is wrong too: loading SB-GROVEL should
not cause it to be compiled. If your ASDF-LOAD uses :FORCE, that's a
the obvious reason, but if not I suspect something funny is going on
with timestamps on those files since ASDF feels the need to recompile
them.

Cheers,

 -- Nikodemus

> The context: I'm writing a wiki (yes, yet another one), and its back-end
> consists of plain-text files while I get to grips with writing a parser.
>
> The text-file wrangling calls on cl-fad, which uses sb-posix, which in
> turn makes use of sb-grovel.
> Somewhere between 1.0.39 and 1.0.40, a change was made that broke
> sb-posix, at least on the two machines I use - both run 64-bit Linux, one
> on AMD and one on Intel.
>
> The symptom: sb-grovel's def-to-lisp fails to compile at line 244, where
> it tries to evaluate (compile-file tmp-constants :output-file output-file)
> after defining 'tmp-constants in this manner:
> (let ((tmp-constants (merge-pathnames #p"constants.lisp-temp"
>                                         real-output-file)))
>
> It seems to come down to where source-files are expected to be, i.e. the
> ~/.cache tree, and how they're copied there. The problem can be reproduced
> on cue by invoking (asdf:oos 'asdf:load-op :sb-posix). This appears as
> (asdf-load :sb-posix) below because I'm a lazy git and defined that
> abbreviation in my .sbclrc.
>
> I've been trying to follow along in the source-code, and the nearest
> relevant changes appear to be in contrib/asdf/asdf.lisp, but my thinking
> has been addled by a nasty head-cold. Could somebody please give me a
> pointer to what I need to look at next? What have I missed? Help!
>
>
> Thanks in advance for any useful tips,
> James
>
>
> P.S. For those who'd like to see exactly what happens, a bleeding great
> copy-and-paste follows...
>
> * (asdf-load :sb-posix)
>
> ; compiling file
> "/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-grovel/def-to-lisp.lisp" (written 15
> AUG 2010 07:51:57 PM):
> ; compiling (IN-PACKAGE #:SB-GROVEL)
> ; compiling (DEFVAR *DEFAULT-C-STREAM* ...)
> ; compiling (DEFUN ESCAPE-FOR-STRING ...)
> ; compiling (DEFUN SPLIT-CFLAGS ...)
> ; compiling (DEFUN C-ESCAPE ...)
> ; compiling (DEFUN AS-C ...)
> ; compiling (DEFUN PRINTF ...)
> ; compiling (DEFUN C-FOR-ENUM ...)
> ; compiling (DEFUN C-FOR-STRUCTURE ...)
> ; compiling (DEFUN PRINT-C-SOURCE ...)
> ; compiling (DEFUN C-CONSTANTS-EXTRACT ...)
> ; compiling (DEFCLASS GROVEL-CONSTANTS-FILE ...)
> ; compiling (DEFINE-CONDITION C-COMPILE-FAILED ...)
> ; compiling (DEFINE-CONDITION A-DOT-OUT-FAILED ...)
> ; compiling (DEFMETHOD PERFORM ...)
>
> ;
> /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-grovel/ASDF-TMP-def-to-lisp.fasl
> written
> ; compilation finished in 0:00:00.558
> (/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp
>  /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.fasl
>  /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.fasl
>  /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/foo.c
>  /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/a.out
>  /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp)
>
> debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread #<THREAD
>                                                           "initial
> thread" RUNNING
>                                                           {1002AC20A1}>:
>  failed to find the TRUENAME of
> /home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp:
>    No such file or directory
>
> Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>  0: [TRY-RECOMPILING] Try recompiling constants
>  1: [RETRY          ] Retry performing #<ASDF:COMPILE-OP NIL
> {1003B23C31}> on
>                       #<SB-GROVEL:GROVEL-CONSTANTS-FILE
>                         "sb-posix" "constants">.
>  2: [ACCEPT         ] Continue, treating #<ASDF:COMPILE-OP NIL {1003B23C31}>
>                       on
>                       #<SB-GROVEL:GROVEL-CONSTANTS-FILE
>                         "sb-posix" "constants">
>                       as having been successful.
>  3: [ABORT          ] Exit debugger, returning to top level.
>
> (SB-IMPL::SIMPLE-FILE-PERROR
>  "failed to find the TRUENAME of ~A"
>  #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp"
>  2)
> 0] backtrace
>
> 0: (SB-IMPL::SIMPLE-FILE-PERROR
>    "failed to find the TRUENAME of ~A"
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp"
>    2)
> 1: ((FLET SB-IMPL::FAIL)
>    "failed to find the TRUENAME of ~A"
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp"
>    2)
> 2: (SB-IMPL::QUERY-FILE-SYSTEM
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp"
>    :TRUENAME
>    T)
> 3: (TRUENAME
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp")
> 4: ((FLET SB-C::TRY-WITH-TYPE)
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp"
>    "lisp"
>    T)
> 5: (SB-C::VERIFY-SOURCE-FILE
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp")
> 6: (SB-C::VERIFY-SOURCE-FILE
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp")[:EXTERNAL]
> 7: (COMPILE-FILE
>    #P"/home/james/.cache/common-lisp/sbcl-1.0.41-linux-x86-64/opt/pkgs/sbcl-1.0.41/lib/sbcl/sb-posix/constants.lisp-temp")[:EXTERNAL]
> 8: ((SB-PCL::FAST-METHOD ASDF:PERFORM
>     (ASDF:COMPILE-OP SB-GROVEL:GROVEL-CONSTANTS-FILE))
>    #<unavailable argument>
>    #<unavailable argument>
>    #<ASDF:COMPILE-OP NIL {1003B23C31}>
>    #<SB-GROVEL:GROVEL-CONSTANTS-FILE "sb-posix" "constants">)
> 9: ((LAMBDA
>        (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0.
>         SB-PCL::.ARG1.))
>    #<unavailable argument>
>    #<unavailable argument>
>    #<ASDF:COMPILE-OP NIL {1003B23C31}>
>    #<SB-GROVEL:GROVEL-CONSTANTS-FILE "sb-posix" "constants">)
> 10: ((SB-PCL::FAST-METHOD ASDF::PERFORM-WITH-RESTARTS
>      (ASDF:COMPILE-OP ASDF:CL-SOURCE-FILE))
>     #<unavailable argument>
>     #S(SB-PCL::FAST-METHOD-CALL
>        :FUNCTION #<FUNCTION #>
>        :PV NIL
>        :NEXT-METHOD-CALL NIL
>        :ARG-INFO (2))
>     #<ASDF:COMPILE-OP NIL {1003B23C31}>
>     #<SB-GROVEL:GROVEL-CONSTANTS-FILE "sb-posix" "constants">)
> 11: ((LAMBDA ()))
> 12: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK))
> 13: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-RECURSIVE-LOCK]324))
> 14: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK
>     #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK) {7FFFF79AB6C9}>
>     #S(SB-THREAD:MUTEX
>        :NAME "World Lock"
>        :%OWNER #<SB-THREAD:THREAD "initial thread" RUNNING {1002AC20A1}>
>        :STATE 1))
> 15: ((FLET SB-C::WITH-IT))
> 16: ((SB-PCL::FAST-METHOD ASDF:OPERATE (T T))
>     #<unavailable argument>
>     #<unavailable argument>
>     ASDF:LOAD-OP
>     :SB-POSIX)[:EXTERNAL]
> 17: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF-LOAD :SB-POSIX) #<NULL-LEXENV>)
> 18: (INTERACTIVE-EVAL (ASDF-LOAD :SB-POSIX))[:EXTERNAL]
> 19: (SB-IMPL::REPL-FUN NIL)
> 20: ((LAMBDA ()))
> 21: (SB-IMPL::%WITH-REBOUND-IO-SYNTAX #<CLOSURE (LAMBDA #) {1002EBD309}>)
> 22: (SB-IMPL::TOPLEVEL-REPL NIL)
> 23: (SB-IMPL::TOPLEVEL-INIT)
> 24: ((LABELS SB-IMPL::RESTART-LISP))
>
> 0]
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
>
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> Sbcl-help mailing list
> Sbcl-help at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sbcl-help
>




More information about the asdf-devel mailing list