[mcclim-devel] more magical dependency analysis
Hi all, I just polished up asdf-dependency-grovel (http://www.cliki.net/asdf-dependency-grovel, now with added asdf-installability) and let it have its way with mcclim.asd. The result is a merged :clim system with 168 components and (apparently) working dependencies. (Yay!) Attached, you can find: * the updated mcclim.asd, * the clim system's components file, * the "master system definition" file used to generate the list (contains just serial definitions), and * a shell script to generate the components file from the master system definition. Drop these files in the top level directory of a recent cvs checkout of mcclim, and you can start testing stuff. (: To re-generate dependencies: 1. have sbcl 2. asdf-install asdf-dependency-grovel 3. run ./grovel-dependencies.sh 4. wait. I would like to hear your comments, especially on the maintainability of the serial definitions in mcclim-dependencies.lisp vs. the blood/sweat/tears hand-maintained dependencies in the old mcclim.asd. Cheers, -- Andreas Fuchs, (http://|im:asf@|mailto:asf@)boinkor.net, antifuchs ;;; -*- Mode: Lisp -*- ;;; (c) copyright 1998,1999,2000 by Michael McDonald (mikemac@mikemac.com) ;;; (c) copyright 2000 by ;;; Robert Strandh (strandh@labri.u-bordeaux.fr) ;;; (c) copyright 2005-2006 by ;;; Andreas Fuchs (asf@boinkor.net) ;;; ;;; This library is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU Library General Public ;;; License as published by the Free Software Foundation; either ;;; version 2 of the License, or (at your option) any later version. ;;; ;;; This library is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; Library General Public License for more details. ;;; ;;; You should have received a copy of the GNU Library General Public ;;; License along with this library; if not, write to the ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307 USA. ;;; Really, I wouldn't bother with anything but ASDF. Almost every lisp ;;; ships with it, and it has the added benefit of ASDF-INSTALL. ;;; Get ASDF, and be welcome to the 21st century. -- [2005-01-31:asf] (cl:defpackage :mcclim.system (:use :asdf :cl) (:export #:mp #:fix #:dep-on-swank #:ifswank #:*clim-directory* #:mcclim-cl-source-file)) (in-package :mcclim.system) (defparameter *clim-directory* (directory-namestring *load-truename*)) ;;; Legacy CMUCL support stuff #+cmu (progn (unless (fboundp 'ext:stream-read-char) (unless (ignore-errors (ext:search-list "gray-streams:")) (setf (ext:search-list "gray-streams:") '("target:pcl/" "library:subsystems/"))) (if (fboundp 'extensions:without-package-locks) (extensions:without-package-locks (load "gray-streams:gray-streams-library")) (load "gray-streams:gray-streams-library"))) #-clx (require :clx) #+mp (when (eq mp::*initial-process* mp::*current-process*) (format t "~%~%You need to run (mp::startup-idle-and-top-level-loops) to start up the multiprocessing support.~%~%"))) ;;; Make CLX asdf-loadable on Allegro 6.2 ;;; possibly this should be further refined to funciton properly for ;;; Allegro on Windows platforms. [2005/04/18:rpg] #+allegro (progn (defclass requireable-system (asdf:system) ()) (defmethod asdf:perform ((op asdf:load-op) (system requireable-system)) (require (intern (slot-value system 'asdf::name) :keyword))) (defmethod asdf::traverse ((op asdf:load-op) (system requireable-system)) (list (cons op system))) (defsystem :clx :class requireable-system)) (defmacro clim-defsystem ((module &key depends-on) &rest components) `(progn (asdf:defsystem ,module ,@(and depends-on `(:depends-on ,depends-on)) :serial t :components (,@(loop for c in components for p = (merge-pathnames (parse-namestring c) (make-pathname :type "lisp" :defaults *clim-directory*)) collect `(:file ,(namestring p) :pathname ,p)))))) (eval-when (:compile-toplevel :execute :load-toplevel) (defun fix (&optional (prefix "Lisp-Dep/")) (concatenate 'string prefix #+cmu "fix-cmu" #+scl "fix-scl" #+excl "fix-acl" #+sbcl "fix-sbcl" #+openmcl "fix-openmcl" #+lispworks "fix-lispworks" #+clisp "fix-clisp")) (defun mp (&optional (prefix "Lisp-Dep/")) (concatenate 'string prefix (first '(#+(and :cmu :mp (not :pthread)) "mp-cmu" #+scl "mp-scl" #+sb-thread "mp-sbcl" #+excl "mp-acl" #+openmcl "mp-openmcl" #+lispworks "mp-lw" #| fall back |# "mp-nil")))) (defun find-swank-system () (handler-case (asdf:find-system :swank) (asdf:missing-component ()))) (defun ifswank () (if (find-swank-system) '(:and) '(:or)))) (defclass mcclim-cl-source-file (asdf:cl-source-file) ()) (defsystem :clim :depends-on (:spatial-trees :flexichain) :default-component-class mcclim-cl-source-file :components #.(let ((component-file (merge-pathnames #p"clim-components.lisp-expr" *clim-directory*))) (when (probe-file component-file) (with-open-file (f component-file :direction :input) (read f))))) (defsystem :drei-tests :depends-on (:clim :fiveam) :components ((:module "Tests" :pathname #.(make-pathname :directory '(:relative "Drei" "Tests")) :components ((:module "cl-automaton" :depends-on ("testing") :components ((:file "eqv-hash-tests") (:file "state-and-transition-tests") (:file "automaton-tests") (:file "regexp-tests"))) (:file "packages") (:file "testing" :depends-on ("packages")) (:file "buffer-tests" :depends-on ("testing")) (:file "base-tests" :depends-on ("testing")) (:file "kill-ring-tests" :depends-on ("testing")) (:file "motion-tests" :depends-on ("testing")) (:file "editing-tests" :depends-on ("testing")) (:file "core-tests" :depends-on ("testing")) (:file "buffer-streams-tests" :depends-on ("testing")) (:file "rectangle-tests" :depends-on ("testing")) (:file "undo-tests" :depends-on ("testing")) (:file "lisp-syntax-tests" :depends-on ("testing")))))) (defsystem :clim-clx :depends-on (:clim #+(or sbcl openmcl ecl allegro) :clx) :components ((:module "Backends/CLX" :pathname #.(make-pathname :directory '(:relative "Backends" "CLX")) :components ((:file "package") (:file "image" :depends-on ("package")) (:file "keysyms-common" :depends-on ("package")) (:file "keysyms" :depends-on ("keysyms-common" "package")) (:file "keysymdef" :depends-on ("keysyms-common" "package")) (:file "port" :depends-on ("keysyms-common" "keysyms" "package")) (:file "medium" :depends-on ("port" "keysyms" "package")) (:file "graft" :depends-on ("port" "package")) (:file "frame-manager" :depends-on ("medium" "port" "package")))))) (defsystem :clim-null :depends-on (:clim) :components ((:module "Backends/Null" :pathname #.(make-pathname :directory '(:relative "Backends" "Null")) :components ((:file "package") (:file "port" :depends-on ("package")) (:file "medium" :depends-on ("port" "package")) (:file "graft" :depends-on ("port" "package")) (:file "frame-manager" :depends-on ("medium" "port" "package")))))) ;;; TODO/asf: I don't have the required libs to get :clim-opengl to load. tough. (clim-defsystem (:clim-opengl :depends-on (:clim)) "Backends/OpenGL/opengl-x-frame-manager" "Backends/OpenGL/opengl-frame-manager" "Backends/OpenGL/opengl-x-port-before" "Backends/OpenGL/opengl-port" "Backends/OpenGL/opengl-x-port-after" "Backends/OpenGL/opengl-medium" "Backends/OpenGL/opengl-x-graft") ;;; A system that loads the appropriate backend for the current ;;; platform. (defsystem :clim-looks :depends-on (:clim ;; If we're on an implementation that ships CLX, use ;; it. Same if the user has loaded CLX already. #+(or sbcl scl openmcl ecl clx allegro) :clim-clx #+gl :clim-opengl ;; OpenMCL and MCL support the beagle backend (native ;; OS X look&feel on OS X). ;; But until it's ready, it's no use forcing users to ;; cope with possible bugs. ;; #+(or openmcl mcl) :clim-beagle ;; null backend :clim-null ) :components ((:file "Looks/pixie" :pathname #.(make-pathname :directory '(:relative "Looks") :name "pixie" :type "lisp")))) (defsystem :drei-swank-add-ons :depends-on (:swank :clim) :components ((:file "lisp-syntax-swank" :pathname #.(make-pathname :directory '(:relative "Drei") :name "lisp-syntax-swank" :type "lisp")))) ;;; The actual McCLIM system that people should to use in their ASDF ;;; package dependency lists. (defsystem :mcclim :depends-on (:clim-looks #+#.(mcclim.system:ifswank):drei-swank-add-ons)) (defmethod perform :after ((op load-op) (c (eql (find-system :clim)))) (pushnew :clim *features*) (pushnew :mcclim *features*)) (defmethod perform :around (op (c mcclim-cl-source-file)) (let ((*features* (adjoin :building-mcclim *features*))) (call-next-method))) ;;; This file contains -*- lisp -*- expressions. ;;; AUTO-GENERATED file from system definition of system clim/serial in . ;;; ;;; Instead of directly editing this file, please edit the system definitions ;;; of clim-lisp/serial or clim-basic/serial or clim-core/serial or clim/serial ;;; or goatee-core/serial or esa-mcclim/serial or drei-mcclim/serial or ;;; clim-postscript/grovel, then re-generate this file. ( ;; ex clim-lisp/serial (:file "patch" :depends-on ()) (:file #.(fix) :pathname #.(make-pathname :directory '(:relative "Lisp-Dep") :name (fix "") :type "lisp") :depends-on ("patch")) (:file "package" :depends-on ("patch" "patch" #.(fix))) ;; ex clim-basic/serial (:file "decls" :depends-on ("package")) (:file "protocol-classes" :depends-on ("package" #.(fix))) (:file #.(mp) :pathname #.(make-pathname :directory '(:relative "Lisp-Dep") :name (mp "") :type "lisp") :depends-on ("package")) (:file "utils" :depends-on ("package")) (:file "defresource" :depends-on ("package")) (:file "setf-star" :depends-on ("package")) (:file "design" :depends-on ("decls" "protocol-classes")) (:file "X11-colors" :depends-on ("design")) (:file "coordinates" :depends-on ("package")) (:file "transforms" :depends-on ("decls" "protocol-classes")) (:file "regions" :depends-on ("decls" "protocol-classes" "setf-star" "utils")) (:file "sheets" :depends-on ("regions")) (:file "pixmap" :depends-on ("decls" "protocol-classes")) (:file "events" :depends-on ("decls" "protocol-classes" "utils" #.(mp))) (:file "ports" :depends-on ("pixmap" "sheets" #.(mp))) (:file "grafts" :depends-on ("sheets")) (:file "medium" :depends-on ("ports")) (:file "output" :depends-on ("medium")) (:file "input" :depends-on ("sheets" #.(mp))) (:file "repaint" :depends-on ("events" "sheets")) (:file "graphics" :depends-on ("design" "output" "transforms")) (:file "views" :depends-on ("decls" "protocol-classes")) (:file "stream-output" :depends-on ("output")) (:file "recording" :depends-on ("graphics" "stream-output")) (:file "encapsulate" :depends-on ("stream-output")) (:file "stream-input" :depends-on ("encapsulate" "events" "input")) (:file "text-selection" :depends-on ("X11-colors" "events" "graphics")) (:file "bezier" :depends-on ("coordinates" "recording")) ;; ex clim-core/serial (:file "text-formatting" :depends-on ("encapsulate")) (:file "input-editing" :depends-on ("decls" "utils")) (:file "presentations" :depends-on ("recording")) (:file "presentation-defs" :depends-on ("input-editing" "presentations" "stream-input" "views")) (:file "pointer-tracking" :depends-on ("events" "recording")) (:file "commands" :depends-on ("Backends/PostScript/sheet" "presentation-defs")) (:file "incremental-redisplay" :depends-on ("recording")) (:file "frames" :depends-on ("incremental-redisplay" "pointer-tracking" "presentation-defs")) (:file "panes" :depends-on ("commands" "frames" "text-selection")) (:file "gadgets" :depends-on ("panes")) (:file "menu" :depends-on ("gadgets")) (:file "table-formatting" :depends-on ("presentation-defs")) (:file "graph-formatting" :depends-on ("recording")) (:file "bordered-output" :depends-on ("recording")) (:file "dialog-views" :depends-on ("bordered-output" "incremental-redisplay" "presentation-defs")) (:file "dialog" :depends-on ("bordered-output" "commands" "incremental-redisplay" "table-formatting")) (:file "builtin-commands" :depends-on ("dialog")) (:file "describe" :depends-on ("builtin-commands")) (:file "menu-choose" :depends-on ("builtin-commands" "panes")) ;; ex clim/serial (:file "input-editing-goatee" :depends-on ("Goatee/editing-stream" "builtin-commands")) (:file "input-editing-drei" :depends-on ("Drei/input-editor")) (:file "text-editor-gadget" :depends-on ("Drei/drei-clim")) (:file "Extensions/rgb-image" :pathname #.(make-pathname :directory '(:relative "Extensions") :name "rgb-image" :type "lisp") :depends-on ("builtin-commands")) ;; ex goatee-core/serial (:file "Goatee/conditions" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "conditions" :type "lisp") :depends-on ("package")) (:file "Goatee/dbl-list" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "dbl-list" :type "lisp") :depends-on ("package" #.(fix))) (:file "Goatee/flexivector" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "flexivector" :type "lisp") :depends-on ("Goatee/conditions" #.(fix))) (:file "Goatee/buffer" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "buffer" :type "lisp") :depends-on ("Goatee/dbl-list" "Goatee/flexivector" "setf-star")) (:file "Goatee/editable-buffer" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "editable-buffer" :type "lisp") :depends-on ("Goatee/buffer")) (:file "Goatee/editable-area" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "editable-area" :type "lisp") :depends-on ("Goatee/dbl-list")) (:file "Goatee/clim-area" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "clim-area" :type "lisp") :depends-on ("Goatee/buffer" "Goatee/editable-area" "recording")) (:file "Goatee/kill-ring" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "kill-ring" :type "lisp") :depends-on ("Goatee/dbl-list" "utils")) (:file "Goatee/goatee-command" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "goatee-command" :type "lisp") :depends-on ("Goatee/editable-area" "Goatee/editable-buffer" "Goatee/kill-ring" "stream-input")) (:file "Goatee/editing-stream" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "editing-stream" :type "lisp") :depends-on ("Goatee/editable-buffer" "recording")) (:file "Goatee/presentation-history" :pathname #.(make-pathname :directory '(:relative "Goatee") :name "presentation-history" :type "lisp") :depends-on ("Goatee/goatee-command")) ;; ex esa-mcclim/serial (:file "ESA/packages" :pathname #.(make-pathname :directory '(:relative "ESA") :name "packages" :type "lisp") :depends-on ("builtin-commands")) (:file "ESA/utils" :pathname #.(make-pathname :directory '(:relative "ESA") :name "utils" :type "lisp") :depends-on ("ESA/packages")) (:file "ESA/esa" :pathname #.(make-pathname :directory '(:relative "ESA") :name "esa" :type "lisp") :depends-on ("ESA/utils" "panes")) (:file "ESA/esa-buffer" :pathname #.(make-pathname :directory '(:relative "ESA") :name "esa-buffer" :type "lisp") :depends-on ("ESA/packages")) (:file "ESA/esa-io" :pathname #.(make-pathname :directory '(:relative "ESA") :name "esa-io" :type "lisp") :depends-on ("ESA/esa")) (:file "ESA/esa-command-parser" :pathname #.(make-pathname :directory '(:relative "ESA") :name "esa-command-parser" :type "lisp") :depends-on ("ESA/packages")) (:file "ESA/colors" :pathname #.(make-pathname :directory '(:relative "ESA") :name "colors" :type "lisp") :depends-on ("builtin-commands")) ;; ex drei-mcclim/serial (:file "Drei/cl-automaton/automaton-package" :pathname #.(make-pathname :directory '(:relative "Drei" "cl-automaton") :name "automaton-package" :type "lisp") :depends-on ("builtin-commands")) (:file "Drei/cl-automaton/eqv-hash" :pathname #.(make-pathname :directory '(:relative "Drei" "cl-automaton") :name "eqv-hash" :type "lisp") :depends-on ("Drei/cl-automaton/automaton-package")) (:file "Drei/cl-automaton/state-and-transition" :pathname #.(make-pathname :directory '(:relative "Drei" "cl-automaton") :name "state-and-transition" :type "lisp") :depends-on ("Drei/cl-automaton/eqv-hash")) (:file "Drei/cl-automaton/automaton" :pathname #.(make-pathname :directory '(:relative "Drei" "cl-automaton") :name "automaton" :type "lisp") :depends-on ("Drei/cl-automaton/eqv-hash")) (:file "Drei/cl-automaton/regexp" :pathname #.(make-pathname :directory '(:relative "Drei" "cl-automaton") :name "regexp" :type "lisp") :depends-on ("Drei/cl-automaton/automaton-package")) (:file "Drei/Persistent/binseq-package" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "binseq-package" :type "lisp") :depends-on ("builtin-commands")) (:file "Drei/Persistent/binseq" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "binseq" :type "lisp") :depends-on ("Drei/Persistent/binseq-package")) (:file "Drei/Persistent/obinseq" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "obinseq" :type "lisp") :depends-on ("Drei/Persistent/binseq-package")) (:file "Drei/Persistent/binseq2" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "binseq2" :type "lisp") :depends-on ("Drei/Persistent/binseq-package")) (:file "Drei/packages" :pathname #.(make-pathname :directory '(:relative "Drei") :name "packages" :type "lisp") :depends-on ("Drei/Persistent/binseq-package" "ESA/packages")) (:file "Drei/buffer" :pathname #.(make-pathname :directory '(:relative "Drei") :name "buffer" :type "lisp") :depends-on ("Drei/packages")) (:file "Drei/Persistent/persistent-buffer" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "persistent-buffer" :type "lisp") :depends-on ("Drei/buffer")) (:file "Drei/kill-ring" :pathname #.(make-pathname :directory '(:relative "Drei") :name "kill-ring" :type "lisp") :depends-on ("Drei/packages")) (:file "Drei/base" :pathname #.(make-pathname :directory '(:relative "Drei") :name "base" :type "lisp") :depends-on ("Drei/Persistent/persistent-buffer" "Drei/cl-automaton/automaton-package" "ESA/utils")) (:file "Drei/syntax" :pathname #.(make-pathname :directory '(:relative "Drei") :name "syntax" :type "lisp") :depends-on ("Drei/base")) (:file "Drei/motion" :pathname #.(make-pathname :directory '(:relative "Drei") :name "motion" :type "lisp") :depends-on ("Drei/Persistent/persistent-buffer")) (:file "Drei/editing" :pathname #.(make-pathname :directory '(:relative "Drei") :name "editing" :type "lisp") :depends-on ("Drei/buffer")) (:file "Drei/abbrev" :pathname #.(make-pathname :directory '(:relative "Drei") :name "abbrev" :type "lisp") :depends-on ("Drei/packages")) (:file "Drei/undo" :pathname #.(make-pathname :directory '(:relative "Drei") :name "undo" :type "lisp") :depends-on ("Drei/packages")) (:file "Drei/delegating-buffer" :pathname #.(make-pathname :directory '(:relative "Drei") :name "delegating-buffer" :type "lisp") :depends-on ("Drei/buffer")) (:file "Drei/Persistent/persistent-undo" :pathname #.(make-pathname :directory '(:relative "Drei" "Persistent") :name "persistent-undo" :type "lisp") :depends-on ("Drei/buffer" "Drei/undo")) (:file "Drei/drei" :pathname #.(make-pathname :directory '(:relative "Drei") :name "drei" :type "lisp") :depends-on ("Drei/abbrev" "Drei/delegating-buffer" "Drei/syntax" "Drei/undo" "ESA/esa" "ESA/esa-buffer")) (:file "Drei/core" :pathname #.(make-pathname :directory '(:relative "Drei") :name "core" :type "lisp") :depends-on ("Drei/drei")) (:file "Drei/buffer-streams" :pathname #.(make-pathname :directory '(:relative "Drei") :name "buffer-streams" :type "lisp") :depends-on ("Drei/packages")) (:file "Drei/rectangle" :pathname #.(make-pathname :directory '(:relative "Drei") :name "rectangle" :type "lisp") :depends-on ("Drei/packages" "ESA/utils")) (:file "Drei/drei-clim" :pathname #.(make-pathname :directory '(:relative "Drei") :name "drei-clim" :type "lisp") :depends-on ("Drei/drei" "gadgets")) (:file "Drei/core-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "core-commands" :type "lisp") :depends-on ("Drei/base" "ESA/esa")) (:file "Drei/drei-redisplay" :pathname #.(make-pathname :directory '(:relative "Drei") :name "drei-redisplay" :type "lisp") :depends-on ("Drei/drei-clim")) (:file "Drei/basic-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "basic-commands" :type "lisp") :depends-on ("Drei/packages" "ESA/esa")) (:file "Drei/misc-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "misc-commands" :type "lisp") :depends-on ("Drei/packages" "ESA/esa")) (:file "Drei/unicode-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "unicode-commands" :type "lisp") :depends-on ("Drei/packages" "ESA/esa")) (:file "Drei/search-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "search-commands" :type "lisp") :depends-on ("Drei/packages" "ESA/esa")) (:file "Drei/fundamental-syntax" :pathname #.(make-pathname :directory '(:relative "Drei") :name "fundamental-syntax" :type "lisp") :depends-on ("Drei/drei-redisplay")) (:file "Drei/lisp-syntax" :pathname #.(make-pathname :directory '(:relative "Drei") :name "lisp-syntax" :type "lisp") :depends-on ("Drei/fundamental-syntax" "Drei/motion")) (:file "Drei/input-editor" :pathname #.(make-pathname :directory '(:relative "Drei") :name "input-editor" :type "lisp") :depends-on ("Drei/core")) (:file "Drei/lisp-syntax-swine" :pathname #.(make-pathname :directory '(:relative "Drei") :name "lisp-syntax-swine" :type "lisp") :depends-on ("Drei/lisp-syntax")) (:file "Drei/lisp-syntax-commands" :pathname #.(make-pathname :directory '(:relative "Drei") :name "lisp-syntax-commands" :type "lisp") :depends-on ("Drei/basic-commands" "Drei/lisp-syntax")) ;; ex clim-postscript/grovel (:file "Backends/PostScript/package" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "package" :type "lisp") :depends-on ("package")) (:file "Backends/PostScript/encoding" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "encoding" :type "lisp") :depends-on ("Backends/PostScript/package")) (:file "Backends/PostScript/paper" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "paper" :type "lisp") :depends-on ("Backends/PostScript/package")) (:file "Backends/PostScript/class" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "class" :type "lisp") :depends-on ("Backends/PostScript/package" "input" "recording" "repaint")) (:file "Backends/PostScript/font" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "font" :type "lisp") :depends-on ("Backends/PostScript/class")) (:file "Backends/PostScript/graphics" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "graphics" :type "lisp") :depends-on ("Backends/PostScript/class" "bezier")) (:file "Backends/PostScript/sheet" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "sheet" :type "lisp") :depends-on ("Backends/PostScript/graphics")) (:file "Backends/PostScript/afm" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "afm" :type "lisp") :depends-on ("Backends/PostScript/package")) (:file "Backends/PostScript/standard-metrics" :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript") :name "standard-metrics" :type "lisp") :depends-on ("Backends/PostScript/font")) ) #!/bin/sh -e cd "$(dirname $0)" rm -f clim-components.lisp-expr sbcl --disable-debugger \ --eval '(require :asdf)' \ --load mcclim.asd \ --load mcclim-dependencies.lisp \ --eval "(asdf:oos 'asdf-dependency-grovel:dependency-op :mcclim-dependencies)" \ --eval '(sb-ext:quit)' ;;; -*- Mode: Lisp -*- (cl:in-package :cl-user) #+mcclim(eval-when (:compile-toplevel :load-toplevel :execute) (cerror "Continue corrupting the lisp image." "~@<You are trying to load the McCLIM dependency groveler into a lisp ~ image that has McCLIM already loaded. Besides possibly skewing results, ~ this will corrupt your Lisp image.~:@>")) ;; load groveler, for the component type, etc. (eval-when (:load-toplevel :execute) (asdf:find-system :mcclim) ; ensure that its system definition is loaded. (asdf:oos 'asdf:load-op :asdf-dependency-grovel)) (defpackage :mcclim-dependencies.system (:use :asdf :cl :asdf-dependency-grovel :mcclim.system)) (in-package :mcclim-dependencies.system) (defclass mcclim-instrumented-cl-source-file (mcclim-cl-source-file instrumented-cl-source-file) ()) ;;; serial system definitions (defmacro groveling-defsystem ((module &key depends-on (serial t)) &body components) `(progn #+asdf (asdf:defsystem ,module ,@(and depends-on `(:depends-on ,depends-on)) :serial ,serial :default-component-class mcclim-instrumented-cl-source-file :components (,@(loop for c in components for p = (when (stringp c) (merge-pathnames (parse-namestring c) (make-pathname :type "lisp" :defaults *clim-directory*))) if (stringp c) collect `(:file ,(pathname-name p) :pathname ,p) else collect c))))) (groveling-defsystem (:clim-lisp/serial) "patch" #.(fix) "package") (groveling-defsystem (:clim-basic/serial :depends-on (:clim-lisp/serial :spatial-trees :flexichain)) "decls" "protocol-classes" #.(mp) "utils" "defresource" "setf-star" "design" "X11-colors" "coordinates" "transforms" "regions" "sheets" "pixmap" "events" "ports" "grafts" "medium" "output" "input" "repaint" "graphics" "views" "stream-output" "recording" "encapsulate" "stream-input" "text-selection" "bezier" ) (groveling-defsystem (:goatee-core/serial :depends-on (:clim-basic/serial)) "Goatee/conditions" "Goatee/dbl-list" "Goatee/flexivector" "Goatee/buffer" "Goatee/editable-buffer" "Goatee/editable-area" "Goatee/clim-area" "Goatee/kill-ring" "Goatee/goatee-command" "Goatee/editing-stream" "Goatee/presentation-history" ) (groveling-defsystem (:clim-core/serial :depends-on (:clim-basic/serial :goatee-core/serial :clim-postscript/grovel)) "text-formatting" "input-editing" "presentations" "presentation-defs" "pointer-tracking" "commands" "incremental-redisplay" "frames" "panes" "gadgets" "menu" "table-formatting" "graph-formatting" "bordered-output" "dialog-views" "dialog" "builtin-commands" "describe" "menu-choose" ) (groveling-defsystem (:esa-mcclim/serial :depends-on (:clim-core/serial)) "ESA/packages" "ESA/utils" "ESA/esa" "ESA/esa-buffer" "ESA/esa-io" "ESA/esa-command-parser" "ESA/colors") (groveling-defsystem (:drei-mcclim/serial :depends-on (:flexichain :esa-mcclim/serial :clim-core/serial)) "Drei/cl-automaton/automaton-package" "Drei/cl-automaton/eqv-hash" "Drei/cl-automaton/state-and-transition" "Drei/cl-automaton/automaton" "Drei/cl-automaton/regexp" "Drei/Persistent/binseq-package" "Drei/Persistent/binseq" "Drei/Persistent/obinseq" "Drei/Persistent/binseq2" "Drei/packages" "Drei/buffer" "Drei/Persistent/persistent-buffer" "Drei/kill-ring" "Drei/base" "Drei/syntax" "Drei/motion" "Drei/editing" "Drei/abbrev" "Drei/undo" "Drei/delegating-buffer" "Drei/Persistent/persistent-undo" "Drei/drei" "Drei/core" "Drei/buffer-streams" "Drei/rectangle" "Drei/drei-clim" "Drei/core-commands" "Drei/drei-redisplay" "Drei/basic-commands" "Drei/misc-commands" "Drei/unicode-commands" "Drei/search-commands" "Drei/fundamental-syntax" "Drei/lisp-syntax" "Drei/input-editor" "Drei/lisp-syntax-swine" "Drei/lisp-syntax-commands") (groveling-defsystem (:clim-postscript/grovel :depends-on (:clim-basic/serial) :serial nil) "Backends/PostScript/package" "Backends/PostScript/encoding" "Backends/PostScript/paper" "Backends/PostScript/class" "Backends/PostScript/font" "Backends/PostScript/graphics" "Backends/PostScript/sheet" "Backends/PostScript/afm" "Backends/PostScript/standard-metrics") (groveling-defsystem (:clim/serial :depends-on (:clim-core/serial :goatee-core/serial :drei-mcclim/serial)) "input-editing-goatee" "input-editing-drei" "text-editor-gadget" "Extensions/rgb-image") ;;;; the dependency system (asdf:defsystem :mcclim-dependencies :components ((component-file "mcclim" :output-file #.(merge-pathnames #p"clim-components.lisp-expr" *clim-directory*) :load-system :clim/serial :merge-systems (:clim-lisp/serial :clim-basic/serial :clim-core/serial :clim/serial :goatee-core/serial :esa-mcclim/serial :drei-mcclim/serial :clim-postscript/grovel) :additional-dependencies (("\"package\"" "\"patch\"" "#.(fix)")) :component-name-translation ((#.(format nil "~S" (fix)) "#.(fix)" "#.(fix) :pathname #.(make-pathname :directory '(:relative \"Lisp-Dep\") :name (fix \"\") :type \"lisp\")") (#.(format nil "~S" (mp)) "#.(mp)" "#.(mp) :pathname #.(make-pathname :directory '(:relative \"Lisp-Dep\") :name (mp \"\") :type \"lisp\")")) :cull-redundant t :verbose nil)))
participants (1)
-
Andreas Fuchs