[asdf-devel] Re: cl-quakeinfo and asdf3

Faré fahree at gmail.com
Wed Jan 29 15:06:04 UTC 2014

>> I'm actually not sure what the assumptions are for QL.  Does it assume
>> that all libraries should be portable?  Can contributors proclaim their
>> systems to be non-portable, and does that affect QL function (and if so,
>> how)?
> The current situation is that the project must build on SBCL, and I
> don't want to add SBCL-only projects.
In this case, cl-quake-info is an Allegro-only project (though
patching should be easyish).
It "builds" under SBCL, yielding non-working code;
but if you enable deferred warnings, the undefined function IF* is detected,
and its THEN and ELSEIF keywords are parsed as undefined variables.

There may or may not be other interesting stories in the 20+ quicklisp libraries
the authors of which never replied when I prompted them last year
about these warnings breaking their build, nor fixed them.

Reminder: try (uiop:enable-deferred-warnings-check) before you load some code.

And there I notice that an undefined function is only a STYLE-WARNING in SBCL,
where for the sake of checking, I might have preferred to make it a
full warning,
whereas undefined variables are, rightlly so, full warnings, and
frankly, I believe shouldn't be deferred.
Somehow, I never noticed before undefined function were mere STYLE-WARNINGs,
because (1) this part of the code was eventually disabled by default
in ASDF, and
(2) at work, it was enabled indeed, but ASDF was using the non-default setting
of breaking the build on any and all warnings including style-warnings,
after proper filtering.
Anyway, this is not my problem anymore, but if someone wants
to take over the effort of providing the world with usable enforcement
of such deferred-warnings by default, he may have to address those issues.
My recommendation would be to
(a) let the (style)warnings be reported by overriding any WITH-COMPILATION-UNIT,
(b) handle and recognize the undefined-function warnings, print them
to a string,
 save the name of the function and the string to the warnings file
 and when it's time to reconcile, filter those for defined functions,
 raise a full WARNING if still undefined, an ERROR if defined as a macro.
 Or let it be a STYLE-WARNING, but configure the on-style-warning fail mechanism
 separately for deferred-warnings than for compilation.
 This can be mostly portable code, except for the abstraction to
recognize the warning.
(c) let undefined-variable fall through immediately, and/or
 promote them to full WARNING or ERROR if needed, depending on implementation.
(d) have a whitelist of the few systems in QL known to have warnings,
 and that should not fail on warnings. This may either be a special variable,
 or a generalized out-of-band configuration mechanism, allowing to
 bind variables around the performing of some action, etc.
Now I remember why I ran out of energy to get it done. Good luck.

PS: is it only me, or is quicklisp disabling output translations for its

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Our love was a supernova, bursting with an immense light only to wane quickly,
leaving behind a black hole.

More information about the asdf-devel mailing list