From 7a869fdfbc8e217431eabdffd5fab90bcdd8f5fa Mon Sep 17 00:00:00 2001 From: Alex Klinkhamer Date: Tue, 22 Jul 2008 20:50:45 -0400 Subject: [PATCH] +Generalized devvars for easier extension I'm starting a simple shell version tonight. --- src/{webui => }/devvars.lisp | 6 +-- src/webui/devvars.lisp | 100 +++++-------------------------------------- src/webui/serv.lisp | 3 ++ 3 files changed, 17 insertions(+), 92 deletions(-) copy src/{webui => }/devvars.lisp (95%) rewrite src/webui/devvars.lisp (98%) diff --git a/src/webui/devvars.lisp b/src/devvars.lisp similarity index 95% copy from src/webui/devvars.lisp copy to src/devvars.lisp index fffa37e..60416b0 100644 --- a/src/webui/devvars.lisp +++ b/src/devvars.lisp @@ -5,6 +5,7 @@ (in-package :lineal.devvars) +;;; When extending lineal, add files to this list. (defparameter *file-tree* '(("math" "math" "counting" "tuples" "matrices" "row-operns" "format") ("overload" "overload" "numbers" "tuples" @@ -14,9 +15,7 @@ "infix-parser" "save-restore" ("overload" "client-fns") - ("webui" "webvars" "compile-ps" "index" "matrixui" - "calcupage-buttons" "calcupage" - "save-restore" "reload"))) + )) (defun compile-if-new (name src-dir &key (fasl-dir src-dir) @@ -80,6 +79,7 @@ (setq src-dir (append src-base rootless) fasl-dir (append fasl-base rootless)))))) +;;; Just compile the whole program. (defun compile-lineal (&key compile-all (load-all t)) (compile-tree *file-tree* '(:relative "src") diff --git a/src/webui/devvars.lisp b/src/webui/devvars.lisp dissimilarity index 98% index fffa37e..ec84c6a 100644 --- a/src/webui/devvars.lisp +++ b/src/webui/devvars.lisp @@ -1,89 +1,11 @@ - -(defpackage :lineal.devvars - (:use :cl) - (:export *file-tree* compile-if-new compile-lineal)) - -(in-package :lineal.devvars) - -(defparameter *file-tree* - '(("math" "math" "counting" "tuples" "matrices" "row-operns" "format") - ("overload" "overload" "numbers" "tuples" - "matrices" "concatenate" "crop" "row-operns" "format") - "globals" - "prefix-parser" - "infix-parser" - "save-restore" - ("overload" "client-fns") - ("webui" "webvars" "compile-ps" "index" "matrixui" - "calcupage-buttons" "calcupage" - "save-restore" "reload"))) - -(defun compile-if-new - (name src-dir &key (fasl-dir src-dir) - compile-all (load-all t) ensure-dirs - &aux - (src-file - (make-pathname :directory src-dir - :name name :type "lisp")) - (fasl-file - (make-pathname :directory fasl-dir - :name name :type "fasl"))) - (if (and (not compile-all) - (probe-file fasl-file) - (< (file-write-date src-file) - (file-write-date fasl-file))) - (when load-all (load fasl-file)) - (progn - (when ensure-dirs - (ensure-directories-exist fasl-file)) - (with-open-file - (fasl-strm fasl-file :direction :output - :if-exists :supersede) - (compile-file src-file :output-file fasl-strm)) - (load fasl-file)))) - -(defun compile-tree - (file-tree src-base fasl-base - &key compile-all (load-all t) - &aux src-dir fasl-dir) - (labels - ((ensure-first - (in-dir set-dirs-fn) - (funcall set-dirs-fn nil) - (recurse (car in-dir) set-dirs-fn t) - (dolist (x (cdr in-dir)) - (recurse x set-dirs-fn nil))) - (recurse - (file-tree set-dirs-fn ensure-dirs) - (if (consp file-tree) - (let ((tmp-src src-dir) - (tmp-fasl fasl-dir) - (dir (car file-tree))) - (ensure-first - (cdr file-tree) - (lambda (rootless) - (funcall set-dirs-fn - (cons dir rootless)))) - (setq src-dir tmp-src - fasl-dir tmp-fasl)) - ;V /file-tree/ is a file's name, V - ;V compile it if necessary. V - (compile-if-new - file-tree src-dir - :fasl-dir fasl-dir - :compile-all compile-all - :load-all load-all - :ensure-dirs ensure-dirs)))) - (ensure-first - file-tree - (lambda (rootless) - (setq src-dir (append src-base rootless) - fasl-dir (append fasl-base rootless)))))) - -(defun compile-lineal (&key compile-all (load-all t)) - (compile-tree - *file-tree* '(:relative "src") - '(:relative "fasl") - :compile-all compile-all - :load-all load-all)) - + +(in-package :lineal.devvars) + +;;; Add webui-specific stuff to list of program files. +(setq + *file-tree* + (nconc *file-tree* + '(("webui" "webvars" "compile-ps" "index" + "matrixui" "calcupage-buttons" "calcupage" + "save-restore" "reload")))) + diff --git a/src/webui/serv.lisp b/src/webui/serv.lisp index 388ee10..74a46e4 100644 --- a/src/webui/serv.lisp +++ b/src/webui/serv.lisp @@ -9,6 +9,9 @@ (in-package :lineal.devvars) (format t "serv.lisp is loaded...~%") + +(load (make-pathname :directory '(:relative "src") + :name "devvars")) (load (make-pathname :directory '(:relative "src" "webui") :name "devvars")) -- 2.11.4.GIT