Problem with adding input files...
Robert Goldman
rpgoldman at sift.net
Fri Jun 30 15:25:01 UTC 2017
On 6/30/17 Jun 30 -10:11 AM, Faré wrote:
> First, can you confirm that the compute-action-stamp called by
> mark-operation-done called by the perform :after method on define-op
> returns the correct value?
Hm. I don't see any such after method. All I see is this:
(defmethod perform ((o define-op) (s system))
(assert (equal (coerce-name s) (primary-system-name s)))
(nest
(if-let ((pathname (first (input-files o s)))))
(with-standard-io-syntax)
(let ((*print-readably* nil)
;; Note that our backward-compatible *readtable* is
;; a global readtable that gets globally side-effected. Ouch.
;; Same for the *print-pprint-dispatch* table.
;; We should do something about that for ASDF3 if possible,
or else ASDF4.
(*readtable* *readtable*)
(*print-pprint-dispatch* *print-pprint-dispatch*)
(*package* (find-package :asdf-user))
(*default-pathname-defaults*
;; resolve logical-pathnames so they won't wreak havoc in
parsing namestrings.
(pathname-directory-pathname (physicalize-pathname pathname)))))
(handler-bind
(((and error (not missing-component))
#'(lambda (condition)
(error 'load-system-definition-error
:name (coerce-name s) :pathname pathname
:condition condition))))
(asdf-message (compatfmt "~&~@<; ~@;Loading system definition~@[
for ~A~] from ~A~@:>~%")
(coerce-name s) pathname)
;; dependencies will depend on what's loaded via
definition-dependency-list
(unset-asdf-cache-entry `(component-depends-on ,o ,s)))
(load* pathname :external-format (encoding-external-format
(detect-encoding pathname)))))
This looks like it should do the right thing, but I don't know. At any
rate, I'm having a hard time tracking down exactly where we determine
whether or not a define-op needs redoing. The caching code makes things
much more efficient, but it also effectively camouflages the algorithm....
Cheers,
r
best,
r
More information about the asdf-devel
mailing list