| 1 | ;;; -*- Mode: Lisp -*- |
|---|
| 2 | |
|---|
| 3 | ;;; load-asdf-install.lisp -- |
|---|
| 4 | ;;; Generic loader for ASDF-INSTALL. |
|---|
| 5 | |
|---|
| 6 | (eval-when (:load-toplevel :execute) |
|---|
| 7 | (unless (find-package '#:asdf-install-loader) |
|---|
| 8 | (make-package '#:asdf-install-loader :use '(#:common-lisp)))) |
|---|
| 9 | |
|---|
| 10 | (in-package :asdf-install-loader) |
|---|
| 11 | |
|---|
| 12 | (eval-when (:compile-toplevel :load-toplevel :execute) |
|---|
| 13 | (defparameter *asdf-install-directory* |
|---|
| 14 | (make-pathname :host (pathname-host *load-truename*) |
|---|
| 15 | :device (pathname-device *load-truename*) |
|---|
| 16 | :directory (pathname-directory *load-truename*) |
|---|
| 17 | ;; :case :common ; Do we need this? |
|---|
| 18 | ))) |
|---|
| 19 | |
|---|
| 20 | |
|---|
| 21 | (defun cl-user::load-asdf-install |
|---|
| 22 | (&key |
|---|
| 23 | (directory *asdf-install-directory*) |
|---|
| 24 | (compile-first-p nil) |
|---|
| 25 | (load-verbose *load-verbose*) |
|---|
| 26 | (print-herald t) |
|---|
| 27 | ) |
|---|
| 28 | (when print-herald |
|---|
| 29 | (format *standard-output* |
|---|
| 30 | "~&;;; ASDF-INSTALL: Loading ASDF-INSTALL package from directory~@ |
|---|
| 31 | ;;; \"~A\"~2%" |
|---|
| 32 | (namestring (pathname directory)))) |
|---|
| 33 | (let ((directory (pathname directory))) |
|---|
| 34 | (flet ((load-and-or-compile (file) |
|---|
| 35 | (if compile-first-p |
|---|
| 36 | (multiple-value-bind (output-truename warnings-p failure-p) |
|---|
| 37 | (compile-file file) |
|---|
| 38 | ;; (declare (ignore warnings-p)) |
|---|
| 39 | (when failure-p |
|---|
| 40 | (format *standard-output* |
|---|
| 41 | ";;; File ~S compiled~@ |
|---|
| 42 | ;;; Warnings ~S, Failure ~S.~%" |
|---|
| 43 | output-truename |
|---|
| 44 | warnings-p |
|---|
| 45 | failure-p) |
|---|
| 46 | (return-from cl-user::load-asdf-install nil) |
|---|
| 47 | ) |
|---|
| 48 | (load output-truename :verbose load-verbose)) |
|---|
| 49 | (load file :verbose load-verbose))) |
|---|
| 50 | ) |
|---|
| 51 | |
|---|
| 52 | (setf (logical-pathname-translations "ASDF-INSTALL-LIBRARY") |
|---|
| 53 | `(("**;*.*.*" |
|---|
| 54 | ,(make-pathname |
|---|
| 55 | :host (pathname-host directory) |
|---|
| 56 | :device (pathname-device directory) |
|---|
| 57 | :directory (append (pathname-directory directory) |
|---|
| 58 | (list :wild-inferiors)))) |
|---|
| 59 | ("**;*.*" |
|---|
| 60 | ,(make-pathname |
|---|
| 61 | :host (pathname-host directory) |
|---|
| 62 | :device (pathname-device directory) |
|---|
| 63 | :directory (append (pathname-directory directory) |
|---|
| 64 | (list :wild-inferiors)))))) |
|---|
| 65 | |
|---|
| 66 | (load-and-or-compile "ASDF-INSTALL-LIBRARY:defpackage.lisp") |
|---|
| 67 | (load-and-or-compile "ASDF-INSTALL-LIBRARY:port.lisp") |
|---|
| 68 | |
|---|
| 69 | (unless (find-package '#:split-sequence) |
|---|
| 70 | (load-and-or-compile "ASDF-INSTALL-LIBRARY:split-sequence.lisp")) |
|---|
| 71 | |
|---|
| 72 | (load-and-or-compile "ASDF-INSTALL-LIBRARY:installer.lisp") |
|---|
| 73 | |
|---|
| 74 | ;; (load-and-or-compile "ASDF-INSTALL-LIBRARY:loader.lisp") |
|---|
| 75 | |
|---|
| 76 | )) |
|---|
| 77 | (pushnew :asdf-install *features*) |
|---|
| 78 | (provide 'asdf-install) |
|---|
| 79 | |
|---|
| 80 | ;; To clean a minimum (and to make things difficult to debug)... |
|---|
| 81 | ;; (delete-package '#:asdf-install-loader) |
|---|
| 82 | ) |
|---|
| 83 | |
|---|
| 84 | |
|---|
| 85 | ;;; Automatically load the library. |
|---|
| 86 | |
|---|
| 87 | (eval-when (:load-toplevel :execute) |
|---|
| 88 | (cl-user::load-asdf-install)) |
|---|
| 89 | |
|---|
| 90 | ;;; end of file -- load-asdf-install.lisp -- |
|---|