Commit fd15a570 authored by Robert P. Goldman's avatar Robert P. Goldman

Substantially extended the discussion on version specification.

parent 273eea7b
......@@ -668,7 +668,7 @@ usually be saved as @file{hello-lisp.asd}:
(defsystem "hello-lisp"
:description "hello-lisp: a sample Lisp system."
:version "0.2"
:version "0.2.1"
:author "Joe User <joe@@example.com>"
:licence "Public Domain"
:components ((:file "packages")
......@@ -724,6 +724,19 @@ It is possible, though almost never necessary, to override this behaviour.}.
This is a good thing because the user can move the system sources
without having to edit the system definition.
@c FIXME: Should have cross-reference to "Version specifiers" in the
@c defsystem grammar, but the cross-referencing is so broken by
@c insufficient node breakdown that I have not put one in.
@item
Make sure you know how the @code{:version} numbers will be parsed! They
are parsed as period-separated lists of integers. I.e., in the example,
@code{0.2.1} is to be interpreted, roughly speaking, as @code{(0 2 1)}.
In particular, version @code{0.2.1} is interpreted the same as
@code{0.0002.1} and is strictly version-less-than version @code{0.20.1},
even though the two are the same when interpreted as decimal fractions.
@cindex version specifiers
@cindex :version
@end itemize
@node A more involved example, The defsystem grammar, The defsystem form, Defining systems with defsystem
......@@ -735,7 +748,7 @@ slightly convoluted example:
@lisp
(defsystem "foo"
:version "1.0"
:version "1.0.0"
:components ((:module "mod"
:components ((:file "bar")
(:file"baz")
......@@ -853,7 +866,6 @@ component-dep-fail-option := :fail | :try-next | :ignore
@end example
@subsection Component names
Component names (@code{simple-component-name})
......@@ -954,6 +966,22 @@ fulfills whatever constraints are required from that component type
on the other hand, you can circumvent the file type that would otherwise
be forced upon you if you were specifying a string.
@subsection Version specifiers
@cindex version specifiers
@cindex :version
Version specifiers are parsed as period-separated lists of integers. I.e., in the example,
@code{0.2.1} is to be interpreted, roughly speaking, as @code{(0 2 1)}.
In particular, version @code{0.2.1} is interpreted the same as
@code{0.0002.1} and is strictly version-less-than version @code{0.20.1},
even though the two are the same when interpreted as decimal fractions.
System definers are encouraged to use version identifiers of the form
@var{x}.@var{y}.@var{z} for major version, minor version (compatible
API) and patch level.
@xref{Common attributes of components}.
@subsection Warning about logical pathnames
@cindex logical pathnames
......@@ -1392,17 +1420,23 @@ to a Unix-style syntax.
@xref{The defsystem grammar,,Pathname specifiers}.
@subsubsection Version identifier
@findex version-satisfies
@cindex :version
This optional attribute is used by the @code{test-system-version} operation.
@xref{Predefined operations of ASDF}.
For the default method of @code{test-system-version},
This optional attribute is used by the generic function
@code{version-satisfies}, which tests to see if @code{:version}
dependencies are satisfied.
the version should be a string of integers separated by dots,
for example @samp{1.0.11}.
for example @samp{1.0.11}.
For more information on the semantics of version specifiers, see @ref{The defsystem grammar}.
@c This optional attribute is intended to be used by the @code{test-system-version} operation.
@c @xref{Predefined operations of ASDF}.
@c @emph{Nota Bene}:
@c This operation, planned for ASDF 1,
@c is still not implemented yet as of ASDF 2.
@c Don't hold your breath.
@emph{Nota Bene}:
This operation, planned for ASDF 1,
is still not implement yet as of ASDF 2.
Don't hold your breath.
@subsubsection Required features
......@@ -1509,6 +1543,14 @@ If you have the time for some CLISP hacking,
I'm sure they'd welcome your fixes.
@c Doesn't CLISP now support LIST method combination?
See the discussion of the semantics of @code{:version} in the defsystem
grammar.
@c FIXME: Should have cross-reference to "Version specifiers" in the
@c defsystem grammar, but the cross-referencing is so broken by
@c insufficient node breakdown that I have not put one in.
@subsubsection pathname
This attribute is optional and if absent (which is the usual case),
......
Markdown is supported
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