From 6387a29a5c3aae2cb319dcaf803fb2df24eea46d Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Fri, 17 Oct 2003 14:27:44 +0000 Subject: [PATCH] 0.8.4.27: OK, here's the deal. ... *MODULE-PROVIDER-FUNCTIONS* no longer call PROVIDE. It's now the job of user code to do that (as it probably should always have been. ... OK, so as a result, our one-file contribs now need to PROVIDE themselves. Make it so. ... fix asdf-install/asdf autorequiration; an installed sbcl can now require asdf-install (as well as all the other asdfized contribs) as the first command in a clean core ... update contrib/{README,STANDARDS} to match what we currently do. --- contrib/README | 12 ++++-------- contrib/STANDARDS | 13 +++++++------ contrib/asdf-install/Makefile | 11 +++++++---- contrib/asdf/asdf.lisp | 10 ++++++---- contrib/sb-executable/sb-executable.lisp | 2 +- contrib/sb-introspect/sb-introspect.lisp | 1 + src/code/module.lisp | 14 +++++--------- version.lisp-expr | 2 +- 8 files changed, 32 insertions(+), 33 deletions(-) diff --git a/contrib/README b/contrib/README index a0a07be..389d18f 100644 --- a/contrib/README +++ b/contrib/README @@ -8,15 +8,11 @@ There are two kinds of contrib module in this directory: * Newer contrib modules conform to the contrib standard (see STANDARDS) and are automatically built and installed along with SBCL itself. Each of these is in its own subdirectory with a - Makefile, and can be loaded with REQUIRE + Makefile, and can be loaded with REQUIRE. - Many of them use ASDF, so you have to require that first: e.g. - - * (require 'asdf) - * (require 'sb-bsd-sockets) - - * Older standalone files are effectively unpackaged and may or may - not work with the current SBCL version. + * Older standalone files in the contrib directory itself are + effectively unpackaged and may or may not work with the current + SBCL version. Some good candidates for future extensions here are: * bindings to existing foreign libraries (e.g. to a regexp library diff --git a/contrib/STANDARDS b/contrib/STANDARDS index ada913b..80b0b58 100644 --- a/contrib/STANDARDS +++ b/contrib/STANDARDS @@ -1,4 +1,4 @@ -Proposed contrib standard, version $Revision$ +Proposed contrib standard, $Revision$ The SBCL contrib mechanism provides a mechanism to manage code which does not form part of SBCL itself, but which is @@ -49,17 +49,18 @@ A contrib package must contain a Makefile. This is to have three targets all: # do whatever compilation is necessary test: # run the package tests -install: # copy all necessary files into $(INSTALL_DIR) +install: # copy all necessary files into $(BUILD_ROOT)$(INSTALL_DIR) If the contrib package involves more than one file, you are encouraged to use ASDF to build it and load it. A version of asdf is bundled as an SBCL contrib, which knows to look in $SBCL_HOME/systems/ for asd files - your install target should create an appropriate symlink there -to the installed location of the system file. Look in sb-bsd-sockets/Makefile -for an example of an asdf-using contrib +to the installed location of the system file. Look in +sb-bsd-sockets/Makefile for an example of an asdf-using contrib. -$(INSTALL_DIR) will have been created by the system before your -install target is called. You do not need to make it yourself. +$(BUILD_ROOT)$(INSTALL_DIR) will have been created by the system +before your install target is called. You do not need to make it +yourself. * Tests diff --git a/contrib/asdf-install/Makefile b/contrib/asdf-install/Makefile index 5ec18e7..68926ad 100644 --- a/contrib/asdf-install/Makefile +++ b/contrib/asdf-install/Makefile @@ -4,7 +4,10 @@ EXTRA_INSTALL_TARGETS=asdf-install-install include ../asdf-module.mk asdf-install-install: asdf-install - if test -f $(INSTALL_ROOT)/bin/sbcl-asdf-install ; then \ - mv $(INSTALL_ROOT)/bin/sbcl-asdf-install $(INSTALL_ROOT)/bin/sbcl-asdf-install.old ; \ - fi - cp asdf-install $(INSTALL_ROOT)/bin/sbcl-asdf-install + if test -f $(BUILD_ROOT)$(INSTALL_ROOT)/bin/sbcl-asdf-install ; then \ + mv $(BUILD_ROOT)$(INSTALL_ROOT)/bin/sbcl-asdf-install $(BUILD_ROOT)$(INSTALL_ROOT)/bin/sbcl-asdf-install.old ; \ + fi +# KLUDGE: mv rather than cp because keeping asdf-install in that +# directory interferes with REQUIRE, and this is done before the tar +# in ../asdf-module.mk. Better solutions welcome. + mv asdf-install $(BUILD_ROOT)$(INSTALL_ROOT)/bin/sbcl-asdf-install diff --git a/contrib/asdf/asdf.lisp b/contrib/asdf/asdf.lisp index dc8ff7c..5f8a599 100644 --- a/contrib/asdf/asdf.lisp +++ b/contrib/asdf/asdf.lisp @@ -1,4 +1,4 @@ -;;; This is asdf: Another System Definition Facility. 1.77 +;;; This is asdf: Another System Definition Facility. 1.79 ;;; ;;; Feedback, bug reports, and patches are all welcome: please mail to ;;; . But note first that the canonical @@ -106,7 +106,7 @@ (in-package #:asdf) -(defvar *asdf-revision* (let* ((v "1.77") +(defvar *asdf-revision* (let* ((v "1.79") (colon (or (position #\: v) -1)) (dot (position #\. v))) (and v colon dot @@ -118,7 +118,7 @@ (defvar *compile-file-warnings-behaviour* :warn) (defvar *compile-file-failure-behaviour* #+sbcl :error #-sbcl :warn) -(defvar *verbose-out* *trace-output*) +(defvar *verbose-out* nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; utility stuff @@ -803,7 +803,7 @@ system.")) :original-initargs args args)) (*verbose-out* (if (getf args :verbose t) - *verbose-out* + *trace-output* (make-broadcast-stream))) (system (if (typep system 'component) system (find-system system))) (steps (traverse op system))) @@ -1099,3 +1099,5 @@ output to *verbose-out*. Returns the shell's exit code." *central-registry*) (pushnew 'module-provide-asdf sb-ext:*module-provider-functions*)) + +(provide 'asdf) diff --git a/contrib/sb-executable/sb-executable.lisp b/contrib/sb-executable/sb-executable.lisp index b4ba7ed..f785a98 100644 --- a/contrib/sb-executable/sb-executable.lisp +++ b/contrib/sb-executable/sb-executable.lisp @@ -49,4 +49,4 @@ exec sbcl --noinform ~{~A ~}--eval \"(with-open-file (i \\\"$0\\\" :element-type (if (logand prot #o40) #o10) (if (logand prot #o4) #o1))))) - \ No newline at end of file +(provide 'sb-executable) diff --git a/contrib/sb-introspect/sb-introspect.lisp b/contrib/sb-introspect/sb-introspect.lisp index 33a580e..2923ab7 100644 --- a/contrib/sb-introspect/sb-introspect.lisp +++ b/contrib/sb-introspect/sb-introspect.lisp @@ -160,3 +160,4 @@ Returns a DEFINITION-SOURCE object")) (sb-int:info :type :classoid (class-name o)))))) (find-definition-source constructor))) +(provide 'sb-introspect) diff --git a/src/code/module.lisp b/src/code/module.lisp index 83f129d..9b2903e 100644 --- a/src/code/module.lisp +++ b/src/code/module.lisp @@ -41,7 +41,9 @@ is a designator for a list of pathnames to be loaded if the module needs to be. If PATHNAMES is not supplied, functions from the list *MODULE-PROVIDER-FUNCTIONS* are called in order with MODULE-NAME - as an argument, until one of them returns non-NIL." + as an argument, until one of them returns non-NIL. User code is + responsible for calling PROVIDE to indicate a successful load of the + module." (let ((saved-modules (copy-list *modules*))) (unless (member (string module-name) *modules* :test #'string=) (cond (pathnames @@ -49,12 +51,7 @@ ;; ambiguity in standard: should we try all pathnames in the ;; list, or should we stop as soon as one of them calls PROVIDE? (dolist (ele pathnames t) - (load ele)) - ;; should we do this? Probably can't hurt, while we're - ;; taking the above view of "load everything"... though - ;; maybe having REQUIRE directly call PROVIDE is - ;; aesthetically suboptimal. - (provide module-name)) + (load ele))) (t (unless (some (lambda (p) (funcall p module-name)) sb!ext::*module-provider-functions*) @@ -69,9 +66,8 @@ (let ((filesys-name (string-downcase (string name)))) (load (merge-pathnames (make-pathname :directory (list :relative filesys-name) - :name filesys-name) + :name filesys-name :type nil) (truename (posix-getenv "SBCL_HOME"))))) - (provide name) t) diff --git a/version.lisp-expr b/version.lisp-expr index 8bf4e07..b3ef367 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.4.26" +"0.8.4.27" -- 1.7.10.4