From 0757caa94c359a475ab39ff35a7e1cf92bda5cdc Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Wed, 24 Mar 2021 13:52:09 -0700 Subject: move copying to the inside of {union,replace}-propspec-into-host Signed-off-by: Sean Whitton --- src/deployment.lisp | 12 ++++-------- src/host.lisp | 13 +++++-------- 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) -- cgit v1.2.3