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.
* 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
-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
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
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
-;;; 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
;;; <cclan-list@lists.sf.net>. But note first that the canonical
(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
(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
: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)))
*central-registry*)
(pushnew 'module-provide-asdf sb-ext:*module-provider-functions*))
+
+(provide 'asdf)
(if (logand prot #o40) #o10)
(if (logand prot #o4) #o1)))))
-
\ No newline at end of file
+(provide 'sb-executable)
(sb-int:info :type :classoid (class-name o))))))
(find-definition-source constructor)))
+(provide 'sb-introspect)
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
;; 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*)
(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)
;;; 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"