2.26.77: Fix package mix. Export driver. Move encoding support to stream.
authorFrancois-Rene Rideau <tunes@google.com>
Fri, 11 Jan 2013 17:46:58 +0000 (12:46 -0500)
committerFrancois-Rene Rideau <tunes@google.com>
Fri, 11 Jan 2013 17:46:58 +0000 (12:46 -0500)
Makefile
asdf-driver.asd
asdf.asd
component.lisp
driver.lisp [new file with mode: 0644]
find-system.lisp
header.lisp
package.lisp
run-program.lisp
stream.lisp
upgrade.lisp

index 34d2417..50017cc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -51,8 +51,8 @@ archive-copy: archive build/asdf.lisp
        ${MAKE} push
        git checkout master
 
-driver_lisp := header.lisp package.lisp compatibility.lisp utility.lisp upgrade.lisp pathname.lisp stream.lisp os.lisp image.lisp run-program.lisp lisp-build.lisp
-asdf_lisp := component.lisp system.lisp find-system.lisp find-component.lisp operation.lisp action.lisp lisp-action.lisp plan.lisp operate.lisp configuration.lisp output-translations.lisp source-registry.lisp backward-internals.lisp defsystem.lisp bundle.lisp concatenate-source.lisp backward-interface.lisp interface.lisp footer.lisp
+driver_lisp := header.lisp package.lisp compatibility.lisp utility.lisp pathname.lisp stream.lisp os.lisp image.lisp run-program.lisp lisp-build.lisp driver.lisp
+asdf_lisp := upgrade.lisp component.lisp system.lisp find-system.lisp find-component.lisp operation.lisp action.lisp lisp-action.lisp plan.lisp operate.lisp configuration.lisp output-translations.lisp source-registry.lisp backward-internals.lisp defsystem.lisp bundle.lisp concatenate-source.lisp backward-interface.lisp interface.lisp footer.lisp
 
 build/asdf.lisp: $(wildcard *.lisp)
        mkdir -p build
index 6b240de..5652ee2 100644 (file)
@@ -11,8 +11,9 @@ that you can't portably construct a complete program without using them."
    (:file "compatibility" :depends-on ("package"))
    (:file "utility" :depends-on ("compatibility"))
    (:file "pathname" :depends-on ("utility"))
-   (:file "stream" :depends-on ("utility"))
+   (:file "stream" :depends-on ("pathname"))
    (:file "os" :depends-on ("pathname" "stream"))
    (:file "image" :depends-on ("os"))
    (:file "run-program" :depends-on ("os"))
-   (:file "lisp-build" :depends-on ("image"))))
+   (:file "lisp-build" :depends-on ("image"))
+   (:file "driver" :depends-on ("lisp-build" "run-program"))))
index 9cfbb43..b3ee9ef 100644 (file)
--- a/asdf.asd
+++ b/asdf.asd
@@ -15,7 +15,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.26.76" ;; to be automatically updated by bin/bump-revision
+  :version "2.26.77" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components ((:module "build" :components ((:file "asdf")))))
 
