On 4 Aug 2020, at 16:18, Ilya Perminov wrote:
The around method will look something like this
(defmethod input-files :around ((o asdf/bundle::gather-operation) (c system))
(unless (eq (asdf/bundle::bundle-type o) :no-output-file)
(append (call-next-method)
(remove-if-not
(asdf/bundle::pathname-type-equal-function
(asdf/bundle::bundle-pathname-type (asdf/bundle::gather-type o)))
(mappend (lambda (c) (output-files 'process-op c))
(asdf/component:sub-components c :type 'wrapper-file))))))
To my taste it knows too much about ASDF guts, but maybe it is not too bad.
I'm looking at the code now, and
bundle-type
is exported from asdf/bundle
(but not asdf
) (it could use a docstring if you can propose one)
So is bundle-pathname-type
pathname-type-equal-function
is not exported, but it's a trivial combination of pathname-type
and equalp
gather-type
is the only "really internal" function. (A block comment would be nice here, too.)
gather-operation
is not exported, but I think that's probably wrong on our part: I don't believe there should be hidden operations. If I get around to it, I will probably export it from the asdf
(really asdf/interface
) package, unless someone has a good argument for it continuing to be internal.
So I don't think that is a lot of ASDF internals, especially not for customizing the ASDF protocol.