[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