[fomus-devel] loading fomus

Rick Taube taube at uiuc.edu
Wed Jul 20 12:02:52 UTC 2005


Hi the docs say:

> Example 2.1. Compiling and Loading
> CL-USER> (load "path_to_fomus_directory/load.lisp")

but this does not work in either openmcl or cmucl or sbcl.  there are 
several problems, the first is that neither openmcl or cmucl have the 
ASDF package preloaded, so  when you do your READ:

(with-open-file (f (merge-pathnames "fomus.asd" *load-pathname*) 
:direction :input)
   (destructuring-bind (xxx1 xxx2 &key components &allow-other-keys) 
(read f)

it breaks because your fomus.asd assumes there is an asdf package:

(asdf:defsystem "fomus"

i dont think i makes any sense to read that file: either insure that 
asdf is aroun, load the file and call asdf:operate or dont assume the 
asdf package at all.

the second problem is that (file-write-date cn) will return NIL if cn 
does not exist:

? (file-write-date #P"/Lisp/fomus/package.dfsl")
NIL

which breaks your >=   date comparison.

this fixes both issues and works in openmcl cmucl and sbcl

------------------------------------------ fomus/load.lisp
;; -*-lisp-*-
;; Load file for FOMUS

(defparameter *components*
   '("package" "misc" "deps" "data" "classes" "util" "accidentals" 
"beams"
     "marks" "other" "ottavas" "parts" "postproc" "split" "staves" 
"voices"
     "quantize" "backend_ly" "backends" "main" "interface" "final"))

(loop for na in *components*
   for cl = (merge-pathnames na *load-pathname*)
   for cn = (compile-file-pathname cl)
   for wd = (file-write-date cn)
   when (or (not wd) (>= (file-write-date cl) wd)) do (compile-file cl)
   do (load cn))





More information about the Fomus-devel mailing list