Raymond Toy pushed to branch master at cmucl / cmucl

Commits:

1 changed file:

Changes:

  • src/contrib/asdf/asdf.lisp
    1 1
     ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*-
    
    2
    -;;; This is ASDF 3.3.0: Another System Definition Facility.
    
    2
    +;;; This is ASDF 3.3.1: Another System Definition Facility.
    
    3 3
     ;;;
    
    4 4
     ;;; Feedback, bug reports, and patches are all welcome:
    
    5 5
     ;;; please mail to <asdf-devel@common-lisp.net>.
    
    ... ... @@ -1030,9 +1030,9 @@ Return a string made of the parts not omitted or emitted by FROB."
    1030 1030
        #:string-prefix-p #:string-enclosed-p #:string-suffix-p
    
    1031 1031
        #:standard-case-symbol-name #:find-standard-case-symbol ;; symbols
    
    1032 1032
        #:coerce-class ;; CLOS
    
    1033
    -   #:stamp< #:stamps< #:stamp*< #:stamp<= ;; stamps
    
    1034
    -   #:earlier-stamp #:stamps-earliest #:earliest-stamp
    
    1035
    -   #:later-stamp #:stamps-latest #:latest-stamp #:latest-stamp-f
    
    1033
    +   #:timestamp< #:timestamps< #:timestamp*< #:timestamp<= ;; timestamps
    
    1034
    +   #:earlier-timestamp #:timestamps-earliest #:earliest-timestamp
    
    1035
    +   #:later-timestamp #:timestamps-latest #:latest-timestamp #:latest-timestamp-f
    
    1036 1036
        #:list-to-hash-set #:ensure-gethash ;; hash-table
    
    1037 1037
        #:ensure-function #:access-at #:access-at-count ;; functions
    
    1038 1038
        #:call-function #:call-functions #:register-hook-function
    
    ... ... @@ -1380,11 +1380,11 @@ If optional ERROR argument is NIL, return NIL instead of an error when the symbo
    1380 1380
                         (string (standard-case-symbol-name package-designator)))
    
    1381 1381
                       error)))
    
    1382 1382
     
    
    1383
    -;;; stamps: a REAL or a boolean where T=-infinity, NIL=+infinity
    
    1383
    +;;; timestamps: a REAL or a boolean where T=-infinity, NIL=+infinity
    
    1384 1384
     (eval-when (#-lispworks :compile-toplevel :load-toplevel :execute)
    
    1385
    -  (deftype stamp () '(or real boolean)))
    
    1385
    +  (deftype timestamp () '(or real boolean)))
    
    1386 1386
     (with-upgradability ()
    
    1387
    -  (defun stamp< (x y)
    
    1387
    +  (defun timestamp< (x y)
    
    1388 1388
         (etypecase x
    
    1389 1389
           ((eql t) (not (eql y t)))
    
    1390 1390
           (real (etypecase y
    
    ... ... @@ -1392,16 +1392,16 @@ If optional ERROR argument is NIL, return NIL instead of an error when the symbo
    1392 1392
                   (real (< x y))
    
    1393 1393
                   (null t)))
    
    1394 1394
           (null nil)))
    
    1395
    -  (defun stamps< (list) (loop :for y :in list :for x = nil :then y :always (stamp< x y)))
    
    1396
    -  (defun stamp*< (&rest list) (stamps< list))
    
    1397
    -  (defun stamp<= (x y) (not (stamp< y x)))
    
    1398
    -  (defun earlier-stamp (x y) (if (stamp< x y) x y))
    
    1399
    -  (defun stamps-earliest (list) (reduce 'earlier-stamp list :initial-value nil))
    
    1400
    -  (defun earliest-stamp (&rest list) (stamps-earliest list))
    
    1401
    -  (defun later-stamp (x y) (if (stamp< x y) y x))
    
    1402
    -  (defun stamps-latest (list) (reduce 'later-stamp list :initial-value t))
    
    1403
    -  (defun latest-stamp (&rest list) (stamps-latest list))
    
    1404
    -  (define-modify-macro latest-stamp-f (&rest stamps) latest-stamp))
    
    1395
    +  (defun timestamps< (list) (loop :for y :in list :for x = nil :then y :always (timestamp< x y)))
    
    1396
    +  (defun timestamp*< (&rest list) (timestamps< list))
    
    1397
    +  (defun timestamp<= (x y) (not (timestamp< y x)))
    
    1398
    +  (defun earlier-timestamp (x y) (if (timestamp< x y) x y))
    
    1399
    +  (defun timestamps-earliest (list) (reduce 'earlier-timestamp list :initial-value nil))
    
    1400
    +  (defun earliest-timestamp (&rest list) (timestamps-earliest list))
    
    1401
    +  (defun later-timestamp (x y) (if (timestamp< x y) y x))
    
    1402
    +  (defun timestamps-latest (list) (reduce 'later-timestamp list :initial-value t))
    
    1403
    +  (defun latest-timestamp (&rest list) (timestamps-latest list))
    
    1404
    +  (define-modify-macro latest-timestamp-f (&rest timestamps) latest-timestamp))
    
    1405 1405
     
    
    1406 1406
     
    
    1407 1407
     ;;; Function designators
    
    ... ... @@ -1669,7 +1669,7 @@ message, that takes the functionality as its first argument (that can be skipped
    1669 1669
     (in-package :uiop/version)
    
    1670 1670
     
    
    1671 1671
     (with-upgradability ()
    
    1672
    -  (defparameter *uiop-version* "3.3.0")
    
    1672
    +  (defparameter *uiop-version* "3.3.1")
    
    1673 1673
     
    
    1674 1674
       (defun unparse-version (version-list)
    
    1675 1675
         "From a parsed version (a list of natural numbers), compute the version string"
    
    ... ... @@ -6753,6 +6753,9 @@ or whether it's already taken care of by the implementation's underlying run-pro
    6753 6753
         "A portable abstraction of a low-level call to libc's system()."
    
    6754 6754
         (declare (ignorable keys directory input if-input-does-not-exist output
    
    6755 6755
                             if-output-exists error-output if-error-output-exists))
    
    6756
    +    (when (member :stream (list input output error-output))
    
    6757
    +      (parameter-error "~S: ~S is not allowed as synchronous I/O redirection argument"
    
    6758
    +                       'run-program :stream))
    
    6756 6759
         #+(or abcl allegro clozure cmucl ecl (and lispworks os-unix) mkcl sbcl scl)
    
    6757 6760
         (let (#+(or abcl ecl mkcl)
    
    6758 6761
                 (version (parse-version
    
    ... ... @@ -7503,7 +7506,7 @@ previously-loaded version of ASDF."
    7503 7506
              ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
    
    7504 7507
              ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
    
    7505 7508
              ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
    
    7506
    -         (asdf-version "3.3.0")
    
    7509
    +         (asdf-version "3.3.1")
    
    7507 7510
              (existing-version (asdf-version)))
    
    7508 7511
         (setf *asdf-version* asdf-version)
    
    7509 7512
         (when (and existing-version (not (equal asdf-version existing-version)))
    
    ... ... @@ -9801,7 +9804,7 @@ unless identically to toplevel"
    9801 9804
       (defmethod record-dependency ((plan sequential-plan) (o operation) (c component))
    
    9802 9805
         (values)))
    
    9803 9806
     
    
    9804
    -(when-upgrading (:version "3.2.1")
    
    9807
    +(when-upgrading (:version "3.3.0")
    
    9805 9808
       (defmethod initialize-instance :after ((plan plan-traversal) &key &allow-other-keys)))
    
    9806 9809
     
    
    9807 9810
     
    
    ... ... @@ -9889,7 +9892,7 @@ or NIL if no the status is considered outside of a specific plan."))
    9889 9892
         "Return the earliest status later than both status1 and status2"
    
    9890 9893
         (make-action-status
    
    9891 9894
          :bits (logand (status-bits status1) (status-bits status2))
    
    9892
    -     :stamp (latest-stamp (status-stamp status1) (status-stamp status2))
    
    9895
    +     :stamp (latest-timestamp (status-stamp status1) (status-stamp status2))
    
    9893 9896
          :level (min (status-level status1) (status-level status2))
    
    9894 9897
          :index (or (status-index status1) (status-index status2))))
    
    9895 9898
     
    
    ... ... @@ -10042,22 +10045,22 @@ initialized with SEED."
    10042 10045
                 (in-files (input-files o c))
    
    10043 10046
                 (in-stamps (mapcar #'get-file-stamp in-files))
    
    10044 10047
                 (missing-in (loop :for f :in in-files :for s :in in-stamps :unless s :collect f))
    
    10045
    -            (latest-in (stamps-latest (cons dep-stamp in-stamps))))
    
    10048
    +            (latest-in (timestamps-latest (cons dep-stamp in-stamps))))
    
    10046 10049
            (when (and missing-in (not just-done)) (return (values nil nil))))
    
    10047 10050
          (let* (;; collect timestamps from outputs, and exit early if any is missing
    
    10048 10051
                 (out-files (remove-if 'null (output-files o c)))
    
    10049 10052
                 (out-stamps (mapcar (if just-done 'register-file-stamp 'get-file-stamp) out-files))
    
    10050 10053
                 (missing-out (loop :for f :in out-files :for s :in out-stamps :unless s :collect f))
    
    10051
    -            (earliest-out (stamps-earliest out-stamps)))
    
    10054
    +            (earliest-out (timestamps-earliest out-stamps)))
    
    10052 10055
            (when (and missing-out (not just-done)) (return (values nil nil))))
    
    10053 10056
          (let (;; Time stamps from the files at hand, and whether any is missing
    
    10054 10057
                (all-present (not (or missing-in missing-out)))
    
    10055 10058
                ;; Has any input changed since we last generated the files?
    
    10056
    -           ;; Note that we use stamp<= instead of stamp< to play nice with generated files.
    
    10059
    +           ;; Note that we use timestamp<= instead of timestamp< to play nice with generated files.
    
    10057 10060
                ;; Any race condition is intrinsic to the limited timestamp resolution.
    
    10058
    -           (up-to-date-p (stamp<= latest-in earliest-out))
    
    10061
    +           (up-to-date-p (timestamp<= latest-in earliest-out))
    
    10059 10062
                ;; If everything is up to date, the latest of inputs and outputs is our stamp
    
    10060
    -           (done-stamp (stamps-latest (cons latest-in out-stamps))))
    
    10063
    +           (done-stamp (timestamps-latest (cons latest-in out-stamps))))
    
    10061 10064
            ;; Warn if some files are missing:
    
    10062 10065
            ;; either our model is wrong or some other process is messing with our files.
    
    10063 10066
            (when (and just-done (not all-present))
    
    ... ... @@ -10686,14 +10689,16 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms."))
    10686 10689
         (assert (equal (coerce-name s) (primary-system-name s)))
    
    10687 10690
         (nest
    
    10688 10691
          (if-let ((pathname (first (input-files o s)))))
    
    10692
    +     (let ((readtable *readtable*) ;; save outer syntax tables. TODO: proper syntax-control
    
    10693
    +           (print-pprint-dispatch *print-pprint-dispatch*)))
    
    10689 10694
          (with-standard-io-syntax)
    
    10690 10695
          (let ((*print-readably* nil)
    
    10691 10696
                ;; Note that our backward-compatible *readtable* is
    
    10692 10697
                ;; a global readtable that gets globally side-effected. Ouch.
    
    10693 10698
                ;; Same for the *print-pprint-dispatch* table.
    
    10694 10699
                ;; We should do something about that for ASDF3 if possible, or else ASDF4.
    
    10695
    -           (*readtable* *readtable*)
    
    10696
    -           (*print-pprint-dispatch* *print-pprint-dispatch*)
    
    10700
    +           (*readtable* readtable) ;; restore inside syntax table
    
    10701
    +           (*print-pprint-dispatch* print-pprint-dispatch)
    
    10697 10702
                (*package* (find-package :asdf-user))
    
    10698 10703
                (*default-pathname-defaults*
    
    10699 10704
                 ;; resolve logical-pathnames so they won't wreak havoc in parsing namestrings.
    
    ... ... @@ -10837,7 +10842,7 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
    10837 10842
               (let ((o (make-operation 'define-op)))
    
    10838 10843
                 (multiple-value-bind (stamp done-p)
    
    10839 10844
                     (compute-action-stamp plan o system)
    
    10840
    -              (return (and (stamp<= stamp (component-operation-time o system))
    
    10845
    +              (return (and (timestamp<= stamp (component-operation-time o system))
    
    10841 10846
                                done-p)))))
    
    10842 10847
           (system-out-of-date () nil)))
    
    10843 10848
     
    
    ... ... @@ -10864,7 +10869,7 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
    10864 10869
                                   (pathname-equal
    
    10865 10870
                                    (physicalize-pathname pathname)
    
    10866 10871
                                    (physicalize-pathname previous-pathname))))
    
    10867
    -                     (stamp<= stamp previous-time)
    
    10872
    +                     (timestamp<= stamp previous-time)
    
    10868 10873
                          ;; TODO: check that all dependencies are up-to-date.
    
    10869 10874
                          ;; This necessitates traversing them without triggering
    
    10870 10875
                          ;; the adding of nodes to the plan.