+Generalized devvars for easier extension
authorAlex Klinkhamer <grencez@gmail.com>
Wed, 23 Jul 2008 00:50:45 +0000 (22 20:50 -0400)
committerAlex Klinkhamer <grencez@gmail.com>
Wed, 23 Jul 2008 00:50:45 +0000 (22 20:50 -0400)
I'm starting a simple shell version tonight.

src/devvars.lisp [copied from src/webui/devvars.lisp with 95% similarity]
src/webui/devvars.lisp
src/webui/serv.lisp

similarity index 95%
copy from src/webui/devvars.lisp
copy to src/devvars.lisp
index fffa37e..60416b0 100644 (file)
@@ -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")
dissimilarity index 98%
index fffa37e..ec84c6a 100644 (file)
@@ -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"))))
+
index 388ee10..74a46e4 100644 (file)
@@ -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"))