#150: MAKE-PATHNAME ignores version in :DEFAULTS ----------------------+----------------------------------------------------- Reporter: mevenson | Owner: nobody Type: defect | Status: new Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Keywords: pathname | ----------------------+----------------------------------------------------- [http://article.gmane.org/gmane.lisp.armedbear.devel/1915 Faré reports]: {{{ (defparameter *wild-file* (make-pathname :name :wild :type :wild :version :wild :directory nil))
(describe *wild-file*) (describe (make-pathname :defaults *wild-file*)) }}}
which shows that MAKE-PATHNAME ignores the VERSION of the defaults.
#150: MAKE-PATHNAME ignores version in :DEFAULTS ---------------------------+------------------------------------------------ Reporter: mevenson | Owner: nobody Type: defect | Status: new Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Keywords: pathname asdf | ---------------------------+------------------------------------------------ Changes (by mevenson):
* keywords: pathname => pathname asdf
#150: MAKE-PATHNAME ignores version in :DEFAULTS ---------------------------+------------------------------------------------ Reporter: mevenson | Owner: nobody Type: defect | Status: new Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Keywords: pathname asdf | ---------------------------+------------------------------------------------
Comment(by mevenson):
The patch exposes further problems in how ABCL deals with wild pathname components when ASDF tries to load and compile systems.
r13289 fixes problems with ENSURE-DIRECTORIES-EXIST but there are further problems with ASDF.
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: nobody Type: defect | Status: closed Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: fixed | Keywords: pathname asdf -----------------------+---------------------------------------------------- Changes (by mevenson):
* status: new => closed * resolution: => fixed
Comment:
r13290 and r13291 fixed further issues in ABCL's use of Pathname version.
r13294 patched the root cause.
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: nobody Type: defect | Status: reopened Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: | Keywords: pathname asdf -----------------------+---------------------------------------------------- Changes (by mevenson):
* status: closed => reopened * resolution: fixed =>
Comment:
A little too optimistic
MERGE-PATHNAMES.6 OPEN.ERROR.17
are failing in the ANSI-COMPILED tests.
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: nobody Type: defect | Status: reopened Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: | Keywords: pathname asdf -----------------------+----------------------------------------------------
Comment(by mevenson):
With r13296 and r13295, the MERGE-PATHNAMES.* ANSI tests now pass.
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: mevenson Type: defect | Status: assigned Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: | Keywords: pathname asdf -----------------------+---------------------------------------------------- Changes (by mevenson):
* owner: nobody => mevenson * status: reopened => assigned
Comment:
The (the only reason?) why ABCL was sort of working with systems like ASDF even though it had broken usage of the VERSION component was that the Pathname copy constructor always set it to NIL. This constructor is used internally by routines such as MERGE-PATHNAME to avoid sharing structure between its arguments and its results.
The following patch fixes the copy constructor while breaking ASDF loading again. I'm working on figuring out a single patch to fix the failures holistically rather than destabilizing trunk.
{{{ diff -r c51a8602a9c8 src/org/armedbear/lisp/Pathname.java --- a/src/org/armedbear/lisp/Pathname.java Wed May 25 14:32:16 2011 +0000 +++ b/src/org/armedbear/lisp/Pathname.java Fri May 27 07:52:21 2011 +0200 @@ -168,6 +168,15 @@ Debug.assertTrue(false); } } + if (p.version != NIL) { + if (p.version instanceof Symbol) { + version = p.version; + } else if (p.version instanceof LispInteger) { + version = p.version; + } else { + Debug.assertTrue(false); + } + } }
public Pathname(String s) { }}}
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: mevenson Type: defect | Status: closed Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: fixed | Keywords: pathname asdf -----------------------+---------------------------------------------------- Changes (by mevenson):
* status: assigned => closed * resolution: => fixed
Comment:
r13300 and r13302 (hopefully) establish the correct ANSI behavior.
The newly failing ANSI tests now pass.
#150: MAKE-PATHNAME ignores version in :DEFAULTS -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: mevenson Type: defect | Status: closed Priority: minor | Milestone: 0.26 Component: java | Version: 0.24 Resolution: fixed | Keywords: pathname asdf -----------------------+----------------------------------------------------
Comment(by mevenson):
(In [13294]) Fix #150: MAKE-PATHNAME ignores version in :DEFAULTS.
armedbear-ticket@common-lisp.net