On Wed, Oct 16, 2024 at 11:16:09AM +0800, Qian Yun wrote:
> Previous patch is not quite correct.
> 
> Since we can not rely on "truename" to distinguish file and directory,
> we have to use "ext:probe-directory".
> 
> I wonder why we didn't use it in the first place.

Original problem was that 'probe-file' signaled errors.  'truename'
+ 'ignore-errors' worked and was using only standard functions.
I am not sure if 'ext:probe-directory' existed at that time,
but various advice was to use what we used.  If 'ext:probe-directory'
exists in older 'clisp' (say around 2.40, later verisions are
harder to build), then we should use it.  Othwerwise to would be
nasty bargain: breaking older correct versions to support
later broken version.

> - Qian
> 
> 
> diff --git a/src/lisp/fricas-lisp.lisp b/src/lisp/fricas-lisp.lisp
> index 1c863854..6f5882f7 100644
> --- a/src/lisp/fricas-lisp.lisp
> +++ b/src/lisp/fricas-lisp.lisp
> @@ -789,9 +789,9 @@ with this hack and will try to convince the GCL crowd to
> fix this.
>                       -1))
>     #+:clisp (let* ((fname (|trim_directory_name| (namestring filename)))
>                     (dname (|pad_directory_name| fname)))
> -             (if (ignore-errors (truename dname))
> +             (if (ignore-errors (ext:probe-directory dname))
>                   1
> -                 (if (ignore-errors (truename fname))
> +                 (if (ignore-errors (probe-file fname))
>                       0
>                       -1)))
>     #+:abcl
> @@ -825,7 +825,8 @@ with this hack and will try to convince the GCL crowd to
> fix this.
> 
> 
>  (defun |fricas_probe_file| (file)
> -#+:GCL (let* ((fk (file_kind (namestring file)))
> +#+(or :GCL :clisp)
> +       (let* ((fk (|file_kind| (namestring file)))
>                (fname (|trim_directory_name| (namestring file)))
>                (dname (|pad_directory_name| fname)))
>             (cond
> @@ -837,10 +838,6 @@ with this hack and will try to convince the GCL crowd
> to fix this.
>  #+:cmu (if (unix:unix-file-kind file) (truename file))
>  #+:sbcl (if (sbcl-file-kind file) (truename file))
>  #+(or :abcl :ecl :lispworks :openmcl :poplog) (probe-file file)
> -#+:clisp(let* ((fname (|trim_directory_name| (namestring file)))
> -               (dname (|pad_directory_name| fname)))
> -                 (or (ignore-errors (truename dname))
> -                     (ignore-errors (truename fname))))
>           )
> 
>  #-:cmu
> 
> 
> On 10/16/24 9:56 AM, Qian Yun wrote:
> > OK, so you are using clisp-20210628 while I am using clisp-20180218.
> > 
> > Looks like this introduced a regression since 20171024:
> > https://gitlab.com/gnu-clisp/clisp/-/commit/
> > f64ebe7675907b2da58c80960ed7cb9b0ad954d9
> > 
> > namely, if a "/path/to/file" is a file, then
> > '(truename "/path/to/file/")' returns "/path/to/file/".
> > (although this "directory" path does not exist.)
> > 
> > In this fricas commit, in function "check_for_ext",
> > your new code uses "fricas_probe_file" (which uses 'truename')
> > while old code uses "probe-file", thus your code exposes this
> > clisp regression.
> > 
> > The clisp regression should be fixed in 20200612:
> > https://gitlab.com/gnu-clisp/clisp/-/
> > commit/71b0ef597fb6540fe3538a4f337510e9bf09d82a
> > 
> > So I propose the following workaround: test 'fname' before 'dname':
> > 
> > - Qian
> > 
> > diff --git a/src/lisp/fricas-lisp.lisp b/src/lisp/fricas-lisp.lisp
> > index 1c863854..d86f6970 100644
> > --- a/src/lisp/fricas-lisp.lisp
> > +++ b/src/lisp/fricas-lisp.lisp
> > @@ -789,10 +789,10 @@ with this hack and will try to convince the GCL
> > crowd to fix this.
> >                        -1))
> >      #+:clisp (let* ((fname (|trim_directory_name| (namestring filename)))
> >                      (dname (|pad_directory_name| fname)))
> > -             (if (ignore-errors (truename dname))
> > -                 1
> > -                 (if (ignore-errors (truename fname))
> > -                     0
> > +             (if (ignore-errors (truename fname))
> > +                 0
> > +                 (if (ignore-errors (truename dname))
> > +                     1
> >                        -1)))
> >      #+:abcl
> >          (if (ext:file-directory-p filename)
> > @@ -839,8 +839,8 @@ with this hack and will try to convince the GCL
> > crowd to fix this.
> >   #+(or :abcl :ecl :lispworks :openmcl :poplog) (probe-file file)
> >   #+:clisp(let* ((fname (|trim_directory_name| (namestring file)))
> >                  (dname (|pad_directory_name| fname)))
> > -                 (or (ignore-errors (truename dname))
> > -                     (ignore-errors (truename fname))))
> > +                 (or (ignore-errors (truename fname))
> > +                     (ignore-errors (truename dname))))
> >            )
> > 
> >   #-:cmu
> > 
> > 
> > On 10/16/24 5:34 AM, Waldek Hebisch wrote:
> > > On Tue, Oct 15, 2024 at 01:27:11PM +0800, Qian Yun wrote:
> > > > This commit b3949674 (Reimplement database handling in Boot code)
> > > > breaks build from source (not release tarball) with CLISP.
> > > > 
> > > >     >> System error:
> > > > 
> > > > OPEN: No file name given:
> > > > #P"/tmp/fricas/src/algebra/A1AGG.NRLIB/ index.KAF/"
> > > 
> > > This commit did have some bugs, but they should be fixed in the
> > > trunk.  I tried building current trunk with clisp and it worked
> > > fine.  I used Debian 12 and clisp coming with Debian.
> > > 
> > 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "FriCAS - computer algebra system" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/fricas-devel/8e552bad-cd34-47b0-8c40-c0b89c669440%40gmail.com.

-- 
                              Waldek Hebisch

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/ZxY5dboC13VyuJSy%40fricas.org.

Reply via email to