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