<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 9 Mar 2018, at 17:02, Faré wrote:</p>

</div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><p dir="auto">On Fri, Mar 9, 2018 at 5:34 PM, Robert Goldman <rpgoldman@sift.info> wrote:</p>
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">Are you just using this for yourself? If so, a simple<br>
<br>
(let ((asdf:*compile-file-failure-behaviour* :warn))<br>
    (asdf:load-system "my system"))<br>
<br>
will suffice.<br>
</p>
</blockquote><p dir="auto">Yup.<br>
</p>
<blockquote style="border-left:2px solid #777; color:#999; margin:0 0 5px; padding-left:5px; border-left-color:#999"><p dir="auto">Alternatively, you could put something like this in the .asd file:<br>
<br>
(defmethod operate :around ((operation load-op) (system (asdf:find-system<br>
"my-system")))<br>
   (let ((asdf:*compile-file-failure-behaviour* :warn))<br>
     (call-next-method)))<br>
<br>
The above most emphatically has not been tested, so it might be wrong.<br>
</p>
</blockquote><p dir="auto">As a rule of thumb, you should never define :around methods for<br>
operate, for they do NOT do what you might naively believe they do:<br>
1- they are only called on the top-level system, and/or on systems<br>
loaded directly by a defsystem-depends-on<br>
2- they wrap around not just the system at hand, but all its<br>
transitive dependencies.<br>
<br>
The working approach to changing variables for a system, no more no<br>
less, is an :around-compile hook for your system.<br>
<br>
But the correct approach is to NOT modify<br>
asdf:*compile-file-failure-behaviour* but instead to catch<br>
specifically the warnings that you want to ignore, using<br>
*uninteresting-conditions* and the with-muffled-compiler-conditions<br>
implicit in compile-file* and thus perform compile-op. See notably the<br>
variable *usual-uninteresting-conditions*.<br>
</p>
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">This is a very good point.  What the OP asks for is actually the thing that you (I believe correctly) say they should not want: "...wrap around not just the system at hand, but all its transitive dependencies."</p>

<p dir="auto">That's hard to do in a generally reliable way, because the author of the system definition has no way to tell whether the </p>

<p dir="auto">In general, it's a Bad Idea to ignore warnings in this way.  Almost always the warnings you ignore will eventually come back to bite you.  Even if they do not do so directly, the next time you introduce a bug that causes a warning, you won't see it because ASDF is not breaking when it should.</p>

<p dir="auto">Not just in CL, but <em>everywhere</em>, it's good practice to require your systems to build cleanly, without warnings.</p>

<p dir="auto">In fact, I'd say the only time when you want to ignore warnings is when you have someone else's library, they have done something that is wrong, but that you know will not cause an error, and you don't have a good way to get the upstream system fixed.  In that case, as Faré says, the right thing is to wrap <em>only that system</em> in a targeted muffling of warnings.</p>

<p dir="auto">So, I think my around method solution is what you asked for, but Faré is right: you should think very hard about whether what you asked for is actually what you need.</p>

<p dir="auto">Cheers,<br>
r</p>
</div>
</div>
</body>
</html>