<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:70.85pt 56.7pt 56.7pt 56.7pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Thank you.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I will include the new version in HELambdaP.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Apologies for the miscommunication.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>All the best</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Marco Antoniotti<br>DISCo, Università degli Studi di Milano-Bicocca<o:p></o:p></p><p class=MsoNormal>+39 02 6448 7901<o:p></o:p></p><p class=MsoNormal>bimib.disco.unimib.it<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:rpgoldman@sift.info">Robert Goldman</a><br><b>Sent: </b>Tuesday, May 5, 2020 19:27<br><b>To: </b><a href="mailto:marco.antoniotti@unimib.it">Marco Antoniotti</a><br><b>Cc: </b><a href="mailto:asdf-devel@common-lisp.net">asdf-devel@common-lisp.net</a><br><b>Subject: </b>Re: ASDF/INTERFACE::TRAVERSE-SUB-ACTIONS</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p><span style='font-family:"Arial",sans-serif'>On 5 May 2020, at 12:05, Marco Antoniotti wrote:<o:p></o:p></span></p></div><div><blockquote style='border:none;border-left:solid #777777 1.5pt;padding:0in 0in 0in 4.0pt;margin-left:0in;margin-right:0in;margin-bottom:3.75pt'><p><span style='font-family:"Arial",sans-serif;color:#777777'>At a certain point I needed (I still do) the function SYSTEM-INPUT-FILES. I think Fare send me a simple implementation that worked on the ASDF version of that time (long ago, I guess). The function is the following.<o:p></o:p></span></p></blockquote></div><div><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7;border-radius:5px 5px 5px 5px;max-width:90vw;overflow-x:auto'><code><span style='color:black;background:#F7F7F7'>(defun system-input-files (system)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>  (multiple-value-bind (i o)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>      (while-collecting (i o)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>        (loop for (op . comp)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>                in (plan-actions</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>                    (traverse-sub-actions 'load-op (find-system system)))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>              do (map () #'i (input-files op comp))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>                 (map () #'o (output-files op comp))))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>    (remove-if #'(lambda (f) (member f o :test 'pathname-equal))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>               (remove-duplicates i :from-end t :test 'pathname-equal))))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><p><span style='font-family:"Arial",sans-serif'>So what you need here is the full set of plan actions. You should be able to get this as follows:<o:p></o:p></span></p><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7;border-radius:5px 5px 5px 5px;max-width:90vw;overflow-x:auto'><code><span style='color:black;background:#F7F7F7'>(defun system-input-files (system)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>  (multiple-value-bind (i o)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>      (while-collecting (i o)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>        (loop for (op . comp)</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>                in (plan-actions (make-plan nil (make-operation 'load-op) (find-system system)))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>              do (map () #'i (input-files op comp))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>                 (map () #'o (output-files op comp))))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>    (remove-if #'(lambda (f) (member f o :test 'pathname-equal))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre><pre style='mso-margin-top-alt:0in;margin-right:11.25pt;margin-bottom:0in;margin-left:11.25pt;margin-bottom:.0001pt;background:#F7F7F7'><code><span style='color:black;background:#F7F7F7'>               (remove-duplicates i :from-end t :test 'pathname-equal))))</span><span style='background:#F7F7F7'><o:p></o:p></span></code></pre></div></div><p><code><span style='font-size:10.0pt;color:black;background:#F7F7F7'>make-plan</span></code><span style='font-family:"Arial",sans-serif'> will give you what you need to call </span><code><span style='font-size:10.0pt;color:black;background:#F7F7F7'>plan-actions</span></code><span style='font-family:"Arial",sans-serif'> on in place of </span><code><span style='font-size:10.0pt;color:black;background:#F7F7F7'>traverse-sub-actions</span></code><span style='font-family:"Arial",sans-serif'>.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>