Here's a case we have:
System uses bad old version of FiveAM.
BOV5A signals ARNESI:DEFLOOKUP-REDEFINITION because of bug in EVAL-WHEN logic.
We put our system's compilation inside Jenkins, failing on warnings.
Jenkins fails.
We see error.
We wrap call to LOAD-SYSTEM in
(handler-bind ((arnesi:deflookup-redefinition #'(lambda (e) (muffle-warning e))) (asdf:load-system "our-system"))
This does not fix the problem.
I believe that this is because ASDF is trapping *ALL* warnings, hanging onto them, and then resignaling them, wrapped in new ASDF condition objects. So our ARNESI:DEFLOOKUP-REDEFINITIONs are all gone, and can't be used for muffling.
It seems like this is going to bork any system that wants to muffle specific warnings, or handle specific errors. Not so? Or have I misunderstood somehow?
Thanks, r
On Wed, Feb 26, 2014 at 5:45 PM, Robert P. Goldman rpgoldman@sift.info wrote:
BOV5A signals ARNESI:DEFLOOKUP-REDEFINITION because of bug in EVAL-WHEN logic.
You could push #(deflookup-redefinition arnesi) onto uiop:*uninteresting-conditions*. And yes, there ought to be a better way to control binding of variables around actions. That's a big TODO item for ASDF — and it probably requires several misdesigns before it is done right.
We wrap call to LOAD-SYSTEM in
(handler-bind ((arnesi:deflookup-redefinition #'(lambda (e) (muffle-warning e))) (asdf:load-system "our-system"))
This does not fix the problem.
I'm not sure why this doesn't work. It's possible that you try to handle the condition before it's defined (how is the package even present?) or after everything has already been loaded.
I believe that this is because ASDF is trapping *ALL* warnings, hanging onto them, and then resignaling them, wrapped in new ASDF condition objects. So our ARNESI:DEFLOOKUP-REDEFINITIONs are all gone, and can't be used for muffling.
ASDF doesn't do any such thing, except specifically for deferred conditions (mostly, undefined variable and undefined function conditions), and only if you explicitly enabled them.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org "Lisp is a programmable programming language." — John Foderaro