[asdf-devel] How should ASDF return cached system definition information
Faré
fahree at gmail.com
Sat Feb 22 07:44:32 UTC 2014
>>> I just felt like fixing this in ASDF would be better than requiring the caller to do it.
>>>
>> You could do that in the common case, I suppose, but the user would
>> still have to call resolve-dependency-spec in the general case, since
>> the protocol is extensible. Making it appear like the name has been
>> resolved when it hasn't been is probably a lure that will invite
>> people to do the wrong thing and get bitten — more efforts for
>> negative return on investment.
>
> Hmmmm....
> The thing I don't like is to have some large number of half-baked bits of code that all do some buggy bit of tree recursion to make sure that they recognize that
>
> :depends-on (foo) ; foo in some package
> :depends-on ("foo") ; string
> :depends-on (:foo)
>
> are all the same thing. Failing to do that for the caller seems like we are providing a bad API.
>
> I figured since "foo" is the internal form, (list "foo") should be the return for all three of the above cases.
>
> If you call resolve-dependency-spec on
>
> :weakly-depends-on (:blort)
>
> when blort isn't present, don't we get a bad result that foils the intent of using system-weakly-depends-on as an introspection tool?
>
The user should use the same API as parse-component-form. And that's
where I see that the way it filters weakly-depends-on is buggy, since
it calls find-system and not resolve-dependency-spec. At this point,
either it should call it and somehow catch a condition when the
component is missing (but what if it's an indirect component while
loading a .asd that raises the condition? This sucks — and
locate-system won't suffice either for secondary systems), or you're
right and we should restrict weakly-depends-on to system names and not
generalized specs. In any case, ASDF is currently buggy.
I admit I never liked weakly-depends-on and never gave it much love.
My opinion is that's it's an ill-conceived feature that I would never
have let in because it doesn't fit my idea of a deterministic build
(unless ASDF started to do filesystem versioning and include a hash of
the used portion of the filesystem into the name of output files, like
I never got around to having XCVB do). In any case, I never got around
to either adopting the feature seriously, or seriously deprecating it
and expunging it from the CL code base.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
— Question authority!
— Yeah, says who?
More information about the asdf-devel
mailing list