Skip to content
Snippets Groups Projects
Commit 939c00f3 authored by Daniel Barlow's avatar Daniel Barlow
Browse files

add compile-and-load-op, load-source-op ops

parent e9323b37
No related branches found
No related tags found
No related merge requests found
asdf: another system definition facility -*- Text -*- asdf: another system definition facility -*- Text -*-
$Id: README,v 1.10 2002/02/12 12:46:54 dan_b Exp $ $Id: README,v 1.11 2002/02/14 11:37:58 dan_b Exp $
This system definition utility talks in terms of 'components' and This system definition utility talks in terms of 'components' and
'operations'. 'operations'.
...@@ -214,18 +214,33 @@ defined to accept. ...@@ -214,18 +214,33 @@ defined to accept.
** standard operations ** standard operations
*** compile-op &key proclamations *** compile-op, load-op
The definition of `compile' is "do everything that we can do to make When creating a new component, you should provide methods for these.
subsequent loads (in a new image that we didn't do the compile in)" As a user, you almost never want to use them, though. See below.
faster.
*** compile-and-load-op &key proclamations
This is roughly equivalent to the mk-defsystem 'compile' operation.
Compiling a system usually involves loading each component after it is
compiled - we've changed the name of this operation to make it more
explicit what is happening
If proclamations are supplied, they will be proclaimed. This is a If proclamations are supplied, they will be proclaimed. This is a
good place to specify optimization settings good place to specify optimization settings
*** load-op You probably don't need to create this method if you are creating a new
component type. The default method for this operation on source-files
calls compile-op and load-op
*** load-source-op
Sometimes systems have knotty dependencies which require that sources
are loaded before they can be compiled. This is how you do that.
If you are creating a component type, you need to implement this
operation - at least, where meaningful.
This is the `do everything' operation. It depends on compile-op.
*** test-system-version &key minimum *** test-system-version &key minimum
...@@ -388,10 +403,10 @@ has the effect of ...@@ -388,10 +403,10 @@ has the effect of
where ... is the component in question; note that while :before where ... is the component in question; note that while :before
methods are also supported by this, they may not do what you want them methods are also supported by this, they may not do what you want them
do (a :before method on perform ((op compile-op) (c (eql ...))) to - a :before method on perform ((op compile-op) (c (eql ...)))
will run after all the dependencies and sub-components have been will run after all the dependencies and sub-components have been
processed, but before the component in question has been processed, but before the component in question has been
compiled). compiled.
*** Source location *** Source location
...@@ -456,13 +471,25 @@ partition:partition symbol ...@@ -456,13 +471,25 @@ partition:partition symbol
Need an explicit error for "dependency missing" and "required version Need an explicit error for "dependency missing" and "required version
of dependency missing" so that we can fit this to an automated of dependency missing" so that we can fit this to an automated
dependency downloading thing dependency downloading thing.
* missing bits in implementation * missing bits in implementation
** all of the above ** all of the above
** reuse the same scratch package whenever a system is reloaded from disk ** reuse the same scratch package whenever a system is reloaded from disk
** defsystem syntax for EQL methods ** defsystem syntax for EQL methods
How the hell Cop out and use EVAL?
** versions ** versions
** test suite, insofar as it makes sense ** test suite, insofar as it makes sense
** compiler/loader options ** compiler/loader options
verbosity, proclamations, etc: do this with specials verbosity, proclamations, etc: do this with specials
(defvar *visited-nodes* nil)
(defvar *visiting-nodes* nil)
rewrite the component-visiting stuff to hide this state in the
operation
** pathname defaulting in defsystem
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment