Commit f83db9d9 authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

Merge branch 'master' into minimakefile

parents 4ab3e838 0d97aac7
......@@ -75,7 +75,7 @@
:licence "MIT"
:description "Another System Definition Facility"
:long-description "ASDF builds Common Lisp software organized into defined systems."
:version "3.1.4.13" ;; to be automatically updated by make bump-version
:version "3.1.4.15" ;; to be automatically updated by make bump-version
:depends-on ()
#+asdf3 :encoding #+asdf3 :utf-8
:class #+asdf3.1 package-inferred-system #-asdf3.1 system
......
......@@ -2,7 +2,8 @@ cl-asdf (2:3.1.5-1) unstable; urgency=low
Bug fix release:
* Add CLASP support.
* Many miscellaneous fixes for issues on individual implementations.
* Many miscellaneous fixes for issues on individual implementations,
notably UIOP incompatibility introduced by SBCL 1.2.12 (closes: #787909).
* Added OS-COND to UIOP to paper over some incompatibilities about when
and how operating system can be detected on different implementations.
* Fixes to XDG configuration directory handling. Try to stick to the
......@@ -11,7 +12,7 @@ cl-asdf (2:3.1.5-1) unstable; urgency=low
prefixes.
* Documentation improvements.
-- François-René Rideau <fare@tunes.org> Mon, 25 May 2015 09:52:54 -0400
-- François-René Rideau <fare@tunes.org> Sat, 06 Jun 2015 16:16:41 -0400
cl-asdf (2:3.1.4-1) unstable; urgency=low
......
......@@ -8,17 +8,17 @@ Uploaders: Peter Van Eynde <pvaneynd@debian.org>,
Julien Danjou <acid@debian.org>,
François-René Rideau <fare@tunes.org>,
Robert P. Goldman <rpgoldman@sift.info>
Build-Depends: debhelper (>> 7)
Build-Depends: debhelper (>= 9)
Build-Depends-Indep: texinfo, texlive-extra-utils, texlive, texlive-generic-recommended
Standards-Version: 3.9.6.1
Homepage: http://common-lisp.net/project/asdf/
Vcs-Git: git://common-lisp.net/projects/asdf/asdf.git
Vcs-Git: https://gitlab.common-lisp.net/asdf/asdf.git
Package: cl-asdf
Architecture: all
Recommends: common-lisp-controller, sbcl | lisp-compiler
Replaces: sbcl-common (<= 1:0.9.13.0-2)
Breaks: sbcl-common (<= 1:0.9.13.0-2), common-lisp-controller (<< 7.3)
Breaks: sbcl-common (<= 1:0.9.13.0-2), common-lisp-controller (<= 7.3)
Depends: ${misc:Depends}
Suggests: cl-launch (>= 4.1)
Description: Another System Definition Facility
......
This diff is collapsed.
......@@ -34,9 +34,9 @@ website: all
rsync -lt --no-g ${webfiles} ${website}
rsync -lt --no-g ../debian/changelog ${website}/changelog
.PHONY: clean veryclean manual-html
clean:
.PHONY: clean intermediate-clean manual-html
intermediate-clean:
rm -f ${intermediate}
veryclean: clean
clean: intermediate-clean
rm -f asdf.html asdf.pdf asdf.info
rm -rf asdf/ asdf.t2d/
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*-
;;; This is ASDF 3.1.4.13: Another System Definition Facility.
;;; This is ASDF 3.1.4.15: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel@common-lisp.net>.
......
......@@ -462,4 +462,5 @@
#-gcl ;; expected-failure: GCL crashes badly
(assert (test-component-pathnames :delete-host t :support-string-pathnames nil))
#+os-unix
(test-pathname-parsing)
......@@ -169,8 +169,15 @@ Some constraints:
the other expression ~S yields that:~% ~S~% ~S~%"
qx x (pathname-components x)
qy y (pathname-components y)))
;; accept equalp namestrings, to account for case-independent filesystems
((equalp (namestring x) (namestring y))
(warn "These two expressions yield pathnames that have equalp namestrings yet are not pathname-equal~%~
the first expression ~S yields this:~% ~S~% ~S~%
the other expression ~S yields that:~% ~S~% ~S~%"
qx x (pathname-components x)
qy y (pathname-components y)))
(t
(error "These two expressions yield paths that are not pathname-equal~%~
(error "These two expressions yield paths that are equal in any way:~%~
the first expression ~S yields this:~% ~S~% ~S~%
the other expression ~S yields that:~% ~S~% ~S~%"
qx x (pathname-components x)
......
......@@ -27,7 +27,7 @@
(unless (find-system :lisp-invocation nil)
(leave-test "Couldn't find lisp-invocation. Probably your ASDF ext/ directory needs submodule update." 1))
(load-system :lisp-invocation)
(unless (version-satisfies (find-system :lisp-invocation) "1.0.4")
(unless (version-satisfies (find-system :lisp-invocation) "1.0.8")
(leave-test "Lisp-invocation library isn't new enough to test successfully. Probably your ASDF ext/ directory needs submodule update." 1))
;; Disable any user source registry.
(initialize-source-registry `(:source-registry :ignore-inherited-configuration))
......
......@@ -7,15 +7,17 @@
:output '(:string :stripped t))
:ensure-directory t))
(chdir *asdf-directory*)
(assert (pathname-equal *asdf-directory* (getcwd)))
(assert (pathname-equal *asdf-directory* (getcwd-from-run-program)))
(assert (probe-file* "asdf.asd"))
(chdir *test-directory*)
(assert (pathname-equal *test-directory* (getcwd)))
(assert (pathname-equal *test-directory* (getcwd-from-run-program)))
(assert (probe-file* "test-utilities.script"))
(let ((asdf-directory (truename *asdf-directory*)))
(chdir asdf-directory)
(assert-pathname-equal asdf-directory (getcwd))
(assert-pathname-equal asdf-directory (getcwd-from-run-program))
(assert (probe-file* "asdf.asd")))
(let ((test-directory (truename *test-directory*)))
(chdir test-directory)
(assert-pathname-equal test-directory (getcwd))
(assert-pathname-equal test-directory (getcwd-from-run-program))
(assert (probe-file* "test-utilities.script")))
(assert
(every #'directory-pathname-p
......@@ -270,6 +272,7 @@
#+non-base-chars-exist-p
(progn
(assert (= 0 (character-type-index #\a)))
(assert (not (base-string-p *last-char-string*)))
(assert (not (base-string-p (make-string 10 :element-type 'character))))
(assert (not (base-string-p (unbasify "abc"))))
......@@ -278,11 +281,19 @@
(assert (base-string-p (reduce/strcat (mapcar 'basify '("a" "b" nil "cd")))))
(assert (base-string-p (strcat (basify "ab") (basify "cd"))))
(assert (not (base-string-p (strcat (basify "ab") #\c *last-char* (unbasify "d")))))
(assert (base-string-p (strcat (basify "ab") #\c #\d))))
(or #+os-windows ;; Avoid C:\Users vs C:\users on SBCL.
(equalp (namestring *test-directory*) (namestring (getcwd)))
(assert-pathname-equal *test-directory* (getcwd)))
(assert (base-string-p (strcat (basify "ab") #\c #\d)))
(when (< 256 char-code-limit)
(let* ((lambda-char (code-char 955))
(lambda-string (string lambda-char)))
(assert (= 1 (character-type-index lambda-char)))
(assert-equal (strings-common-element-type (list #\a nil (strcat "hello, " lambda-string "world")))
#-lispworks 'character #+lispworks7 'lw:bmp-char #+(and lispworks (not lispworks7)) 'lw:simple-char)
(when (< 65536 char-code-limit)
(let* ((amagi (format nil "~a~a" (code-char #x120BC) (code-char #x12104))))
(assert (= #+lispworks7 2 #-lispworks7 1 (character-type-index (first-char amagi))))
(assert-equal (strings-common-element-type (list #\a nil amagi lambda-string))
#+(or (not lispworks) lispworks7) 'character
#+(and lispworks (not lispworks7)) 'lw:simple-char))))))
(assert-equal +crlf+ (map 'string 'code-char '(13 10)))
(assert-equal +lf+ (map 'string 'code-char '(10)))
......
......@@ -327,13 +327,13 @@ also \"Configuration DSL\"\) in the ASDF manual."
(defun xdg-config-dirs (&rest more)
"The preference-ordered set of additional base paths to search for configuration files.
Returns a list of absolute directory pathnames.
MORE may contain specifications for a subpath relative to these directories: a
MORE may contain specifications for a subpath relative to these directories:
subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see
also \"Configuration DSL\"\) in the ASDF manual."
(mapcar #'(lambda (d) (resolve-location `(,d ,more)))
(or (getenv-absolute-directories "XDG_CONFIG_DIRS")
(os-cond
((os-windows-p) (xdg-data-dirs "config/" more))
((os-windows-p) (xdg-data-dirs "config/"))
(t (mapcar 'parse-unix-namestring '("/etc/xdg/")))))))
(defun xdg-cache-home (&rest more)
......@@ -367,6 +367,7 @@ also \"Configuration DSL\"\) in the ASDF manual."
MORE may contain specifications for a subpath relative to these directories: a
subpathname specification and keyword arguments as per RESOLVE-LOCATION \(see
also \"Configuration DSL\"\) in the ASDF manual."
(declare (ignorable more))
(os-cond
((os-unix-p) (list (resolve-absolute-location `(,(parse-unix-namestring "/etc/") ,more))))))
......
......@@ -767,7 +767,7 @@ It returns a process-info plist with possible keys:
(reduce/strcat
(os-cond
((os-unix-p) `(,@(when redirections `("exec " ,@redirections " ; ")) ,@chdir ,normalized))
((os-windows-p) `(,@chdir @redirections ,normalized)))))))
((os-windows-p) `(,@chdir ,@redirections ,normalized)))))))
(defun %system (command &rest keys
&key input output error-output directory &allow-other-keys)
......
;;; -*- mode: lisp -*-
(in-package :asdf)
(unless (or (member :asdf3 *features*)
(and (member :asdf2 *features*) (version-satisfies (asdf:asdf-version) "2.11.4")))
#-asdf3
(unless (or #+asdf2 (version-satisfies (asdf:asdf-version) "2.11.4"))
(error "UIOP requires ASDF 2.011.4 or later."))
(defun call-without-redefinition-warnings (thunk)
......@@ -14,15 +14,20 @@
#'muffle-warning))
(funcall thunk)))
(defsystem :uiop
(defsystem "uiop"
#+asdf3 :long-name #+asdf3 "Utilities for Implementation- and OS- Portability"
:description "Portability library for Common Lisp programs"
:long-description "UIOP provides runtime support for Common Lisp programs:
Basic general-purpose utilities that are in such a need that you can't portably construct a
complete program without using some of them. UIOP replaces ASDF/DRIVER and ASDF-UTILS, and offers a
superset of the functionality provided by CL-FAD, EXTERNAL-PROGRAM, TRIVIAL-SHELL, TRIVIAL-BACKTRACE
and a lot of the functionality formerly provided by CL-LAUNCH, XCVB-DRIVER, TRIVIAL-FEATURES,
plus a tiny subset of functionality from ALEXANDRIA and FARE-UTILS.
It is transcluded into asdf.lisp together with ASDF/DEFSYSTEM, so if you did (require \"asdf\")
you already have a matching UIOP loaded."
:author "Francois-Rene Rideau"
:licence "MIT"
:class #.(if (find-class 'package-system nil) 'package-system 'system)
#+asdf3 :long-name #+asdf3 "Utilities for Implementation- and OS- Portability"
:description "Runtime support for Common Lisp programs"
:long-description "Basic general-purpose utilities that are in such a need
that you can't portably construct a complete program without using them.
UIOP is also known as ASDF/DRIVER or ASDF-UTILS,
being transcluded into asdf.lisp together with ASDF/DEFSYSTEM."
#+asdf3 :version #+asdf3 (:read-file-form "version.lisp-expr")
#+asdf-unicode :encoding #+asdf-unicode :utf-8
#+asdf3 :around-compile #+asdf3 call-without-redefinition-warnings
......
......@@ -195,15 +195,24 @@ Returns two values: \(A B C\) and \(1 2 3\)."
;;; Characters
(with-upgradability () ;; base-char != character on ECL, LW, SBCL, Genera. LW also has SIMPLE-CHAR.
(defconstant +non-base-chars-exist-p+ #.(not (subtypep 'character 'base-char)))
#-scl ;; In SCL, all characters seem to be 16-bit base-char, but this flag gets set somehow???
(when +non-base-chars-exist-p+ (pushnew :non-base-chars-exist-p *features*)))
(with-upgradability ()
;; base-char != character on ECL, LW, SBCL, Genera.
;; NB: We assume a total order on character types.
;; If that's not true... this code will need to be updated.
(defparameter +character-types+ ;; assuming a simple hierarchy
#(#+non-base-chars-exist-p base-char #+lispworks lw:simple-char character))
(defparameter +max-character-type-index+ (1- (length +character-types+))))
#.(coerce (loop* :for (type next) :on
'(;; In SCL, all characters seem to be 16-bit base-char
;; Yet somehow character fails to be a subtype of base-char
#-scl base-char
;; LW6 has BASE-CHAR < SIMPLE-CHAR < CHARACTER
;; LW7 has BASE-CHAR < BMP-CHAR < SIMPLE-CHAR = CHARACTER
#+lispworks7 lw:bmp-char #+lispworks lw:simple-char
character)
:unless (and next (subtypep next type))
:collect type) 'vector))
(defparameter +max-character-type-index+ (1- (length +character-types+)))
(defconstant +non-base-chars-exist-p+ (plusp +max-character-type-index+))
(when +non-base-chars-exist-p+ (pushnew :non-base-chars-exist-p *features*)))
(with-upgradability ()
(defun character-type-index (x)
......@@ -215,7 +224,7 @@ Returns two values: \(A B C\) and \(1 2 3\)."
(symbol (if (subtypep x 'base-char) 0 1))))
(otherwise
'(or (position-if (etypecase x
(character #'(lambda (type) (typep x type)))
(character #'(lambda (type) (typep x type)))
(symbol #'(lambda (type) (subtypep x type))))
+character-types+)
(error "Not a character or character type: ~S" x))))))
......@@ -234,14 +243,20 @@ Returns two values: \(A B C\) and \(1 2 3\)."
#.(if +non-base-chars-exist-p+
`(aref +character-types+
(loop :with index = 0 :for s :in strings :do
(cond
((= index ,+max-character-type-index+) (return index))
((emptyp s)) ;; NIL or empty string
((characterp s) (setf index (max index (character-type-index s))))
((stringp s) (unless (>= index (character-type-index (array-element-type s)))
(setf index (reduce 'max s :key #'character-type-index
:initial-value index))))
(t (error "Invalid string designator ~S for ~S" s 'strings-common-element-type)))
(flet ((consider (i)
(cond ((= i ,+max-character-type-index+) (return i))
,@(when (> +max-character-type-index+ 1) `(((> i index) (setf index i)))))))
(cond
((emptyp s)) ;; NIL or empty string
((characterp s) (consider (character-type-index s)))
((stringp s) (let ((string-type-index
(character-type-index (array-element-type s))))
(unless (>= index string-type-index)
(loop :for c :across s :for i = (character-type-index c)
:do (consider i)
,@(when (> +max-character-type-index+ 1)
`((when (= i string-type-index) (return))))))))
(t (error "Invalid string designator ~S for ~S" s 'strings-common-element-type))))
:finally (return index)))
''character))
......
......@@ -67,7 +67,7 @@ previously-loaded version of ASDF."
;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
(asdf-version "3.1.4.13")
(asdf-version "3.1.4.15")
(existing-version (asdf-version)))
(setf *asdf-version* asdf-version)
(when (and existing-version (not (equal asdf-version existing-version)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment