[Ecls-list] map iterator

Juan Jose Garcia Ripoll lisp at arrakis.es
Fri Nov 11 01:25:00 UTC 2005


On Fri, 2005-11-11 at 17:20 +1100, Dean O'Connor wrote:
> Firstly, the enumerations work great. Thx heaps.
> But there were issues installing it (under Windows at least) using 
> mk:load-system tho.
> 
> I run ecl2 from msvc directory.
> I can load defsystem ok:
> 
>  > (load "../contrib/defsystem/defsystem")
> ;;; Loading #P"../contrib/defsystem/defsystem.lisp"
> ;;; Loading #P"C:/projects/lisp/ecls/msvc/cmp.fas"
> ;;; Loading #P"C:/projects/lisp/ecls/msvc/sysfun.lsp"
> #P"../contrib/defsystem/defsystem.lisp"
>  >
> 
> I have put the enumeration dir in the msvc directory.
> Then I try (mp:load-system "enumerations")
> I get a popup modal window with this error message (only on the very 
> first attempt tho):
> 
> "The application or DLL 
> C:\projects\lisp\elcs\msvc\enumerations\enumerations.system is not a 
> valid Windows image. Please check this against your installation diskette"

The problem is that lisp FASL files can have any name. A lisp
implementation must thus first try to load a file as binary and if this
fails, load it as source. This mechanism is not required for specific
file types ("lsp", "fas", "lisp"...) hence you only see the problem with
*.system files.

Now, under linux it is enough to try a dlopen() and it will check
whether the file format is correct. We do not need to do some magic file
type recognition. The operating system will complain if the file is not
a binary, but it will not disturb the user with popups.

It seems, from what you say, that this is not the right solution for
Windows: loading enumeration.system fails and the system does not
recover itself.

A quick solution is doing
	(push (cons "system" #'si::load-source) si::*load-hooks*)
which identifies the right type of file extension.

Regards,

	Juanjo






More information about the ecl-devel mailing list