index eb7b7bb..9aa7055 100644 (file)
@@ -3,7 +3,7 @@
 
 (asdf/package:define-package :asdf/component
   (:recycle :asdf/component :asdf)
-  (:use :common-lisp :asdf/utility :asdf/pathname :asdf/upgrade)
+  (:use :common-lisp :asdf/utility :asdf/pathname :asdf/stream :asdf/upgrade)
   (:intern #:name #:version #:description #:long-description
            #:sibling-dependencies #:if-feature #:in-order-to #:inline-methods
            #:relative-pathname #:absolute-pathname #:operation-times #:around-compile
    #:component-inline-methods ;; backward-compatibility only. DO NOT USE!
    #:component-operation-times ;; For internal use only.
    ;; portable ASDF encoding and implementation-specific external-format
-   #:component-external-format #:component-encoding
-   #:detect-encoding #:*encoding-detection-hook* #:always-default-encoding
-   #:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format
-   #:*default-encoding* #:*utf-8-external-format*))
+   #:component-external-format #:component-encoding))
 (in-package :asdf/component)
 
 (defgeneric* component-name (component)
@@ -162,57 +159,11 @@ another pathname in a degenerate way."))
 
 ;;;; Encodings
 
-(defvar *default-encoding* :default
-  "Default encoding for source files.
-The default value :default preserves the legacy behavior.
-A future default might be :utf-8 or :autodetect
-reading emacs-style -*- coding: utf-8 -*- specifications,
-and falling back to utf-8 or latin1 if nothing is specified.")
-
-(defparameter *utf-8-external-format*
-  #+(and asdf-unicode (not clisp)) :utf-8
-  #+(and asdf-unicode clisp) charset:utf-8
-  #-asdf-unicode :default
-  "Default :external-format argument to pass to CL:OPEN and also
-CL:LOAD or CL:COMPILE-FILE to best process a UTF-8 encoded file.
-On modern implementations, this will decode UTF-8 code points as CL characters.
-On legacy implementations, it may fall back on some 8-bit encoding,
-with non-ASCII code points being read as several CL characters;
-hopefully, if done consistently, that won't affect program behavior too much.")
-
-(defun* always-default-encoding (pathname)
-  (declare (ignore pathname))
-  *default-encoding*)
-
-(defvar *encoding-detection-hook* #'always-default-encoding
-  "Hook for an extension to define a function to automatically detect a file's encoding")
-
-(defun* detect-encoding (pathname)
-  (if (and pathname (not (directory-pathname-p pathname)) (probe-file pathname))
-      (funcall *encoding-detection-hook* pathname)
-      *default-encoding*))
-
 (defmethod component-encoding ((c component))
   (or (loop :for x = c :then (component-parent x)
         :while x :thereis (%component-encoding x))
       (detect-encoding (component-pathname c))))
 
-(defun* default-encoding-external-format (encoding)
-  (case encoding
-    (:default :default) ;; for backward-compatibility only. Explicit usage discouraged.
-    (:utf-8 *utf-8-external-format*)
-    (otherwise
-     (cerror "Continue using :external-format :default" (compatfmt "~@<Your ASDF component is using encoding ~S but it isn't recognized. Your system should :defsystem-depends-on (:asdf-encodings).~:>") encoding)
-     :default)))
-
-(defvar *encoding-external-format-hook*
-  #'default-encoding-external-format
-  "Hook for an extension to define a mapping between non-default encodings
-and implementation-defined external-format's")
-
-(defun* encoding-external-format (encoding)
-  (funcall *encoding-external-format-hook* encoding))
-
 (defmethod component-external-format ((c component))
   (encoding-external-format (component-encoding c)))
 
diff --git a/driver.lisp b/driver.lisp
new file mode 100644 (file)
index 0000000..5d52564
--- /dev/null
@@ -0,0 +1,10 @@
+;;;; ---------------------------------------------------------------------------
+;;;; Re-export all the functionality in asdf/driver
+
+(asdf/package:define-package :asdf/driver
+  (:use
+   :common-lisp :asdf/package :asdf/compatibility :asdf/utility
+   :asdf/pathname :asdf/stream :asdf/os :asdf/image :asdf/run-program :asdf/lisp-build)
+  (:reexport
+   :asdf/package :asdf/compatibility :asdf/utility
+   :asdf/pathname :asdf/stream :asdf/os :asdf/image :asdf/run-program :asdf/lisp-build))
index 11ac90d..eddc75a 100644 (file)
@@ -3,8 +3,8 @@
 
 (asdf/package:define-package :asdf/find-system
   (:recycle :asdf/find-system :asdf)
-  (:use :common-lisp :asdf/compatibility :asdf/utility :asdf/upgrade :asdf/pathname :asdf/os
-   :asdf/component :asdf/system)
+  (:use :common-lisp :asdf/compatibility :asdf/utility :asdf/pathname :asdf/stream :asdf/os
+        :asdf/upgrade :asdf/component :asdf/system)
   (:export
    #:coerce-name #:find-system #:locate-system #:load-sysdef #:with-system-definitions
    #:system-registered-p #:register-system #:registered-systems #:clear-system #:map-systems
index 3b35dd3..9d21fd8 100644 (file)
@@ -1,5 +1,5 @@
 ;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.26.76: Another System Definition Facility.
+;;; This is ASDF 2.26.77: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
index e3c0f24..690846f 100644 (file)
@@ -274,7 +274,7 @@ or when loading the package is optional."
                     (when intern (intern* name package)))
                    (t (rehome-symbol recycled package))))))
            (ensure-export (name p)
-             (multiple-value-bind (symbol status) (find-symbol name p)
+             (multiple-value-bind (symbol status) (find-symbol* name p)
                (assert status)
                (unless (eq status :external)
                  (ensure-exported name symbol p))))
@@ -305,12 +305,10 @@ or when loading the package is optional."
         (loop :for p :in (set-difference (package-use-list package) (append mix use))
               :do (unuse-package p package))
         (dolist (name unintern) (unintern* name package nil))
-        (loop :for sym :in export :for name = (string sym) :do
-          (setf (gethash name exported) t))
+        (dolist (sym export) (setf (gethash (string sym) exported) t))
         (loop :for p :in reexport :do
           (do-external-symbols (sym p)
-            (let ((name (string sym)))
-              (export (find-symbol* name package) package) (setf (gethash name exported) t))))
+            (setf (gethash (string sym) exported) t)))
         (do-external-symbols (sym package)
           (unless (gethash (symbol-name sym) exported) (unexport sym package)))
         (loop :for s :in shadow :for name = (string s) :do
@@ -329,17 +327,16 @@ or when loading the package is optional."
           (do-external-symbols (sym p) (ensure-mix sym p)))
         (loop :for (p . syms) :in import-from :do
           (dolist (sym syms) (ensure-import sym p)))
-        (loop :for p :in use :for sp = (string p) :for pp = (find-package* sp) :do
-          (do-external-symbols (sym pp) (ensure-inherited sym sp))
+        (loop :for p :in (append use mix) :for pp = (find-package* p) :do
+          (do-external-symbols (sym pp) (ensure-inherited sym pp))
           (use-package pp package))
         (loop :for name :being :the :hash-keys :of exported :do
-          (ensure-symbol name t))
-       (dolist (name intern)
+          (ensure-symbol (string name) t)
+          (ensure-export name package))
+        (dolist (name intern)
           (ensure-symbol (string name) t))
         (do-symbols (sym package)
           (ensure-symbol (symbol-name sym)))
-        (loop :for name :being :the :hash-keys :of exported :do
-          (ensure-export name package))
         package))))
 
 (eval-when (:load-toplevel :compile-toplevel :execute)
index d24ad9e..85e5e27 100644 (file)
@@ -37,11 +37,6 @@ as either a recognizing function or a sequence of characters."
      (t (error "requires-escaping-p: no good-char criterion")))
    token))
 
