Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
937 views
in Technique[技术] by (71.8m points)

common lisp - ASDF on Windows 7 cannot load the ASD file using CLISP or SBCL

On my Windows 7 CLISP 2.49 and SBCL-1.4.14 are installed and they work perfectly. ASDF 3.3.1 is loaded by the these lines on .sbclrc or .clisprc

(load "C:\Users\mayhem\lisp\asdf\asdf.lisp")
(require :asdf)
(push "C:\Users\mayhem\lisp\systems\" asdf:*central-registry*)

I'd like to load and use the iterate package/library using ASDF (not QuickLisp) so I've installed the iterate into C:Usersmayhemlispiterate and on CMD.exe

> cd C:Usersmayhemlispsystems
> junction.exe iterate.asd C:Usersmayhemlispiterateiterate.asd

If I (require 'iterate) whether on REPL or in a file, I get

CLISP: *** - LOAD: A file with name ITERATE does not exist

SBCL:  ASDF could not load iterate because Error while trying to load definition for system iterate from pathname C:/Users/mayhem/lisp/systems/iterate.asd/: error opening #P"C:/Users/mayhem/lisp/systems/iterate.asd/": Access denied..
While evaluating the form starting at line 1, column 0
  of #P"C:/Users/mayhem/lisp/defsystem.lisp":

If I try to load the iterate.asd directly then I get EVAL: undefined function DEFSYSTEM

How to fix the problem?

Update 1: I've added (push "C:\Users\mayhem\lisp\iterate\" asdf:*central-registry*) into .sbclrc. That is, I did the loading of iterate.asd without relying on soft links. When I entered (require 'iterate) on REPL it gave:

(require 'iterate)
ASDF could not load iterate because
Uneven number of components in source to destination mapping: "C:/".
....
(ASDF/OUTPUT-TRANSLATIONS:PARSE-OUTPUT-TRANSLATIONS-STRING "C:/" :LOCATION NIL)
   source: (ERROR
            (COMPATFMT
             "~@<Uneven number of components in source to destination mapping: ~3i~_~S~@:>")
            STRING)

I've added the same line to .clisprc and CLISP gave: *** - LOAD: A file with name ITERATE does not exist

Update 2: I've tried the setup above on Windows XP (i.e. by adding (push "C:\Documents and Settings\mayhem\lisp\iterate\" asdf:*central-registry*) to CLISP init file and without using the junctioned/soft linked ASD files) and it did work! So the problem is limited to Windows 7. I've just learnt that the ASDF don't play well with the Windows soft links. Reference)

question from:https://stackoverflow.com/questions/66061146/asdf-on-windows-7-cannot-load-the-asd-file-using-clisp-or-sbcl

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...