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
Package registry
Model registry
Operate
Environments
Terraform modules
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
Tarn Burton
asdf
Commits
66b7fec4
Commit
66b7fec4
authored
10 years ago
by
Francois-Rene Rideau
Browse files
Options
Downloads
Patches
Plain Diff
Documentation tweak: more manual about package-inferred-system.
README update and conversion to markdown.
parent
eb45d7cc
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
.gitignore
+1
-0
1 addition, 0 deletions
.gitignore
README.md
+192
-0
192 additions, 0 deletions
README.md
doc/asdf.texinfo
+17
-19
17 additions, 19 deletions
doc/asdf.texinfo
with
210 additions
and
19 deletions
.gitignore
+
1
−
0
View file @
66b7fec4
...
...
@@ -26,6 +26,7 @@ doc/asdf.dvi
*.tmp
LICENSE
README.html
tmp/
man/
lib/
...
...
This diff is collapsed.
Click to expand it.
README
→
README
.md
+
192
−
0
View file @
66b7fec4
ASDF: Another System Definition Facility
========================================
Quick Summary
-------------
1- Build it with::
make
2- Make sure you put it under a path registered by the source-registry,
if that isn't the case yet (see the manual). One place would be::
~/.local/share/common-lisp/source/asdf/
or, assuming your implementation provides ASDF 3.1 or later::
~/common-lisp/asdf/
What is ASDF?
-------------
...
...
@@ -34,7 +15,7 @@ Except everything is different in Common Lisp, and ultimately much simpler,
though it requires acquiring some basic concepts.
Importantly, ASDF builds all software in the current Lisp image.
To use ASDF, read our manual:
:
To use ASDF, read our manual:
http://common-lisp.net/project/asdf/asdf.html
...
...
@@ -43,7 +24,7 @@ will get you started as a simple user.
If you want to define your own systems, further read the section
Defining systems with defsystem.
The manual is also in the doc/ subdirectory, and can be prepared with:
:
The manual is also in the doc/ subdirectory, and can be prepared with:
make doc
...
...
@@ -51,22 +32,42 @@ The manual is also in the doc/ subdirectory, and can be prepared with::
ASDF 3 now includes an extensive runtime support library:
UIOP, the Utilities for Implementation- and OS- Portability.
Its documentation unhappily lies mainly in the source code and docstrings.
See uiop/README for an introduction.
See
[
`
uiop/README
`
](
uiop/README
)
for an introduction.
More information and additional links can be found on ASDF's home page at:
:
More information and additional links can be found on ASDF's home page at:
http://common-lisp.net/project/asdf/
Quick Summary
-------------
Just use
`(require "asdf")`
to load your implementation-provided ASDF.
If it is recent enough (3.0 or later, check its
`(asdf:asdf-version)`
),
then it will automatically upgrade to the ASDF provided as source code,
assuming the source code in under a path registered by the source-registry.
Building and testing it
-----------------------
If you cloned our git repository, bootstrap a copy of build/asdf.lisp with::
First, make sure ASDF is checked out under a path registered by the source-registry,
if that isn't the case yet (see the manual). One place would be:
~/.local/share/common-lisp/source/asdf/
or, assuming your implementation provides ASDF 3.1 or later:
~/common-lisp/asdf/
If you cloned our git repository, bootstrap a copy of build/asdf.lisp with:
make
Before you may run tests, you need a few CL libraries.
The simplest way to get them is as follows, but read below:
:
The simplest way to get them is as follows, but read below:
make ext
...
...
@@ -84,10 +85,12 @@ to use your own tools to download a version of them you control.
If you use Quicklisp, you may let Quicklisp download those you don't have.
In these cases, you do NOT want to use
However, if you want to let ASDF download known-working versions
of its dependencies, you can do it with::
of its dependencies, you can do it with:
make ext
To run all the tests on your favorite Lisp implementation $L,
choose your most elaborate installed system $S, and try:
:
choose your most elaborate installed system $S, and try:
make t u l=$L s=$S
...
...
@@ -95,92 +98,95 @@ choose your most elaborate installed system $S, and try::
Debugging tip
-------------
To load ASDF in such a way that M-. will work, install the source code, and run:
:
To load ASDF in such a way that M-. will work, install the source code, and run:
(asdf:load-system :uiop) ;; loading uiop is simple
(map () 'load ;; loading asdf/defsystem is tricky
(mapcar 'asdf:component-pathname
(asdf::required-components :asdf/defsystem :keep-component 'asdf:cl-source-file)))
(asdf:load-system :uiop) ;; loading uiop is simple
(map () 'load ;; loading asdf/defsystem is tricky
(mapcar 'asdf:component-pathname
(asdf::required-components :asdf/defsystem :keep-component 'asdf:cl-source-file)))
What has changed?
-----------------
You can consult the debian/changelog for an overview of the
You can consult the
`
debian/changelog
`
for an overview of the
significant changes in each release, and
the git log for a detailed description of each commit.
the
`
git log
`
for a detailed description of each commit.
How do I navigate this source directory?
----------------------------------------
asdf.asd
The system definition for building ASDF with ASDF.
*.lisp
The source code files for asdf/defsystem.
See asdf.asd for the order in which they are loaded.
uiop/
Utilities of Implementation- and OS- Portability,
the portability layer of ASDF. It has its own README,
and functions all have docstrings.
Makefile
a minimal Makefile for bootstrapping purposes.
Most of the logic is in the asdf-tools system
tools/
asdf-tools, a system to build, test and release ASDF. It includes:
asdf-tools -- a shell script to run it as a shell command.
load-asdf.lisp -- how to load ASDF in a self-contained project
asdf-tools.asd -- system definition for asdf-tools
*.lisp -- the source code for asdf-tools
install-asdf-as-module -- replace and update an implementation's ASDF
build.xcvb
The system definition for building ASDF with XCVB.
It hasn't been tested or maintained for years and has bitrotten.
version.lisp-expr
The current version. Bumped up every time the code changes, using
./tools/asdf-builder bump
doc/
documentation for ASDF, including:
index.html -- the web page for http://common-lisp.net/project/asdf/
asdf.texinfo -- our manual
Makefile -- how to build the manual
cclan.png lisp-logo120x80.png style.css favicon.ico
-- auxiliaries of index.html
test/
regression test scripts (and ancillary files) for developers to check
that they don't unintentionally break any of the functionality of ASDF.
Far from covering all of ASDF.
contrib/
a few contributed files that show case how to use ASDF.
debian/
*
`asdf.asd`
*
The system definition for building ASDF with ASDF.
*
`*.lisp`
*
The source code files for asdf/defsystem.
See asdf.asd for the order in which they are loaded.
*
`uiop/`
*
Utilities of Implementation- and OS- Portability,
the portability layer of ASDF. It has its own
`README`
,
and functions all have docstrings.
*
`Makefile`
*
a minimal Makefile for bootstrapping purposes.
Most of the logic is in the asdf-tools system
*
`tools/`
*
`asdf-tools`
, a system to build, test and release ASDF. It includes:
*
`asdf-tools`
-- a shell script to run it as a shell command.
*
`load-asdf.lisp`
-- how to load ASDF in a self-contained project
*
`asdf-tools.asd`
-- system definition for asdf-tools
*
`*.lisp`
-- the source code for asdf-tools
*
Also in this directory:
*
`install-asdf.lisp`
-- replace and update an implementation's ASDF
*
`cl-source-registry-cache.lisp`
-- update a cache for the source-registry
*
`build.xcvb`
*
The system definition for building ASDF with XCVB.
It hasn't been tested or maintained for years and has bitrotten.
*
`version.lisp-expr`
*
The current version. Bumped up every time the code changes, using:
./tools/asdf-builder bump
*
`doc/`
*
documentation for ASDF, including:
*
`index.html`
-- the web page for http://common-lisp.net/project/asdf/
*
`asdf.texinfo`
-- our manual
*
`Makefile`
-- how to build the manual
*
`cclan.png`
`lisp-logo120x80.png`
`style.css`
`favicon.ico`
-- auxiliaries of
`index.html`
*
`test/`
*
regression test scripts (and ancillary files) for developers to check
that they don't unintentionally break any of the functionality of ASDF.
Far from covering all of ASDF.
*
`contrib/`
*
a few contributed files that show case how to use ASDF.
*
`debian/`
files for packaging on debian, ubuntu, etc.
build/
where the Makefile and asdf-tools store their output files, including
asdf.lisp -- the current one-file deliverable of ASDF
asdf-XXX.lisp -- for upgrade test purposes, old versions
results/ -- logs of tests that have been run
fasls/ -- output files while running tests.
*
`
build/
`
*
where the Makefile and asdf-tools store their output files, including
*
`
asdf.lisp
`
-- the current one-file deliverable of ASDF
*
`
asdf-XXX.lisp
`
-- for upgrade test purposes, old versions
*
`
results/
`
-- logs of tests that have been run
*
`
fasls/
`
-- output files while running tests.
ext/
external dependencies, that can be populated with `make ext`
or equivalently with `git submodule update`.
*
`
ext/
`
*
external dependencies, that can be populated with
`make ext`
or equivalently with
`git submodule update`
.
README
this file
*
`
README
`
*
this file
TODO
plenty of ideas for how to further improve ASDF.
*
`
TODO
`
*
plenty of ideas for how to further improve ASDF.
Last updated T
ue
sday, September
2nd
, 2014.
Last updated T
hur
sday, September
11th
, 2014.
This diff is collapsed.
Click to expand it.
doc/asdf.texinfo
+
17
−
19
View file @
66b7fec4
...
...
@@ -1751,25 +1751,21 @@ and create a file @file{my-lib.asd}
with the @code
{
:class :package-inferred-system
}
option in its @code
{
defsystem
}
.
For instance:
@example
#-asdf (error "my-lib requires ASDF 3")
#-asdf
3
(error "my-lib requires ASDF 3")
(defsystem my-lib
:class :package-inferred-system
:defsystem-depends-on (:asdf-package-system)
:depends-on (:lil/interface/all
:lil/pure/all
:lil/stateful/all
:lil/transform/all)
:in-order-to ((test-op (load-op :lil/test/all)))
:perform (test-op (o c) (symbol-call :lil/test/all :test-suite)))
(defsystem :lil/test :depends-on (:lil/test/all))
(register-system-packages :lil/interface/all '(:interface))
(register-system-packages :lil/pure/all '(:pure))
(register-system-packages :lil/stateful/all '(:stateful))
(register-system-packages :lil/transform/classy '(:classy))
(register-system-packages :lil/transform/posh '(:posh))
(register-system-packages :lil/test/all '(:lil/test))
:depends-on (:my-lib/interface/all
:my-lib/src/all
:my-lib/extras/all)
:in-order-to ((test-op (load-op :my-lib/test/all)))
:perform (test-op (o c) (symbol-call :my-lib/test/all :test-suite)))
(defsystem :my-lib/test :depends-on (:my-lib/test/all))
(register-system-packages :my-lib/interface/all '(:my-lib-interface))
(register-system-packages :my-lib/src/all '(:my-lib-implementation))
(register-system-packages :my-lib/test/all '(:my-lib-test))
(register-system-packages
:closer-mop
...
...
@@ -1809,9 +1805,11 @@ ASDF can tell that this file depends on system @code{closer-mop} (registered abo
(package and system names match, and they will be looked up hierarchically).
ASDF also detects dependencies from @code
{
:import-from
}
clauses.
To depend on a system without using a package or importing any symbol from it
(because you'll fully qualify them when used),
you may thus use an @code
{
:import-from
}
clause with an empty list of symbols, as in:
You may thus import a well-defined set of symbols from an existing package
as loaded from suitably named system;
or if you prefer to use any such symbol fully qualified by a package prefix,
you may declare a dependency on such a package and its corresponding system
via an @code
{
:import-from
}
clause with an empty list of symbols, as in:
@example
(defpackage :foo/bar
...
...
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