

| |||||||
|
You are here: Root > Software > Development > Tools > Defystem
ASDlite is a light-weight version of ASDF, a popular build facility for Common Lisp.
| Web site | http://lisp.ystok.ru/asdlite/ |
| Mailing list | |
| Version | 1.0 - |
| Maturity | Stable |
| OS compatibility | Linux, Unix, Windows |
| ASDF installable | No |
| Official Download | http://lisp.ystok.ru/asdlite/asdlite.lisp |
| Mirrored Download | |
| Source code repository |
:compile.operation ::= keyword | operation-instance operation-type ::= keyword | type-symbol operation-designator ::= keyword | (keyword . plist) | type-symbol | operation-instance
Operations are passed to perform and other operation-specific methods.
Operation designators can be used in the right-hand side of rules.
We encourage using simple keywords like :compile or :load. For these, ASDlite
defines corresponding methods with eql specializers.
The plist allows you to pass key arguments to the operation methods. In the normal mode, ASDlite accepts only keyword-based forms.
If you feel these are not enough and need "full-fledged" ASDF operation classes, you can switch to the ASDF compatibility mode as follows:
:asdf-compat into *features* before
compiling asdlite.lisp,asdf:compile-op, asdf:load-op and the like,operation class etc.In the compatibility mode, ASDlite accepts all the above forms of operations and designators.
An action is a pair of an operation and a component. Some actions modify the file system, whereas other actions modify the current image, and this implies a difference in how to interpret timestamps.
Dependencies (rules) between actions are stored in each (target) component and represented by the two alists of target operations to other (dependee) actions.
There are two kinds of rules.
rule ::= (target-op (dep-op {dependee}+)+)
target-op ::= operation-type
dep-op ::= operation-designator | :features
dependee ::= name-or-path | (name-or-path . plist)
name-or-path ::= component-name | vector | feature
plist ::= ([:features feature] [:version minimum-version] {property value}*)
feature ::= keyword | feature-expression
(:component "A" :caused-by ((:compile (:compile "B" "C") (:load "D"))
(:load (:load "B" "C")))
:requires ((:compile (:load "B"))))
If B has changed, B.fasl needs to be recompiled. So the caused-by rule triggers recompiling of A.fasl irrespective of whether A has itself changed.
If A has changed, this neither imply compiling B nor C. But due to the requires rule loading B.fasl must be in the image precede compiling A.
CAUTION:
A component is only allowed to depend on its siblings, i.e. the components
of the same module, no mater how we define dependencies:
:depends-on option,operation-caused-by/-requires method.make-sub-operation, this is not the case.
:do-first initarg is actually ignored by ASDF - its always set to ((compile-op (load-op ,@depends-on))))eval,remove-method in LW 4.4, system
redefinition intrusively signals about this.For general concepts and functions, follow the ASDF documentation.
Defystem | Windows family | Unix family | LLGPL
You must be logged to add a note
You must be logged to add a comment