On Mon, May 16, 2016 at 5:56 PM, Robert Goldman <rpgold...@sift.net> wrote: > On 5/16/16 May 16 -4:36 PM, Faré wrote: >> On Mon, May 16, 2016 at 3:35 PM, Robert Goldman <rpgold...@sift.net> wrote: >> There were two :FEATURE features. One was braindead and I removed it >> in ASDF3, because it was badly breaking the object model. > Right. I believe that's the one documented as "feature requirement." Indeed.
> Some of this is a problem that arises because we don't have a DEFSYSTEM > *Semantics* section, only a DEFSYSTEM *grammar*. Yes. > OK. I will try to add a subsection about the semantics to the defsystem > grammar page (per my earlier remarks, not ideal, but I'm not ready to > plunge into the end-to-end rewrite and reorg that the manual requires!). > I won't cast the first stone. >>> If the semantics is intended to be the latter -- and that's how I read >>> the relevant code in find-component.lisp -- how does a programmer say >>> "if this feature is not present, my system should not compile"? >>> >> (:feature (:not :foocl) "something_that_fails") > > Would it be possible for us to either add something that fails as > > (:feature (:not :foocl) :fail) > This should already fail... if there's no system or component named fail. > or perhaps better (the above smells uncomfortably like > :IF-COMPONENT-DEP-FAILS): > > (:required-feature <feature-expression>) > > "require" is, perhaps unfortunately, a term of art for CL so perhaps > > (:must-have-feature <feature-expression>) > > would be better.... > The traditional solution was to fail at compile-time and/or load-time with a #-(or clozure sbcl) (error "not supported implementation") That's what asdf itself does, btw. I recommend against failing while loading the .asd file, because that will break cross-compilation in the future (and/or on MOCL, which already does it with a gross hack). > One more query while I have you on the line: > > the grammar still contains this rule: > > component-dep-fail-option := :fail | :try-next | :ignore > > The LHS of that rule is never referenced, so I propose to cut it. > Yes, that was part of the :if-component-dep-fail misfeature that I removed in ASDF3. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Beware of altruism. It is based on self-deception, the root of all evil. — Robert Heinlein, "Time Enough For Love"