Changeset 13963

06/13/12 11:39:16 (9 years ago)
Mark Evenson

asdf: Upgrade to asdf-2.22.

2 edited


  • trunk/abcl/doc/asdf/asdf.texinfo

    r13922 r13963  
    29252925@section Controlling source file character encoding
    2927 Starting with ASDF 2.21, components accept a @code{:encoding} option.
     2927Starting with ASDF 2.21, components accept a @code{:encoding} option
     2928so authors may specify which character encoding should be used
     2929to read and evaluate their source code.
     2930When left unspecified, the encoding is inherited
     2931from the parent module or system;
     2932if no encoding is specified at any point,
     2933the default @code{:autodetect} is assumed.
    29282934By default, only @code{:default}, @code{:utf-8}
    29292935and @code{:autodetect} are accepted.
    2930 @code{:autodetect} is the default, and calls
     2936@code{:autodetect}, the default, calls
    29312937@code{*encoding-detection-hook*} which by default always returns
    29322938@code{*default-encoding*} which itself defaults to @code{:default}.
    29332940In other words, there now are plenty of extension hooks, but
    29342941by default ASDF follows the backwards compatible behavior
    29492956on an implementation that supports unicode.
    29502957We recommend that you avoid using unprotected @code{:encoding} specifications
    2951 until after ASDF 2.21 becomes widespread, hopefully by the end of 2012.
     2958until after ASDF 2.21 or later becomes widespread, hopefully by the end of 2012.
    29532960While it offers plenty of hooks for extension,
    31573164from the @code{xcvb-driver} system that is distributed with XCVB:
    3159 It's only alternative that supports
     3166It's the only alternative that supports
    31603167as many implementations and operating systems as ASDF does,
    31613168and provides well-defined behavior outside Unix (i.e. on Windows).
    32263233to see if the new API is present.
    32273234@emph{All} versions of ASDF should have the @code{:asdf} feature.
     3236Additionally, all versions of asdf 2
     3237define a function @code{(asdf:asdf-version)} you may use to query the version;
     3238and the source code of recent versions of asdf 2 features the version number
     3239prominently on the second line of its source code.
    32293241If you are experiencing problems or limitations of any sort with ASDF 1,
    34543466See @code{enable-asdf-binary-locations-compatibility} in
    34553467@pxref{Controlling where ASDF saves compiled files,,Backward Compatibility}.
    3456 But thou shall not load ABL on top of ASDF 2.
     3468But thou shalt not load ABL on top of ASDF 2.
    34583470@end itemize
    34703482where the namestring might have previously sufficed;
    34713483moreover when evaluation is desired @code{#.} must be used,
    3472 where it wasn't necessary in the toplevel @code{:pathname} argument.
     3484where it wasn't necessary in the toplevel @code{:pathname} argument
     3485(but necessary in other @code{:pathname} arguments).
    34863499Or you can fix your implementation to not be quite that slow
    34873500when recursing through directories.
    3488 @emph{Update}: performance bug fixed the hard way in 2.010.
     3501@emph{Update}: This performance bug fixed the hard way in 2.010.
    35433556If ASDF isn't loaded yet, then @code{(require "asdf")}
    35443557should load the version of ASDF that is bundled with your system.
     3558If possible so should @code{(require "ASDF")}.
    35453559You may have it load some other version configured by the user,
    35463560if you allow such configuration.
  • trunk/abcl/src/org/armedbear/lisp/asdf.lisp

    r13922 r13963  
    11;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
    2 ;;; This is ASDF 2.21: Another System Definition Facility.
     2;;; This is ASDF 2.22: Another System Definition Facility.
    44;;; Feedback, bug reports, and patches are all welcome:
    117117         ;; "2.345.0.7" would be your seventh local modification of official release 2.345
    118118         ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
    119          (asdf-version "2.21")
     119         (asdf-version "2.22")
    120120         (existing-asdf (find-class 'component nil))
    121121         (existing-version *asdf-version*)
    13441344    :accessor module-if-component-dep-fails)
    13451345   (default-component-class
    1346     :initform *default-component-class*
     1346    :initform nil
    13471347    :initarg :default-component-class
    13481348    :accessor module-default-component-class)))
    27892789        (default-directory))))
     2791(defun* find-class* (x &optional (errorp t) environment)
     2792  (etypecase x
     2793    ((or standard-class built-in-class) x)
     2794    (symbol (find-class x errorp environment))))
    27912796(defun* class-for-type (parent type)
    27922797  (or (loop :for symbol :in (list
    28002805        :return class)
    28012806      (and (eq type :file)
    2802            (or (and parent (module-default-component-class parent))
    2803                (find-class *default-component-class*)))
     2807           (find-class*
     2808            (or (loop :for module = parent :then (component-parent module) :while module
     2809                  :thereis (module-default-component-class module))
     2810                *default-component-class*) nil))
    28042811      (sysdef-error "don't recognize component type ~A" type)))
    28872894              ;; the following list of keywords is reproduced below in the
    28882895              ;; remove-keys form.  important to keep them in sync
    2889               components pathname default-component-class
     2896              components pathname
    28902897              perform explain output-files operation-done-p
    28912898              weakly-depends-on depends-on serial in-order-to
    29142921                        :parent parent
    29152922                        (remove-keys
    2916                          '(components pathname default-component-class
     2923                         '(components pathname
    29172924                           perform explain output-files operation-done-p
    29182925                           weakly-depends-on depends-on serial in-order-to)
    29282935      (component-pathname ret) ; eagerly compute the absolute pathname
    29292936      (when (typep ret 'module)
    2930         (setf (module-default-component-class ret)
    2931               (or default-component-class
    2932                   (and (typep parent 'module)
    2933                        (module-default-component-class parent))))
    29342937        (let ((*serial-depends-on* nil))
    29352938          (setf (module-components ret)
    36883691                 (when (plusp (length h)) `((,(truenamize h) ,*wild-inferiors*) ())))
    36893692    ;; The below two are not needed: no precompiled ASDF system there
    3690     ;; #+ecl (,(translate-logical-pathname "SYS:**;*.*") ())
     3693    #+ecl (,(translate-logical-pathname "SYS:**;*.*") ())
    36913694    ;; #+clozure ,(ignore-errors (list (wilden (let ((*default-pathname-defaults* #p"")) (truename #p"ccl:"))) ()))
    36923695    ;; All-import, here is where we want user stuff to be:
    40134016(defun* directory-files (directory &optional (pattern *wild-file*))
    4014   (setf directory (pathname directory))
    4015   (when (wild-pathname-p directory)
    4016     (error "Invalid wild in ~S" directory))
    4017   (unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal)
    4018     (error "Invalid file pattern ~S" pattern))
    4019   (when (typep directory 'logical-pathname)
    4020     (setf pattern (make-pathname-logical pattern (pathname-host directory))))
    4021   (let ((entries (ignore-errors (directory* (merge-pathnames* pattern directory)))))
    4022     (filter-logical-directory-results
    4023      directory entries
    4024      #'(lambda (f)
    4025          (make-pathname :defaults directory
    4026                         :name (pathname-name f)
    4027                         :type (make-pathname-component-logical (pathname-type f))
    4028                         :version (make-pathname-component-logical (pathname-version f)))))))
     4017  (let ((dir (pathname directory)))
     4018    (when (typep dir 'logical-pathname)
     4019      ;; Because of the filtering we do below,
     4020      ;; logical pathnames have restrictions on wild patterns.
     4021      ;; Not that the results are very portable when you use these patterns on physical pathnames.
     4022      (when (wild-pathname-p dir)
     4023        (error "Invalid wild pattern in logical directory ~S" directory))
     4024      (unless (member (pathname-directory pattern) '(() (:relative)) :test 'equal)
     4025        (error "Invalid file pattern ~S for logical directory ~S" pattern directory))
     4026      (setf pattern (make-pathname-logical pattern (pathname-host dir))))
     4027    (let ((entries (ignore-errors (directory* (merge-pathnames* pattern dir)))))
     4028      (filter-logical-directory-results
     4029       directory entries
     4030       #'(lambda (f)
     4031           (make-pathname :defaults dir
     4032                          :name (make-pathname-component-logical (pathname-name f))
     4033                          :type (make-pathname-component-logical (pathname-type f))
     4034                          :version (make-pathname-component-logical (pathname-version f))))))))
    40304036(defun* directory-asd-files (directory)
    44004406          (system (find-system (string-downcase name) nil)))
    44014407      (when system
    4402         (operate *require-asdf-operator* system :verbose nil)
     4408        (operate *require-asdf-operator* system :verbose nil :force-not (loaded-systems))
    44034409        t))))
Note: See TracChangeset for help on using the changeset viewer.