Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#150 closed defect (fixed)

MAKE-PATHNAME ignores version in :DEFAULTS

Reported by: Mark Evenson Owned by: Mark Evenson
Priority: minor Milestone: 0.26
Component: java Version: 0.24
Keywords: pathname asdf Cc:
Parent Tickets:

Description

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.

Attachments (1)

abcl-make-pathname-version.diff (2.4 KB) - added by Mark Evenson 10 years ago.
Patch to fix root cause of #150

Download all attachments as: .zip

Change History (9)

comment:1 Changed 10 years ago by Mark Evenson

Keywords: asdf added

Changed 10 years ago by Mark Evenson

Patch to fix root cause of #150

comment:2 Changed 10 years ago by Mark Evenson

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.

comment:3 Changed 10 years ago by Mark Evenson

Resolution: fixed
Status: newclosed

r13290 and r13291 fixed further issues in ABCL's use of Pathname version.

r13294 patched the root cause.

comment:4 Changed 10 years ago by Mark Evenson

Resolution: fixed
Status: closedreopened

A little too optimistic

MERGE-PATHNAMES.6
OPEN.ERROR.17

are failing in the ANSI-COMPILED tests.

comment:5 Changed 10 years ago by Mark Evenson

With r13296 and r13295, the MERGE-PATHNAMES.* ANSI tests now pass.

comment:6 Changed 10 years ago by Mark Evenson

Owner: changed from nobody to Mark Evenson
Status: reopenedassigned

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) {

comment:7 Changed 10 years ago by Mark Evenson

Resolution: fixed
Status: assignedclosed

r13300 and r13302 (hopefully) establish the correct ANSI behavior.

The newly failing ANSI tests now pass.

comment:8 Changed 10 years ago by Mark Evenson

(In [13294]) Fix #150: MAKE-PATHNAME ignores version in :DEFAULTS.

Note: See TracTickets for help on using tickets.