[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