Problem with adding input files...

Faré fahree at gmail.com
Fri Jun 30 15:35:41 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))
...
>      (if-let ((pathname (first (input-files o s)))))
...
This call to input-files is problematic, as it will cause the wrong
value to be cached, before you recorded your input-files. Note that
you might have to invalidate the cached input-files anyway, because it
may already have been called by compute-action-stamp at that point.

But I meant the general perform :after method and mark-operation-done
method from action.lisp.

> At any
> rate, I'm having a hard time tracking down exactly where we determine
> whether or not a define-op needs redoing.
Ultimately, it boils down to (compute-action-stamp plan operation
component [nil]) as called by compute-action-status in plan.lisp. And
*that* will call input-files.

> The caching code makes things
> much more efficient, but it also effectively camouflages the algorithm....
>
Not just "more efficient", but in some cases keeps O(n) what might be
a much higher polynomial (or exponential?) when a module's input-files
recursively depend on its contents (e.g. for warning checking). But
yes, sometimes you need to invalidate the cache, and this looks like
one of those times to me.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Too many people are thinking of security instead of opportunity.  They seem
more afraid of life than death.
                — James F. Byrnes



More information about the asdf-devel mailing list