Raymond Toy writes:
> >>>>> "Pascal" == Pascal Bourguignon <[EMAIL PROTECTED]> writes:
>
> Pascal> * (setf path-ext (MAKE-PATHNAME :TYPE EXT :defaults path))
> Pascal> Warning: Declaring PATH-EXT special.
>
> Pascal> #.(logical-pathname
> "PACKAGES:COM;INFORMATIMAGO;COMMON-LISP;UTILITY.lisp")
> Pascal> * (probe-file *)
>
> Pascal> NIL
> Pascal> * (probe-file path-ext)
>
> [snip]
>
> Does this also happen in 19a or a recent snapshot? You didn't provide
> quite enough information above (what is path? What is EXT?) for me to
> reproduce anything, but a very simple test shows that path-ext is
> #P"PACKAGES:COM;INFORMATIMAGO;COMMON-LISP;UTILITY.LISP"
Ok, I'm trying to make it a small test case, and I find another bug.
The old bug doesn't occur in cmucl-19b, but the new bug does in both
19b and 18e.
bug-1 bug-2
cmucl-18e: X X
cmucl-19b: corrected X
$ cmucl-pathnames-bug.lisp
;;----------------------------------------------------------------------
(ensure-directories-exist #P"/tmp/pack/")
(close (open #P"/tmp/pack/utility.lisp"
:direction :output :if-exists :append :if-does-not-exist :create))
(defmacro trint (obj &optional (stream *standard-output*))
(let ((vobj (gensym)) (vstream (gensym)))
`(let ((,vobj ,obj) (,vstream ,stream))
(print ',vobj ,vstream)
(finish-output ,vstream)
(print ,vobj ,vstream)
(terpri)
(finish-output ,vstream))))
(setf (logical-pathname-translations "PACKAGES")
(list (list "PACKAGES:**;*.*.*" #P"/tmp/pack/**/*.*.*")
(list "PACKAGES:**;*.*" #P"/tmp/pack/**/*.*")
(list "PACKAGES:**;*" #P"/tmp/pack/**/*")))
(defparameter path "PACKAGES:UTILITY.x86f")
(defparameter ext "lisp")
(defparameter path-ext nil)
;;MARK
(setf path-ext (MAKE-PATHNAME :TYPE EXT :defaults path))
(trint (probe-file *))
(trint (probe-file path-ext))
(trint (probe-file (logical-pathname "PACKAGES:UTILITY.lisp")))
(trint (probe-file (logical-pathname "PACKAGES:UTILITY.LISP")))
;;----------------------------------------------------------------------
$ /usr/local/bin/cmucl -noinit -nositeinit
CMU Common Lisp 18e-pre2 2003-03-25-003, running on thalassa
With core: /local/languages/cmucl-18e/lib/cmucl/lib/lisp.core
Dumped on: Wed, 2003-03-26 00:53:00+01:00 on orion
See <http://www.cons.org/cmucl/> for support information.
Loaded subsystems:
Python 1.1, target Intel x86
CLOS 18e (based on PCL September 16 92 PCL (f))
* (load"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp")
; Loading #p"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
NIL is not of type (OR PATHNAME STREAM BASE-STRING)
Restarts:
0: [CONTINUE] Return NIL from load of
"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
1: [ABORT ] Return to Top-Level.
Debug (type H for help)
(PROBE-FILE 1 NIL)[:EXTERNAL]
Source: Error finding source:
Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists:
target:code/filesys.lisp.
0] backtrace
0: (PROBE-FILE 1 NIL)[:EXTERNAL]
1: ("Top-Level Form")[:TOP-LEVEL]
2: (COMMON-LISP::SLOLOAD
#<Stream for file
"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp">)
3: (COMMON-LISP::INTERNAL-LOAD
#p"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
#p"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:ERROR
:SOURCE)
4: (COMMON-LISP::INTERNAL-LOAD
#p"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
#p"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:ERROR
NIL)
5: (LOAD "/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:VERBOSE
NIL
:PRINT
...)
6: (INTERACTIVE-EVAL
(LOAD "/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"))
7: (COMMON-LISP::%TOP-LEVEL)
8: (COMMON-LISP::RESTART-LISP)
0] path-ext
#.(logical-pathname "PACKAGES:UTILITY.lisp")
0] (type-of path-ext)
LOGICAL-PATHNAME
0] :q
;; this was the stranger part: logical-pathnames are not accepted by probe-file
;; Now, I comment out from MARK to the end of the file and reload;
* (load"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp")
; Loading #p"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
T
* (setf path-ext (MAKE-PATHNAME :TYPE EXT :defaults path))
#.(logical-pathname "PACKAGES:UTILITY.lisp")
* (probe-file *)
NIL
* (probe-file path-ext)
NIL
* path-ext
#.(logical-pathname "PACKAGES:UTILITY.lisp")
* (probe-file (logical-pathname "PACKAGES:UTILITY.lisp"))
#p"/tmp/pack/utility.lisp"
* (probe-file (logical-pathname "PACKAGES:UTILITY.LISP"))
#p"/tmp/pack/utility.lisp"
*
;; and here we have the bug I noticed in August.
;; In cmucl-19b, the bug I noticied in August in cmucl-18e doesn't
;; occur, but the new bug I found now does:
bin/cmucl -noinit -nositeinit
CMU Common Lisp 19b (19B), running on thalassa
With core: /local/languages/cmucl-19b-install/lib/cmucl/lib/lisp.core
Dumped on: Tue, 2005-06-28 02:09:58+02:00 on lorien
See <http://www.cons.org/cmucl/> for support information.
Loaded subsystems:
Python 1.1, target Intel x86
CLOS based on Gerd's PCL 2004/04/14 03:32:47
* (load"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp")
; Loading #P"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
NIL is not of type (OR BASE-STRING PATHNAME STREAM)
[Condition of type TYPE-ERROR]
Restarts:
0: [CONTINUE] Return NIL from load of
"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
1: [ABORT ] Return to Top-Level.
Debug (type H for help)
(PROBE-FILE 1 NIL)[:EXTERNAL]
Source: Error finding source:
Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists:
target:code/filesys.lisp.
0] backtrace
0: (PROBE-FILE 1 NIL)[:EXTERNAL]
1: ("Top-Level Form")[:TOP-LEVEL]
2: (LISP::SLOLOAD
#<Stream for file
"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp">)
3: (LISP::INTERNAL-LOAD #P"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
#P"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:ERROR :SOURCE)
4: (LISP::INTERNAL-LOAD #P"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
#P"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:ERROR NIL)
5: (LOAD "/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"
:VERBOSE NIL
:PRINT ...)
6: (INTERACTIVE-EVAL
(LOAD "/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp"))
7: (LISP::%TOP-LEVEL)
8: ((LABELS LISP::RESTART-LISP
SAVE-LISP))
0] path-ext
#P"PACKAGES:UTILITY.LISP"
0] :q
* (load"/home/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp")
; Loading #P"/local/users/pjb/src/lisp/encours/cmucl-pathnames-bug.lisp".
T
* (setf path-ext (MAKE-PATHNAME :TYPE EXT :defaults path))
#P"PACKAGES:UTILITY.LISP"
* (probe-file *)
#P"/tmp/pack/utility.lisp"
* (probe-file path-ext)
#P"/tmp/pack/utility.lisp"
* (probe-file (logical-pathname "PACKAGES:UTILITY.lisp"))
#P"/tmp/pack/utility.lisp"
* (probe-file (logical-pathname "PACKAGES:UTILITY.LISP"))
#P"/tmp/pack/utility.lisp"
*
--
__Pascal Bourguignon__ http://www.informatimago.com/
I need a new toy.
Tail of black dog keeps good time.
Pounce! Good dog! Good dog!