Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
asdf
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Didier Verna
asdf
Commits
ef35ce35
Commit
ef35ce35
authored
11 years ago
by
Robert P. Goldman
Browse files
Options
Downloads
Patches
Plain Diff
A quick pass over front three chapters.
parent
393ca61f
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/asdf.texinfo
+50
-37
50 additions, 37 deletions
doc/asdf.texinfo
with
50 additions
and
37 deletions
doc/asdf.texinfo
+
50
−
37
View file @
ef35ce35
...
...
@@ -210,7 +210,7 @@ so you may more easily modify it, we recommend clbuild.
Load ASDF itself into your Lisp image, either through
@code
{
(require "asdf")
}
(if it's supplied by your lisp implementation)
or else through
@code
{
(load "/path/to/asdf.lisp")
}
. For more details, @
x
ref
{
Loading ASDF
}
.
@code
{
(load "/path/to/asdf.lisp")
}
. For more details, @ref
{
Loading ASDF
}
.
@item
Make sure ASDF can find system definitions
...
...
@@ -270,10 +270,10 @@ to make sure it's all working properly. @xref{Using ASDF}.
Most recent Lisp implementations include a copy of ASDF 3,
or at least ASDF 2.
You can usually load this copy using Common Lisp's @code
{
require
}
function@footnote
{
You can usually load this copy using Common Lisp's @code
{
require
}
function
.
@footnote
{
NB: all implementations except GNU CLISP also accept
@code
{
(require "ASDF")
}
, @code
{
(require 'asdf)
}
and @code
{
(require :asdf)
}
.
For portability's sake, you
probably want to
use @code
{
(require "asdf")
}
.
For portability's sake, you
should
use @code
{
(require "asdf")
}
.
}
@lisp
...
...
@@ -355,23 +355,26 @@ amongst the regularly configured systems, before it compiles anything else.
@c FIXME: this refers to "as above", but there's no description above.
If your implementation does provides ASDF 2 (or later),
but not ASDF 3 or later,
and you want to upgrade to a more recent version,
you need to install and configure your ASDF just like any other system:
@xref
{
Configuring ASDF to find your systems
}
.
Additionally, you need to explicitly tell ASDF to load itself,
right after you require your implementation's old ASDF 2:
If you want to upgrade to a more recent ASDF version,
you need to install and configure your ASDF just like any other system
(@pxref
{
Configuring ASDF to find your systems
}
):
@lisp
(require "asdf")
(asdf:load-system :asdf)
@end lisp
This will work as long as your
implementation provides ASDF 2 (or later).
If on the other hand, your implementation only provides an old ASDF,
you will require a special configuration step and an old-style loading.
Take special attention to not omit the trailing directory separator
@code
{
/
}
at the end of your pathname:
Note that to our knowledge all implementations that provide ASDF
provide ASDF 2 in their latest release, so
you may want to simply upgrade your implementation rather than load ASDF
into an old implementation. We provide the following details only for
users handling corner cases such as maintaining legacy software.
@lisp
(require "asdf")
...
...
@@ -379,34 +382,47 @@ Take special attention to not omit the trailing directory separator
(asdf:oos 'asdf:load-op :asdf)
@end lisp
Note that ASDF 1 won't redirect its output files,
or at least won't do it according to your usual ASDF 2 configuration.
You therefore need write access on the directory
where you install the new ASDF,
and make sure you're not using it
for multiple mutually incompatible implementations.
At worst, you may have to have multiple copies of the new ASDF,
e.g. one per implementation installation, to avoid clashes.
Note that to our knowledge all implementations that provide ASDF
provide ASDF 2 in their latest release, so
you may want to upgrade your implementation rather than go through that hoop.
Take special attention not to omit the trailing directory separator
@code
{
/
}
at the end of your pathname!
@subsection Notes about ASDF 1
ASDF 1 won't redirect its output files,
so to install a new version of ASDF on top of ASDF 1,
you must have write access on the directory
where you install the new ASDF.
This is required so that ASDF 1 can write @file
{
asdf.fasl
}
there.
Because ASDF 1 doesn't redirect its output files, you cannot share a
single copy of @file
{
asdf.lisp
}
among multiple mutually incompatible
Common Lisp implementations.
It will be safest to
to have multiple copies of the new ASDF,
one per CL implementation, to avoid clashes between object files.
Finally, if you are using an unmaintained implementation
that does not provide ASDF at all,
see @pxref
{
Loading ASDF,,Loading an otherwise installed ASDF
}
below.
@subsection Issues with upgrading ASDF
Note that there are some limitations to upgrading ASDF:
@itemize
@item
Previously loaded ASDF extensions become invalid, and will need to be reloaded.
This applies to e.g. CFFI-Grovel, or to hacks used by ironclad, etc.
Since it isn't possible to automatically detect what extensions are present
that need to be invalidated,
ASDF will actually invalidate all previously loaded systems
when it is loaded on top of a forward-incompatible ASDF version
(as per @code
{
asdf/upgrade::*oldest-forward-compatible-asdf-version*
}
which is 2.33 at the time of this writing).
Furthermore, starting with ASDF 3 (2.27 or later),
Examples include CFFI-Grovel, hacks used by ironclad, etc.
Since it isn't possible to automatically detect what extensions
need to be invalidated,
ASDF will invalidate @emph
{
all
}
previously loaded systems
when it is loaded on top of a forward-incompatible ASDF version.
@footnote
{
@vindex *oldest-forward-compatible-asdf-version*
Forward incompatibility can be determined using the variable
@code
{
asdf/upgrade::*oldest-forward-compatible-asdf-version*
}
,
which is 2.33 at the time of this writing.
}
Starting with ASDF 3 (2.27 or later),
this self-upgrade will be automatically attempted as the first step
to any system operation, to avoid any possibility of
a catastrophic attempt to self-upgrade in midflight.
...
...
@@ -414,14 +430,11 @@ a catastrophic attempt to self-upgrade in midflight.
@c FIXME: Fix grammar below.
@item
For this and many other reasons,
it important reason to
load, configure and upgrade ASDF
(if needed)
you should
load, configure and upgrade ASDF
as one of the very first things done by your build and startup scripts.
Until all implementations provide ASDF 3 or later,
it is safer if you upgrade ASDF and its extensions as a special step
It is safer if you upgrade ASDF and its extensions as a special step
at the very beginning of whatever script you are running,
before you start using ASDF to load anything else;
even afterwards, it is still a good idea, to avoid having to
load and reload code twice as it gets invalidated.
before you start using ASDF to load anything else.
@item
Until all implementations provide ASDF 3 or later,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment