axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Re: directory/truename transition


From: Waldek Hebisch
Subject: [Axiom-developer] Re: directory/truename transition
Date: Wed, 4 Jul 2007 04:12:03 +0200 (CEST)

> Greetings!
> 
> I am prepared to backport the clisp-style directory/truename behavior,
> but this breaks current axiom, and I do not want to leave the project
> even temporarily without a gcl to build it.  Please advise.  
> 
> 2.7.0 (with the commits to go in shortly) appears to build wh-sandbox
>     save for this issue.
> 

wh-sandbox builds using clisp.  We need 21 clisp specific conditionals.
9 of those conditionals is due to file and directory handling.  In some
cases current code uses gcl specific method that will work regardless of
the change, but in some cases gcl specific section will need update. So
one can estimate that change in gcl will require about between 10 to 60
lines of extra code (extra conditionals + code to handle extra case).

I belive that truename change affects only one place in wh-sandbox,
namely the 'axiom-probe-file' function in 'src/lisp/axiom-lisp.lisp.pamphlet'.
clisp variant needs 4 lines of code + 1 line for conditional, but
since different gcl versions work differently, gcl will probably
need 6-8 lines of extra code here.

Directory change also is problematic: in 'src/interp/daase.lisp.pamphlet'
in the function 'localdatabase' we need list of files matching
'*.NRLIB/index.KAF'.  With all other Lisps we just use this pattern.
But gcl on Windows cannot handle it.  So we use '*.NRLIB' and
append '/index.KAF' using string concatenation.  We will have to
change this to '*.NRLIB/' for the new version (which is trivial)
and add proper conditional.  How complex test is need will depend
on gcl -- in the worst case we will have to run a test program
from configure and propagate results to the Lisp, which will
take probably about 20 lines of code. 

Important thing is that clisp file handling can loose some functionality
-- currently I do not know how to rename directory using clisp
(apparently clisp 'rename-file' does not work on directories).
Similarly, I do not not how to delete empty directory using clisp.

Another question is how to detect which version of functions is
present -- the old one or the new one.  Note that for testing we
want Axiom sources to work with different gcl versions, so we
need automatic way to choose correct variant.

I would suggest that gcl _first_ adds nonstandard functions that
implement Posix style file handling and only later changes Ansi Lisp
functions to clisp semantic.  That way users that want Posix
semantics can use Posix functions if presesnt and otherwise be assured
that they get old gcl semantics (which is closer to Posix than the
clisp way) from standard Lisp functions.

Some functions were added to gcl, but I am affraid that some
functions that Axiom needs are still missing.  Let me try to
enumerate functions that Axiom uses:

change directory
make directory (done via C)
get current directory name
get absolute name of a directory
delete file or directory
rename file or directory
find all files matching pattern "*.NRLIB/index.KAF"
recursively copy directory with content (currently invokes the 'cp' program)
copy file (likewise)


-- 
                              Waldek Hebisch
address@hidden 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]