Commit 424a8ee9 authored by Gary King's avatar Gary King
Browse files

website and manual updates

parent 1636ad8f
......@@ -156,6 +156,7 @@ before the component in question has been compiled."}
| :operation-done-p method-form
| :depends-on ( {dependency-def}* )
| :serial [ t | nil ]
| :weakly-depends-on ( {dependency-def}* )
| :in-order-to ( {dependency}+ )
component-list := ( {component-def}* )
......@@ -200,6 +201,34 @@ is equivalent to
(:file "b" :depends-on ("a"))
(:file "c" :depends-on ("a" "b")))
{anchor section-weakly-depends-on}
#### Weakly-depends-on
The `weakly-depends-on` argument says of the component
depended on "if this component can be found, then impose a
dependency, otherwise ignore it." At the top level, this can
be useful for allowing a system to take advantage of another
system, if it is present. For example, a system might
generate on-line documentation if a documentation generation
system (like [TINAA][tinaa-project],
[Albert][albert-project], etc.) was present. A system that
does text matching might do only simple matching but weakly
depend on a regular expression system and, if that system is
installed, would be able to also do regular expression
matching.
##### Notes:
* It's not entirely clear that this option is very
helpful at a level below the top-level. Since it uses
find-component, the behavior differs between top level and
lower level; perhaps that needs to be explained.
* Presumably this will be most useful when complemented by
some conditional loading construct in the system that has
the dependency. What is that construct?
#### Source location
The `:pathname` option is optional in all cases for systems
......@@ -258,6 +287,64 @@ Lisp in .asd files:
can easily control the disposition of output from ASDF
operations.
## System dependencies
**Warning**: As of July 20, 2009, this aspect of ASDF is in flux.
We suggest not relying too heavily on the current syntax.
There are several ways in which one system can depend on
another:
* simple dependency (the default)
* `weak` dependency (using [`:weakly-depends-on`][weakly-depends-on])
* `contingent` dependency (not currently implemented)
[weakly-depends-on]: #section-weakly-depends-on
The following tables illustrate how these dependencies work:
#### Simple
<table caption="Simple">
<tr><th><th colspan="2">component status</th><th rowspan="2" valign="top">effect</th></tr>
<tr><th>expression</th><th>component a</th><th>component/feature b</th></tr>
<tr><td>a (:depends-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">present</td><td>(operate b), (operate a)</td>
<tr><td>a (:depends-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">absent</td><td>error</td>
<tr><td>a (:depends-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">present</td><td> error</td>
<tr><td>a (:depends-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">absent</td><td> error</td></tr>
</table>
</p>
#### `:weakly-depends-on`
<table>
<tr><th><th colspan="2">component status</th><th rowspan="2" valign="top">effect</th></tr>
<tr><th>expression</th><th>component a</th><th>component/feature b</th></tr>
<tr><td>a (:weakly-depends-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">present</td><td> (operate b), (operate a)</td>
<tr><td>a (:weakly-depends-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">absent</td><td> (operate a)</td>
<tr><td>a (:weakly-depends-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">present</td><td> error</td>
<tr><td>a (:weakly-depends-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">absent</td><td> error</td></tr>
</table>
</p>
#### Contingent
<table>
<tr><th><th colspan="2">component status</th><th rowspan="2" valign="top">effect</th></tr>
<tr><th>expression</th><th>component a</th><th>component/feature b</th></tr>
<tr><td>a (:contingent-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">present</td><td> (operate b), (operate a)</td>
<tr><td>a (:contingent-on (:b))</td><td style="text-align:center">present</td><td style="text-align:center">absent</td>
<tr><td>a (:contingent-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">present</td><td> error</td>
<tr><td>a (:contingent-on (:b))</td><td style="text-align:center">absent</td><td style="text-align:center">absent</td><td> error</td></tr>
</table>
</p>
<hr />
## The object model of ASDF
ASDF is entirely object-oriented. Both a system's
......
......@@ -28,3 +28,7 @@
[hs-require]: http://www.lispworks.com/documentation/HyperSpec/Body/f_provid.htm#require
[hs-standard-output]: http://www.lispworks.com/documentation/HyperSpec/Body/v_debug_.htm#STstandard-outputST
[tinaa-project]: http://common-lisp.net/project/tinaa/
[albert-project]: http://www.cliki.net/Albert/
\ No newline at end of file
......@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>currentDocument</key>
<string>source/index.mmd</string>
<string>source/manual.mmd</string>
<key>documents</key>
<array>
<dict>
......@@ -16,15 +16,15 @@
<key>filename</key>
<string>source/index.mmd</string>
<key>lastUsed</key>
<date>2009-06-21T20:13:19Z</date>
<key>selected</key>
<true/>
<date>2009-07-18T14:05:17Z</date>
</dict>
<dict>
<key>filename</key>
<string>source/manual.mmd</string>
<key>lastUsed</key>
<date>2009-06-21T19:56:37Z</date>
<date>2009-07-20T22:30:40Z</date>
<key>selected</key>
<true/>
</dict>
<dict>
<key>filename</key>
......@@ -152,28 +152,44 @@
<key>caret</key>
<dict>
<key>column</key>
<integer>24</integer>
<integer>51</integer>
<key>line</key>
<integer>7</integer>
<integer>39</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<integer>28</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>63</integer>
<key>line</key>
<integer>39</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>51</integer>
<key>line</key>
<integer>39</integer>
</dict>
</dict>
<key>source/manual.mmd</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>55</integer>
<integer>0</integer>
<key>line</key>
<integer>948</integer>
<integer>348</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>978</integer>
<integer>322</integer>
</dict>
<key>source/resources/footer.md</key>
<dict>
......@@ -222,14 +238,14 @@
<key>caret</key>
<dict>
<key>column</key>
<integer>8</integer>
<integer>47</integer>
<key>line</key>
<integer>16</integer>
<integer>33</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<integer>5</integer>
</dict>
<key>source/resources/ug-footer.md</key>
<dict>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment