Subject: Re: Newbie asdf problem
From: rpw3@rpw3.org (Rob Warnock)
Date: Thu, 27 Apr 2006 19:43:07 -0500
Newsgroups: comp.lang.lisp
Message-ID: <poudnbhM_rqG-MzZnZ2dnUVZ_sednZ2d@speakeasy.net>
Frank Buss  <fb@frank-buss.de> wrote:
+---------------
| register_allocation wrote:
| > (asdf:oos 'asdf:load-op :macro-utilities)
| > I get an error 'component "macro-utilities" not found'. 
| 
| one solution would be to do a
| (pushnew "/yourhome/lisp/yourdirectory/" asdf:*central-registry*)
| after loading asdf.lisp.
+---------------

Another hint: To avoid lots of dups ending up in ASDF:*CENTRAL-REGISTRY*,
you should add a :TEST #'EQUAL to the PUSHNEW, e.g.:

  (pushnew #p"library:local/systems/" asdf:*central-registry* :test #'equal)

Why? Because depending on the implementation and/or whether the code
is compiled, you might get this:

  > (eql "/yourhome/lisp/yourdirectory/" "/yourhome/lisp/yourdirectory/")

  NIL
  > (eql #p"library:local/systems/" #p"library:local/systems/")

  NIL
  >

but you should *always* get this:

  > (equal "/yourhome/lisp/yourdirectory/" "/yourhome/lisp/yourdirectory/")

  T
  > (equal #p"library:local/systems/" #p"library:local/systems/")

  T
  >


-Rob

p.s. CMUCL *sometimes* does constant coalescing even uncompiled,
in the REPL, if the expression being EVAL'd is "complex enough". 
E.g., the above two EQL tests both report NIL, as shown, yet we
also get this:

  > (let () (eql #p"library:local/systems/" #p"library:local/systems/"))

  T
  >

Yet a (LET () (EQL "string" "string")) returns NIL. Go figure.

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607