aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-03-24 13:52:09 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-03-24 13:53:51 -0700
commit0757caa94c359a475ab39ff35a7e1cf92bda5cdc (patch)
treeb94903a367927d6ab1d23def055acceedb2ad387 /src
parentee3ba287cc5faafbd35febac2fa9875eee067a49 (diff)
downloadconsfigurator-0757caa94c359a475ab39ff35a7e1cf92bda5cdc.tar.gz
move copying to the inside of {union,replace}-propspec-into-host
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src')
-rw-r--r--src/deployment.lisp12
-rw-r--r--src/host.lisp13
2 files changed, 9 insertions, 16 deletions
diff --git a/src/deployment.lisp b/src/deployment.lisp
index 45b5c07..03dfe73 100644
--- a/src/deployment.lisp
+++ b/src/deployment.lisp
@@ -62,8 +62,7 @@ DEFDEPLOY-THESE, etc., rather than calling this function directly. However,
code which programmatically constructs deployments will need to call this."
(%consfigure (preprocess-connections connections)
(if additional-properties
- (%union-propspec-into-host (shallow-copy-host host)
- additional-properties)
+ (union-propspec-into-host host additional-properties)
host)))
(defun deploy-these* (connections host properties)
@@ -75,8 +74,7 @@ by PROPERTIES can override the host's usual static informational attributes,
in the same way that later entries in the list of properties specified in
DEFHOST forms can override earlier entries (see DEFHOST's docstring)."
(%consfigure (preprocess-connections connections)
- (%replace-propspec-into-host
- (shallow-copy-host host) properties)))
+ (replace-propspec-into-host host properties)))
(defun continue-deploy* (remaining-connections)
"Complete the work of an enclosing call to DEPLOY* or DEPLOY-THESE*.
@@ -173,8 +171,7 @@ Also useful to set up VMs, chroots, disk images etc. on localhost."
(list (preprocess-connections connections)
(preprocess-host
(if additional-properties
- (%union-propspec-into-host (shallow-copy-host host)
- additional-properties)
+ (union-propspec-into-host host additional-properties)
host))))
(:hostattrs
(declare (ignore connections additional-properties))
@@ -189,8 +186,7 @@ PROPERTIES, and not the host's usual properties, unless they also appear in
PROPERTIES, like DEPLOY-THESE."
(:preprocess
(list (preprocess-connections connections)
- (preprocess-host
- (%replace-propspec-into-host (shallow-copy-host host) properties))))
+ (preprocess-host (replace-propspec-into-host host properties))))
(:hostattrs
(declare (ignore connections properties))
(%propagate-hostattrs host))
diff --git a/src/host.lisp b/src/host.lisp
index 7bb4669..602927b 100644
--- a/src/host.lisp
+++ b/src/host.lisp
@@ -94,23 +94,20 @@ Called by properties which set up such subhosts, like CHROOT:OS-BOOTSTRAPPED."
:propspec ,(slot-value host 'propspec)))
host)
-;; return values of the following two functions share structure, and thus are
-;; not safe to use except on host objects that were just made, or that are
-;; going straight into %CONSFIGURE
-
-(defmethod %union-propspec-into-host
+(defmethod union-propspec-into-host
((host unpreprocessed-host) (propspec propspec))
(make-instance 'unpreprocessed-host
- :hostattrs (hostattrs host)
+ :hostattrs (copy-list (hostattrs host))
:propspec (append-propspecs (host-propspec host) propspec)))
-(defmethod %replace-propspec-into-host
+(defmethod replace-propspec-into-host
((host unpreprocessed-host) (propspec unpreprocessed-propspec))
;; we have to preprocess HOST as functions that call us want the return
;; value to have all the hostattrs it would have were PROPSPEC not to be
;; substituted in
(make-instance 'unpreprocessed-host
- :hostattrs (hostattrs (preprocess-host host))
+ :hostattrs (hostattrs
+ (preprocess-host (shallow-copy-host host)))
:propspec propspec))
(defmacro defhost (hostname (&key deploy) &body properties)