[asdf-devel] :depends-on to load-system or require-system?

John Morrison john.nmi.morrison at gmail.com
Wed Sep 4 12:56:25 UTC 2013


Hi Robert;

Thanks for the advice and suggestions for where to start looking.  I
will get out the software shovel and start digging, and I shall report
back.

Thanks again!

-jm

On Tuesday 03 September 2013 15:51:04 Robert Goldman wrote:
> John Morrison wrote:
> > Hi All;
> > 
> > tl:dr - AFAICT post-version-2.26-ish versions of ASDF systems listed
> > in :depends-on are unconditionally loaded rather than required - ditto
> > for asdf:load-system.  If this is correct (both in intent and my
> > understanding), then how to create a GUI for quicklisp in McCLIM which
> > can quickload any system which :depends-on McCLIM?
> > 
> > Apologies in advance in the likely event this is Pilot Error.
> > 
> > Am trying to write a gui
> > <https://bitbucket.org/symbolicsimulation/com.symsim.oss.ql-gui> for
> > quicklisp.  Testing on various platforms (Raspberry Pi, linux/SBCL,
> > linux/CCL) with various vintages of ASDF produces differing behavior.
> > In particular, quickloading a system which depends upon McCLIM from
> > the McCLIM-based gui screws up (I haven't tracked down the exact
> > problem, but I could understand why unconditionally reloading McCLIM
> > while it's running could get weird).
> > 
> > After some digging (and rebuilding various versions of SBCL up to
> > 1.1.9), I got as far as seeing asdf:load-system behavior diverging
> > from 2.26 (SBCL 1.0.9) to both 2.32 (CCL 1.9) and 3.0.2 (both SBCL and
> > CCL).  AFAICT 2.26 load-system does not unconditionally load an
> > already-loaded system (behaving like and perhaps redundant to
> > asdf:require-system).  2.32 and 3.0.2 load-system unconditionally load
> > systems, and require-system does not.  I think I understand why the
> > newer vintages do this.
> > 
> > The issue for me is loading systems that :depend-on McCLIM from inside
> > a McCLIM frame command.  In my naivety, I would think that the
> > 
> > :depends-on systems should be required rather than loaded (if you've
> > 
> > patched them, say, you wouldn't want the patch hammered).  For my own
> > stuff, I guess I could require prerequisite systems within the asd
> > file rather than :depending-on them, but this seems wrong (breaks
> > introspection?) - so wrong I feel I may be going about this entirely
> > the wrong way.
> > 
> > Would anybody please be so kind as to throw some advice my way?
> > 
> > -jm
> 
> ASDF:REQUIRE-SYSTEM uses :FORCE-NOT to prevent ASDF from reloading any of
> the parent systems that have changed.
> 
> But LOAD-SYSTEM should not *unconditionally* load parent systems, unless
> :FORCE is used, or those systems have changed.
> 
> Is it possible that something is happening in your interaction with
> QUICKLISP to cause ASDF to mistakenly believe some of these upstream parts
> of McCLIM have changed?
> 
> Another possibility: the McCLIM ASDF structure is *very* complicated because
> of the back-ends, which cannot be modeled happily in ASDF, because ASDF
> isn't great about modeling conditional structure in environmental
> dependencies.  [IMO, really McCLIM should have used LOAD-SYSTEM keywords to
> allow the loader to specify backends.  But that's water under the bridge
> now...]  Perhaps some aspect of this complex structure causes ASDF to
> mistakenly believe something needs reloading.
> 
> best,
> r
-- 
--- John Morrison
--- john.nmi.morrison at gmail.com




More information about the asdf-devel mailing list