A CFFI -ASDF integration bug

Robert Goldman rpgoldman at gmail.com
Tue Aug 4 22:18:34 UTC 2020


On 4 Aug 2020, at 17:00, Ilya Perminov wrote:

> I think there is a problem with the :around method approach  - it is
> not safe for an ASDF extension to define methods on ASDF's
> operations/components, because other ASDF extensions may want to do
> the same thing. Imagine there is CFFI* and I want to use both CFFI and
> CFFI*.

That is true -- that's why I always try to have either my own operation 
class or my own component class, or both.  So to do this, you would want 
to have your own subclass of `system` that you wish to have work this 
way (e.g., `cffi-extended-system`) -- you generally do not want to add 
methods to the standard classes in ASDF, both because of potential 
collisions, and because you don't know what else they might interfere 
with.
>
> On Tue, Aug 4, 2020 at 2:35 PM Robert Goldman <rpgoldman at gmail.com> 
> wrote:
>>
>> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20200804/41d68c94/attachment.htm>


More information about the asdf-devel mailing list