-;;; This is asdf: Another System Definition Facility. $\Revision: 1.59 $
+;;; This is asdf: Another System Definition Facility. $\Revision: 1.62 $
;;;
;;; Feedback, bug reports, and patches are all welcome: please mail to
;;; <cclan-list@lists.sf.net>. But note first that the canonical
(in-package #:asdf)
-(defvar *asdf-revision* (let* ((v "$\Revision: 1.59 $")
+(defvar *asdf-revision* (let* ((v "$\Revision: 1.62 $")
(colon (position #\: v))
(dot (position #\. v)))
(and v colon dot
(defclass load-source-op (operation) ())
(defmethod perform ((o load-source-op) (c cl-source-file))
- (load (component-pathname c)))
+ (let ((source (component-pathname c)))
+ (setf (component-property c 'last-loaded-as-source)
+ (and (load source)
+ (get-universal-time)))))
+
+(defmethod perform ((operation load-source-op) (c static-file))
+ nil)
+
+(defmethod output-files ((operation load-source-op) (c component))
+ nil)
+
+;;; FIXME: we simply copy load-op's dependencies. this is Just Not Right.
+(defmethod component-depends-on ((o load-source-op) (c component))
+ (let ((what-would-load-op-do (cdr (assoc 'load-op
+ (slot-value c 'in-order-to)))))
+ (mapcar (lambda (dep)
+ (if (eq (car dep) 'load-op)
+ (cons 'load-source-op (cdr dep))
+ dep))
+ what-would-load-op-do)))
+
+(defmethod operation-done-p ((o load-source-op) (c source-file))
+ (if (or (not (component-property c 'last-loaded-as-source))
+ (> (file-write-date (component-pathname c))
+ (component-property c 'last-loaded-as-source)))
+ nil t))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(pushnew
(merge-pathnames "site-systems/"
- (truename (sb-ext:posix-getenv "SBCL_HOME")))
+ (truename (sb-ext:posix-getenv "SBCL_HOME")))
*central-registry*)
(pushnew
- (merge-pathnames ".sbcl/systems"
- (user-homedir-pathname))
+ (merge-pathnames ".sbcl/systems/"
+ (user-homedir-pathname))
*central-registry*)
(pushnew 'module-provide-asdf sb-ext:*module-provider-functions*))
;;;; SBCL-specific hooks like SB-INT:*REPL-READ-FUN* and
;;;; SB-INT:*REPL-PROMPT-FUN*.
;;;;
-;;;; The documentation for this functionality is on the ACL website,
+;;;; The documentation, which may or may not apply in its entirety at
+;;;; any given time, for this functionality is on the ACL website:
;;;; <http://www.franz.com/support/documentation/6.2/doc/top-level.htm>.
(cl:defpackage :sb-aclrepl
(:use :cl :sb-ext)
- (:export :*prompt*)
- ;; (what else should we be exporting?)
- )
+ ;; FIXME: should we be exporting anything else?
+ (:export #:*prompt* #:*exit-on-eof* #:*max-history*
+ #:*use-short-package-name* #:*command-char*
+ #:alias))
(cl:in-package :sb-aclrepl)
"when T, use the shortnest package nickname in a prompt")
(defparameter *dir-stack* nil
"The top-level directory stack")
-(defparameter *cmd-char* #\:
+(defparameter *command-char* #\:
"Prefix character for a top-level command")
(defvar *max-history* 24
"Maximum number of history commands to remember")
-(defvar *exit-on-eof*
+(defvar *exit-on-eof* t
"If T, then exit when the EOF character is entered.")
(defparameter *history* nil
"History list")
collect arg))))))
(let ((next-char (peek-char-non-whitespace input-stream)))
(cond
- ((eql next-char *cmd-char*)
+ ((eql next-char *command-char*)
(let* ((line (string-trim-whitespace (read-line input-stream)))
(first-space-pos (position #\space line))
(cmd-string (subseq line 1 first-space-pos))
(fresh-line)
t) ; Ayup.
(t
+ (add-to-history user-cmd)
nil))) ; nope, not in my job description
(defun repl-read-form-fun (input-stream output-stream)