In principle, de.setf.amqp
is built with asdf
.
- Obtain the required libraries (see amqp.asd). The sources are reflected in the respective
system names:
- net.common-lisp.usocket :
@ r520
; Take the svn source; If you use0.4.1
, you will also needsplit-sequence
. - net.common-lisp.closer-mop :
@ 0-61
(also 0-55) - net.common-lisp.bordeaux-threads :
@ 0-8-0
(or @ patch 165) - net.common-lisp.alexandria :
- de.weitz.cl-ppcre :
@ 2.0.1
- com.b9.puri.ppcre @github/lisp :
This version modifies the original to replace the parser with
a cl-ppcre implementation which supports userinfo and to add an argument to
merge-uri
for non-strict scheme merging.
- net.common-lisp.usocket :
- Obtain the
de.setf.amqp
source and that for thede.setf.utility
library- de.setf.amqp
- de.setf.utility :
This includes the
de.setf.utility.mime
module.
- Obtain and load
asdf
, add thehierarchical names
utility. - Place the libraries in a source tree to mirror their global identity as reflected in the required system
names, and add the root of this tree to the
asdf
registry. If the central registry entry specifies a logical host with binary mapping, the hierarchical naming mechanism should suffice to map binaries the specified location. Thebordeaux-threads
->alexandria
reference is unqualified, and as such, requires additional registration. - Compile and load as:
(asdf:operate 'asdf:load-op :de.setf.amqp._version_)
The example initialization file was used for CCL and SBCL. Contact me should any questions arise.
ASDF requires version 1.622 in order to construct correct component pathnames where the system has a logical root pathname.
On OS X, I have observed symbolic registry finder links to fail to work from ccl and sbcl. An ln -s
in the terminal is required.
Further instructions are in README-build-ccl.md
There are, to date, 498 .asd
files in my combined production and development source trees.
Each system is identified by provenance and found in the file system at a location to be inferred from its identifier. Thus, given the
development source tree root
/Development/Source/dev/Library/
the pathname for the de.setf.amqp
system definition is
/Development/Source/dev/Library/de/setf/amqp/amqp.asd
This convention is supported by the asdf
hierarchical names
extension.
It adds a system search method which parses the system identifier and uses its elements to
prospectively augment locations from the *central-registry*
with directory paths.
Versions are supported by probing with a wild suffix added to the name of the final directory, and by
electing the most recently modified system file if several versions are found.
A nickname is added to each loaded system to augment an unqualified name with a qualified one.
Where the dependencies in a system definition use unqualified cross-references, this fails.
Thus alexandria
requires a registry addition to permit the cross-reference from usocket
.
The source and binary file names are expressed as logical pathnames in order that they can be remapped to new locations for delivered images.
- LIBRARY : locates the root of the source tree
- AMPQ : locates the root of the specific AMQP source
If asdf output location mapping is disabled, the binary files are stored in LIBRARY:bin;
and AMPQ:bin;
.
Once can change this, but changing the logical pathname transaltions.
In order to update the host translations for a relocaed image
(setf (logical-pathname-translations "AMQP") nil
(logical-pathname-translations "LIBRARY") nil)
(asdf:find-system :de.setf.utility)
(asdf:find-system :de.setf.amqp)
If the asdf
version includes mandatory output translations, either disable that or
otherwise ensure that it does not choke on the default binding for user-homedir-pathname
.
Further instructions are in README-build-mcl.md
Further instructions are in README-build-sbcl.md