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))