From e3974d9e1f08ba8864126bfe2ed230b4a3deccab Mon Sep 17 00:00:00 2001 From: "Tom Breton (Tehom)" Date: Thu, 11 Nov 2010 21:53:24 -0500 Subject: [PATCH] Changed segments to a structure: elinstall-stages --- elinstall.el | 105 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 59 insertions(+), 46 deletions(-) diff --git a/elinstall.el b/elinstall.el index 1adaf29..e98128b 100644 --- a/elinstall.el +++ b/elinstall.el @@ -71,6 +71,17 @@ "Things that have already been installed. This exists for recording what has been installed. User interaction is not contemplated at this time." ) +;;;_ , Types +;;;_ . elinstall-stages +(defstruct (elinstall-stages + (:constructor elinstall-make-stages) + (:conc-name elinstall-stages->) + (:copier nil)) + "The elinstall stages" + build-deffiles + do-tests + byte-compile + arrange-preloads) ;;;_ , Data ;;;_ . Regular expressions @@ -660,53 +671,49 @@ Returns a list whose elements are each a cons of: * deffile filename or nil * A list of actions to be done for that deffile." - ;;$$IMPROVE ME - put tests in a separate segment, and byte-compile - ;;in yet another one. (let - ((segment-list '()) - (last-segment (list nil))) + ( + (build-deffiles '()) + (do-tests '()) + (byte-compile '()) + (arrange-preloads '())) (dolist (act actions) (when act - (let - ((cell - (case (car act) - ((add-file-autoloads - add-to-info-path - add-to-load-path) - (let* - ((deffile-name (second act)) - (cell-already - (assoc deffile-name segment-list))) - (if cell-already - cell-already - (let - ((new-cell (list deffile-name))) - (setq segment-list - (cons - new-cell - segment-list)) - new-cell)))) - ((preload-file run-tests byte-compile) - last-segment)))) - - (unless cell "Error: Couldn't find segment") - (setcdr cell (cons act (cdr cell)))))) - - '(elinstall-remove-empty-segs - (append - segment-list - (if (cdr last-segment) - (list last-segment) - '()))) - (cons - (elinstall-remove-empty-segs - segment-list) - (if (cdr last-segment) - (list last-segment) - '()) - ) - )) + (case (car act) + ((add-file-autoloads + add-to-info-path + add-to-load-path) + (let* + ((deffile-name (second act)) + (cell-already + (assoc deffile-name build-deffiles))) + (if cell-already + cell-already + (let + ((new-cell (list deffile-name))) + (setq build-deffiles + (cons + new-cell + segment-list)) + new-cell)))) + (preload-file + (push act arrange-preloads)) + (run-tests + (push act do-tests)) + (byte-compile + (push act byte-compile))))) + + (elinstall-make-stages + :build-deffiles + (elinstall-remove-empty-segs build-deffiles) + :do-tests + (elinstall-remove-empty-segs do-tests) + :byte-compile + (elinstall-remove-empty-segs byte-compile) + :arrange-preloads + (elinstall-remove-empty-segs arrange-preloads)))) + @@ -998,9 +1005,15 @@ USE-LOAD-PATH is the effective load-path." (elinstall-get-relevant-load-path actions))) - '(elinstall-stage-update-deffiles - (car stages) - ) + (elinstall-stage-update-deffiles + (elinstall-stages->build-deffiles stages) + force + use-load-path) + (elinstall-do-segment + (elinstall-stages->arrange-preloads stages) + force + use-load-path) + ' (mapcar #'(lambda (segment) (elinstall-do-segment segment force use-load-path)) -- 2.11.4.GIT