make-pathname* and Allegro

Kevin Layer layer at franz.com
Tue Nov 17 18:11:44 UTC 2015


We were debugging some problems with an internal system and happened
to run across this:

  (defun make-pathname* (&rest keys &key (directory nil)
                                      host (device () #+allegro devicep) name type version defaults
                                      #+scl &allow-other-keys)
    "Takes arguments like CL:MAKE-PATHNAME in the CLHS, and
   tries hard to make a pathname that will actually behave as documented,
   despite the peculiarities of each implementation"
    ;; TODO: reimplement defaulting for MCL, whereby an explicit NIL should override the defaults.
    (declare (ignorable host device directory name type version defaults))
    (apply 'make-pathname
           (append
            #+allegro (when (and devicep (null device)) `(:device :unspecific))
            keys)))

which is kind of curious, adding :device :unspecific only for
Allegro.  Tracking it down to see if there were comments in the commit
that added the change yielded nothing:

commit 1e4bafdbd4200d3a19722699d6a332316b082b2b
Author: Francois-Rene Rideau <tunes at google.com>
Date:   Wed Feb 6 04:23:13 2013 +0100

    2.28.1: various upgrade issues
    
    1- To make life easier on Xach, stop requiring asdf.lisp to be loaded as source
    before it's compiled. Instead, wrap each and every single form in an eval-when,
    most of the time via the with-upgradability macro that also transforms
    defun into defun* and defgeneric into defgeneric*.
    Causes massive reindentation :-(
    
    2- Have a proper :version for fallback systems.
    Will make systems that check the version happier.
    
    3- protect a condition with #+sb-eval. Fixes lp#1116408.
    
    4- Protect warnings-file methods with dynamic when *warnings-file-type*
    rather than static #+.


Does anyone know why this change was made and what problem it fixed?

Thanks.

Kevin



More information about the asdf-devel mailing list