(patch) trying to load a previously-defined system through a dangling symlink

Andreas Fuchs <[email protected]>
Newsgroups gmane.lisp.cclan.general
Message-ID <87u0hlzkdv.wl%[email protected]>
Hi,

another mostly trivial fix to an oddity in ASDF. The following
explanation is of my own understanding of things. Don't beat me if I'm
wrong, but I'm certain the fix is correct. (-:

If one of your system definition files (e.g. "mcclim.asd") defines a
system (e.g. :clim-listener), and there is a link to another system
definition file defining that same system (e.g. "clim-listener.asd"),
and that link's target suddenly goes away, ASDF is confused. The user
then gets an error from a NIL argument to two-arg-<.

This patch fixes that problem:

--- orig/contrib/asdf/asdf.lisp
+++ mod/contrib/asdf/asdf.lisp
@@ -359,8 +359,9 @@
 (defun find-system (name &optional (error-p t))
   (let* ((name (coerce-name name))
 	 (in-memory (gethash name *defined-systems*))
-	 (on-disk (system-definition-pathname name)))	 
+	 (on-disk (system-definition-pathname name)))
     (when (and on-disk
+               (probe-file on-disk)
 	       (or (not in-memory)
 		   (< (car in-memory) (file-write-date on-disk))))
       (let ((*package* (make-package (gensym #.(package-name *package*))



-- 
Andreas Fuchs, <[email protected]>, [email protected], antifuchs


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.