Finding out from where the .asd was loaded and/or referencing a non-executable data file

Robert Goldman rpgoldman at sift.info
Fri Mar 16 20:59:24 UTC 2018


On 16 Mar 2018, at 15:03, Robert Dodier wrote:

> Thanks, Robert, that helps a lot. Using ASDF:SYSTEM-RELATIVE-PATHNAME
> is a big step forward.
>
> A follow-up question: Is there a way to know, within a file which is
> being loaded, whether or not it's being loaded via ASDF? The index
> file might be loaded via CL:LOAD also.
>
> Just to clarify the situation a little, the .info is created from
> .texi by makeinfo, and then it's parsed (by a Perl script -- OH MY
> WHAT HAVE I DONE?? Ha ha, only serious) to get the offset and length
> of each documentation item, which is stored in the index, which is
> implemented as a Lisp program that reads the .info and builds suitable
> hash tables, to be used by Maxima's documentation system at run time.
> All that with makeinfo and the info parser happens long before ASDF
> comes into the picture. The .info and index.lisp are packaged with the
> rest of the code, and that's the package that ASDF sees.
>
> I don't doubt that this systems has flaws, but at this point I am
> taking it as a given; I'm trying to make progress on a lot of fronts,
> and cleaning up this monstrosity is a lower priority item.
>
> best,
> Robert Dodier

Another trick you could try is to define a special class of files for 
the info files (probably just a subclass of `cl-source-file`).  Then you 
could tell ASDF not to move that class of files, by providing a method 
on `OUTPUT-FILES`.  Here's the relevant `DEFGENERIC`:
```
(defgeneric output-files (operation component)
     (:documentation "Methods for this function return two values: a 
list of output files
corresponding to this action, and a boolean indicating if they have 
already been subjected
to relevant output translations and should not be further translated.

Methods on PERFORM *must* call this function to determine where their 
outputs are to be located.
They may rely on the order of the files to discriminate between outputs.
"))
```

You can return T for the second value in order to have 
output-translations *not* apply, IIRC.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20180316/1c69744d/attachment.html>


More information about the asdf-devel mailing list