Look at the following Symbolics System Definition:
;;;(sct:defsystem :foo ;;; (:default-pathname "scratch/" ;;; :default-module-type :lisp) ;;; ;;; (:module foo ("FOO")) ;;; ;;; (:module bar ("BAR") ;;; (:in-order-to (:compile :load) (:load foo))) ;;; ;;; )
I translated this to ASDF as follows:
(ASDF:DEFSYSTEM :FOO :COMPONENTS ((:MODULE FOO :PATHNAME "" :COMPONENTS ((:FILE "foo"))) (:MODULE BAR :PATHNAME "" :COMPONENTS ((:FILE "bar")) :IN-ORDER-TO ((ASDF:COMPILE-OP (ASDF:LOAD-OP FOO)) (ASDF:LOAD-OP (ASDF:LOAD-OP FOO))))))
This is not exactly equivalent, because the semantics of :IN-ORDER-TO is different in Symbolics SCT and ASDF.
However I get a very strange behavior of the ASDF System.
I write the ASDF:DEFSYSTEM form in a file "scratch/sysdcl.lisp" I compiled the system and then restarted Lisp in order to load the system:
CL-USER(2): (load "scratch/sysdcl") ; Loading /home/usr/benni/lisp/scratch/sysdcl.lisp T CL-USER(3): (asdf:find-system :foo) #<ASDF:SYSTEM "foo"> CL-USER(4): (asdf:load-system :foo) ; Fast loading /home/usr/benni/lisp/scratch/foo.fasl ;;; Compiling file /home/usr/benni/lisp/scratch/bar.lisp ;;; Writing fasl file /home/usr/benni/lisp/scratch/ASDF-TMP-bar.fasl ;;; Fasl write complete ; Fast loading /home/usr/benni/lisp/scratch/bar.fasl #<ASDF:LOAD-OP NIL @ #x7292bc42> CL-USER(5):
As you see it recompiles one of the files. This happens after each restart of Lisp (Allegro CL 8.1). ASDF:LOAD-SYSTEM each time recompiles "bar.lisp" even if no file is changed.
Output Translations were disabled by calling (ASDF:DISABLE-OUTPUT-TRANSLATIONS)