newbie setup question

Robert Goldman rpgoldman at sift.net
Mon Jan 18 16:05:35 UTC 2016


On 1/18/16 Jan 18 -5:30 AM, Thomas Lynch wrote:
> New at this,  sure could use a pointer.  I'm not able to get the code to
> build consistently.  It works only after a failure.  So I have to do it
> twice to get it to go.  Sure would like to know what is wrong here.

I can't swear to it without doing more checks, but note that the
canonical case for ASDF system names is *lower-case*.

That means that :LE is interpreted as "le".  "LE" however, will be
interepreted as "LE".

>From the manual (defsystem grammar):

   If a symbol is given [as system name -rpg], it will be translated
into a string, and
downcased in the process.  The downcasing of symbols is unconventional,
but was selected after some consideration.  Observations suggest that
the type of systems we want to support either have lowercase as
customary case (Unix, Mac, windows) or silently convert lowercase to
uppercase (lpns), so this makes more sense than attempting to use ':case
:common' as argument to 'make-pathname', which is reported not to work
on some implementations.

Short answer: just don't do this. Stick to lower-case system names.
> 
> These are the directories:
> 
>     /home/LE/sbcl/LE.asd  ;holds the definition, as shown below
>     /home/LE/sbcl/src   ;holds the lisp source files for my project
> 
> 
> The system is Debian, udpated today.  quicklisp is installed.
> 
> These are the commands I type:
> 
>     (require :asdf)
>     (pushnew (truename ".") asdf:*central-registry* :test #'equal)
>     (asdf:load-system :LE) 
>     (require :LE)
>     (use-package 'LE)
> 
> 
> in a fresh environment this fails,  and dumps me in the debugger,
> asdf:load-system tells me:  
> 
>     "Component :LE not found:
> 
> 
> Then I exit the debugger, and run it a second time and it works.  Not
> sure, may need quotes the first time, a colon the second, i.e. it is quirky.
> 
> I have tried a lot of variations of the above, pretty much every example
> I've been able to find, some have "LE" instead of :LE everywhere.
> 
> Here is the value of asdf:*central-registry* after the push:
> 
>     *  asdf:*central-registry*
> 
>     (#P"/home/LE/sbcl/" #P"/home/mordecai/quicklisp/quicklisp/")
> 
> 
> 
> Here is the asdf file that is located in /home/LE/sbcl:
> 
>     (in-package :asdf-user)
> 
>     (defsystem #:LE
>       :name "LE"
>       :version "0.1"
>       :author "Thomas W. Lynch <thomas.lynch at reasoningtechnology.com
>     <mailto:thomas.lynch at reasoningtechnology.com>>"
>       :description "Lynch's extensions"
>       :depends-on ("local-time")
>     ;; :serial t
>       :components((:module "src"
>                    :components (
>                                  (:file "package")
>                                  (:file "fundamental" :depends-on
>     ("package"))
>                                  (:file "test" :depends-on ("fundamental"))
>                                  (:file "string" :depends-on ("test"))
>                                  (:file "functions" :depends-on ("test"))
>                                  (:file "list-0" :depends-on ("functions"))
>     ;;                             (:file "list-L" :depends-on ("list-0"))
>                                  ))))
> 
> 
> 




More information about the asdf-devel mailing list