-(defun output-string (string &optional stream)
-  (if stream
-      (with-output (stream) (princ string stream))
-      string))
-
 (defun escape-token (token &key stream quote good-chars bad-chars escaper)
   "Call the ESCAPER function on TOKEN string if it needs escaping as per
 REQUIRES-ESCAPING-P using GOOD-CHARS and BAD-CHARS, otherwise output TOKEN,
index 9fabbe6..e705d40 100644 (file)
@@ -3,18 +3,21 @@
 
 (asdf/package:define-package :asdf/stream
   (:recycle :asdf/stream)
-  (:use :cl :asdf/package :asdf/compatibility :asdf/utility)
+  (:use :cl :asdf/package :asdf/compatibility :asdf/utility :asdf/pathname)
   (:export
    #:*default-stream-element-type* #:*stderr*
    #:finish-outputs #:format!
-   #:with-output #:with-input #:call-with-input-file
+   #:with-output #:output-string #:with-input #:call-with-input-file
    #:with-safe-io-syntax #:read-function
    #:read-file-forms #:read-first-file-form
    #:copy-stream-to-stream #:concatenate-files
    #:copy-stream-to-stream-line-by-line
    #:slurp-stream-string #:slurp-stream-lines
    #:slurp-stream-forms #:slurp-file-string
-   #:slurp-file-lines #:slurp-file-forms))
+   #:slurp-file-lines #:slurp-file-forms
+   #:detect-encoding #:*encoding-detection-hook* #:always-default-encoding
+   #:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format
+   #:*default-encoding* #:*utf-8-external-format*))
 (in-package :asdf/stream)
 
 (defvar *default-stream-element-type* (or #+(or abcl cmu cormanlisp scl xcl) 'character :default)
@@ -77,6 +80,11 @@ Otherwise, signal an error.")
 as per FORMAT, and evaluate BODY within the scope of this binding."
   `(call-with-output ,value #'(lambda (,x) ,@body)))
 
+(defun output-string (string &optional stream)
+  (if stream
+      (with-output (stream) (princ string stream))
+      string))
+
 
 ;;; Input helpers
 
@@ -188,3 +196,52 @@ reading contents line by line."
   "Open FILE with option KEYS, read its contents as a list of forms"
   (apply 'call-with-input-file file 'slurp-stream-forms keys))
 
+
+;;; Encodings
+
+(defvar *default-encoding* :default
+  "Default encoding for source files.
+The default value :default preserves the legacy behavior.
+A future default might be :utf-8 or :autodetect
+reading emacs-style -*- coding: utf-8 -*- specifications,
+and falling back to utf-8 or latin1 if nothing is specified.")
+
+(defparameter *utf-8-external-format*
+  #+(and asdf-unicode (not clisp)) :utf-8
+  #+(and asdf-unicode clisp) charset:utf-8
+  #-asdf-unicode :default
+  "Default :external-format argument to pass to CL:OPEN and also
+CL:LOAD or CL:COMPILE-FILE to best process a UTF-8 encoded file.
+On modern implementations, this will decode UTF-8 code points as CL characters.
+On legacy implementations, it may fall back on some 8-bit encoding,
+with non-ASCII code points being read as several CL characters;
+hopefully, if done consistently, that won't affect program behavior too much.")
+
+(defun* always-default-encoding (pathname)
+  (declare (ignore pathname))
+  *default-encoding*)
+
+(defvar *encoding-detection-hook* #'always-default-encoding
+  "Hook for an extension to define a function to automatically detect a file's encoding")
+
+(defun* detect-encoding (pathname)
+  (if (and pathname (not (directory-pathname-p pathname)) (probe-file pathname))
+      (funcall *encoding-detection-hook* pathname)
+      *default-encoding*))
+
+(defun* default-encoding-external-format (encoding)
+  (case encoding
+    (:default :default) ;; for backward-compatibility only. Explicit usage discouraged.
+    (:utf-8 *utf-8-external-format*)
+    (otherwise
+     (cerror "Continue using :external-format :default" (compatfmt "~@<Your ASDF component is using encoding ~S but it isn't recognized. Your system should :defsystem-depends-on (:asdf-encodings).~:>") encoding)
+     :default)))
+
+(defvar *encoding-external-format-hook*
+  #'default-encoding-external-format
+  "Hook for an extension to define a mapping between non-default encodings
+and implementation-defined external-format's")
+
+(defun* encoding-external-format (encoding)
+  (funcall *encoding-external-format-hook* encoding))
+
index 3b1d3ad..efdaf85 100644 (file)
@@ -31,7 +31,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.26.76")
+         (asdf-version "2.26.77")
          (existing-asdf (find-class (find-symbol* :component :asdf nil) nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))