Best Practice for an ASDF Variable Like *compile-file-failure-behaviour*

Robert Goldman rpgoldman at sift.info
Fri Mar 9 22:47:35 UTC 2018


OK, then I believe that defining the method for `OPERATE` will give you 
what you want.  You can put that definition in `my-system.asd` below the 
`defsystem` for "my-system".  There's only one problem with that -- if 
you `load-system` on "my-system" before `my-system.asd` has been loaded 
(e.g., by `find-system`), then you will lose, because the around method 
will not have been defined before the first call to `operate`.

On 9 Mar 2018, at 16:37, Mark H. David wrote:

> No, it's what we want for our system. We want everyone who builds our
> system to get this behavior reliably.
>
> ----- Original message -----
> From: Robert Goldman <rpgoldman at sift.info>
> To: "Mark H. David" <mhd at yv.org>
> Cc: "ASDF-devel" <asdf-devel at common-lisp.net>
> Subject: Re: Best Practice for an ASDF Variable Like 
> **compile-file-failure-behaviour**Date: Fri, 09 Mar 2018 16:34:48 
> -0600
>
> Are you just using this for yourself?  If so, a simple
>
>
> (let ((asdf:*compile-file-failure-behaviour* :warn)) (asdf:load-system
> "my system"))will suffice.
>
>
> Alternatively, you could put something like this in the .asd file:
>
>
> (defmethod operate :around ((operation load-op) (system (asdf:find-
> system "my-system"))) (let ((asdf:*compile-file-failure-behaviour*
> :warn)) (call-next-method)))The above most emphatically *has not been 
> tested*, so it might be wrong.I *think* if the top-level operation you 
> use is load-op, this should
> work.  Alternatively, you might want to replace (operation load-op) 
> with
> just (operation operation) (and add a (declare (ignorable 
> operation)))Cheers,
>  r
>
>
> On 9 Mar 2018, at 16:12, Mark H. David wrote:
>
>
>> As has been discussed here over the years,  
>> asdf:*compile-file-failure-
>> behaviour* is :warn on most platforms, but it is notoriously :error 
>> on
>> #+sbcl. So what would you do if you wanted to change 
>> asdf:*compile-file-failure-
>> behaviour* to be :warn on #+SBCL? How would you recommend to change
>> it. Where?>
>>  I don't want to really have to impose an init file on everyone.
>>  Also, I don't really want to necessarily make this global across
>>  every use of ASDF, but let's say I just want it to apply to one main
>>  system and all subsystems loaded as part of this.>
>>  I cannot think of anything better than a top-level setq in the .asd
>>  file of the system, something like this?>
>>  #+sbcl
>>  (setq asdf:*compile-file-failure-behaviour* :warn)
>>
>>  What else can one do that's any better?
>>
>>  Maybe there's a less crude way, like something like an around method
>>  that wraps around the compile/load.  I'm really just barely a novice
>>  user, so I'm sorry this if this is such a naive question.  If 
>> there's
>>  a simple example one could provide or point me to that does this, 
>> I'd
>>  appreciate it.>
>>  Thanks,
>>
>>  Mark


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20180309/0021d7ba/attachment-0001.html>


More information about the asdf-devel mailing list