Didier Verna wrote:
Robert Goldman rpgoldman@sift.info wrote:
Can you get a backtrace from the failed call to delete the directory?
OK. So I restarted ecl -norc and then did a (load ".clrc") with the contents mentioned in my previous message. This is what I get. FWIW, the directory in which UIOP is trying to delete the non-existent asdf.fas file contains 2 files: asdf.o and asdf-ASDF-TMP.fas.
Thanks, Didier. Would you please file a launchpad ticket?
I am afraid I cannot be very helpful in the near future -- my neighborhood lost power last Friday in a storm, so I am having a bit of trouble staying on top of things.
The name of Faré's function (delete-file-if-exists) suggests that Faré expects the deletion to fail gracefully, instead of raising an error. He attempts to catch a FILE-ERROR there. I note that ECL seems to be raising a SIMPLE-ERROR instead of a FILE-ERROR.
The hyperspec states of DELETE-FILE:
If the deletion operation is not successful, an error of type file-error is signaled.
So if ECL is raising a SIMPLE-ERROR instead, that would be a bug in ECL, and not in ASDF.
One thing that seems odd is that it seems ECL is claiming that it's asked to delete a directory, not a file. Can you trap the argument to DELETE-FILE-IF-EXISTS?
Best, r
didier(pts/1)% ecl -norc 14:48 06/24/13 ECL (Embeddable Common-Lisp) 12.7.1 (git:52ca46e054d72cb0b0802e376890fcfbdfc96e5a) Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya Copyright (C) 1993 Giuseppe Attardi Copyright (C) 2000 Juan J. Garcia-Ripoll ECL is free software, and you are welcome to redistribute it under certain conditions; see file 'Copyright' for details. Type :h for Help. Top level in: #<process TOP-LEVEL>.
(load ".clrc")
;;; Loading #P"/home/didier/.clrc" ;;; Loading "/usr/local/share/common-lisp/source/asdf/build/asdf.lisp"
Condition of type: SIMPLE-ERROR Cannot delete the directory #P"/home/didier/.cache/common-lisp/ecl-12.7.1-52ca46e0-linux-x86/usr/local/share/common-lisp/source/asdf/build/asdf.fas". C library explanation: No such file or directory. Available restarts:
- (RETRY) Retry compiling #<cl-source-file "asdf" "build" "asdf">.
- (ACCEPT) Continue, treating compiling #<cl-source-file "asdf" "build" "asdf"> as having been successful.
- (RESTART-TOPLEVEL) Go back to Top-Level REPL.
Broken at UIOP/FILESYSTEM:DELETE-FILE-IF-EXISTS. In: #<process TOP-LEVEL>. File: #P"/usr/local/share/common-lisp/source/asdf/build/asdf.lisp" (Position #139589)
:b
Backtrace:
UIOP/FILESYSTEM:DELETE-FILE-IF-EXISTS uiop/lisp-build:compile-file* lambda uiop/utility:call-with-muffled-conditions uiop/lisp-build:call-with-muffled-compiler-conditions lambda uiop/utility:call-function uiop/lisp-build:call-around-hook lambda asdf/lisp-action:perform-lisp-compilation lambda lambda lambda lambda lambda lambda call-next-method lambda asdf/cache:call-with-asdf-cache asdf/find-system::call-with-system-definitions lambda lambda call-next-method lambda asdf/cache:call-with-asdf-cache asdf/find-system::call-with-system-definitions lambda asdf/operate:load-system uiop/package:symbol-call asdf/upgrade:upgrade-asdf lambda asdf/operate:oos si:bytecodes [Evaluation of: (let ((*compile-print* nil) (*compile-verbose* nil) (*load-verbose* nil) (*load-print* nil)) (asdf/operate:oos 'asdf/lisp-action:load-op "quicklisp" :verbose nil))] si:bytecodes [Evaluation of: (let ((quicklisp-init "/usr/local/share/common-lisp/source/quicklisp/setup.lisp")) (when (probe-file quicklisp-init) (load quicklisp-init)))] si:bytecodes [Evaluation of: (load ".clrc")] si:bytecodes [Evaluation of: (si:top-level t)]