[asdf-devel] Re: cl-quakeinfo and asdf3
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,
> 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
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