Differences Between ECL Executable and Embedded ECL

Binh Nguyen nguyen1024 at gmail.com
Thu Mar 23 11:11:07 UTC 2023


Hi Daniel,

_| ̄|○

Thank you for your reply!

Yep, I passed "--prefix=/usr/local/" to configure and then performed make
install afterwards, as per the notes on Autoconf based configurations.
(https://ecl.common-lisp.dev/static/manual/Building-ECL.html#Building-ECL)

I agree, I think there is something funny going on with my pathnames.

I compared the features variable and the list of packages in the ECL
executable and my program and they were the same. So I had a hunch there
something external was different. So I copied my executable to "/usr/local"
to be with "ecl.exe", and I was able to call (require 'asdf).

$ /usr/local/a.exe

...

> (require 'asdf)


> ;;; Loading #P"C:/msys64/usr/local/asdf.fas"

("ASDF" "asdf" "UIOP" "uiop")


When I my executable from my home directory, I was not able to call
(require 'asdf).

> (require 'asdf)


> Debugger received error of type: SIMPLE-ERROR

Module error: Don't know how to REQUIRE ASDF.

Error flushed.


I tried loading ASDF with the directory but I got the following error.

> (load #P"C:/msys64/usr/local/asdf.fas")


> ;;; Loading "C:/msys64/usr/local/asdf.fas"
> Debugger received error of type: FILE-ERROR
> Filesystem error with pathname "SYS:help.doc".
> Either
>  1) the file does not exist, or
>  2) we are not allowed to access the file, or
>  3) the pathname points to a broken symbolic link.
> Error flushed.


So I copied "/usr/local/help.doc" to my home directory and then I was able
to load ASDF.

> (load #P"C:/msys64/usr/local/asdf.fas")


> #P"C:/msys64/usr/local/asdf.fas"


After that, I was able to load SOCKETS ad Quicklisp.

I don't know how to specify that ASDF and SOCKETS are builtin but I'll look
into it.

Thank you for your help and thank you for all your work on ECL.

Best regards,

Binh Nguyen


On Thu, 23 Mar 2023 at 20:20, Daniel Kochmański <daniel at turtleware.eu>
wrote:

> Hey Binh,
>
> it is not that the function REQUIRE is not available, it is that it
> doesn't know /where/ to look for sockets.fas. I see that you have unix
> pathnames, so ecl should not expect the flat structure. Did you pass
> "--prefix=/usr/local/" to configure (or something in this spirit)? If so,
> did you perform make install afterwards? If so, then require should be able
> to find sockets.fas in /usr/local/lib/ecl/... , and if not - it can't find
> it. The same applies to the module "ASDF", so I think that having
> installation with known pathnames should fix all your issues on that front.
>
> Alternatively you may specify that ASDF and SOCKETS are builtin (see
> ./configure --help for details).
>
> As the last resort, if you want to push in the same direction you've
> already started - load ASDF.fas the same way you've loaded SOCKETS.fas (it
> should be in the same directory) - that will ensure ASDF 3.1.8.
>
> Best regards,
> Daniel
>
> --
> Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
> TurtleWare - Daniel Kochmański      | www.turtleware.eu
>
> "Be the change that you wish to see in the world." - Mahatma Gandhi
>
>
> ------- Original Message -------
> On Wednesday, March 22nd, 2023 at 1:55 PM, Binh Nguyen <
> nguyen1024 at gmail.com> wrote:
>
> Dear ECL Community,
>
> Could you let me know how to do the following, please?
>
> - How to load file "quicklisp.lisp" in an embedded instance of ECL
> - How to make the function REQUIRE available in an embedded instance of ECL
> - How to load ASDF 3 or newer in an embedded instance of ECL
>
> I am able to load file "quicklisp.lisp" when I run "/usr/local/ecl.exe".
>
> I saw that there is an "ecl-quicklisp.lisp" but I'd like to learn how to
> load non-ECL Quicklisp.
>
> I am running ECL 21.2.1. that I compiled with MSYS MinGW x86.
>
> The first error that comes up is that the function REQUIRE is not
> available.
>
> > (load "quicklisp.lisp")
>
>
>> ;;; Loading "C:/msys64/home/Admin/quicklisp.lisp"
>
> Debugger received error of type: SIMPLE-ERROR
>
> Module error: Don't know how to REQUIRE SOCKETS.
>
> Error flushed.
>
>
> So I manually loaded SOCKETS.
>
> > (load #P"C:/msys64/usr/local/sockets.fas")
>
>
>> ;;; Loading "C:/msys64/usr/local/sockets.fas"
>
> #P"C:/msys64/usr/local/sockets.fas"
>
>
> Then I tried again and I was able to progress further.
>
> > (load "quicklisp.lisp")
>
>
>> ;;; Loading "C:/msys64/home/Admin/quicklisp.lisp"
>
>
>> ==== quicklisp quickstart 2015-01-28 loaded ====
>
>
>> To continue with installation, evaluate: (quicklisp-quickstart:install)
>
>
>> For installation options, evaluate: (quicklisp-quickstart:help)
>
>
>> #P"C:/msys64/home/Admin/quicklisp.lisp"
>
> > (quicklisp-quickstart:install)
>
>
>> Debugger received error of type: SIMPLE-ERROR
>
> Quicklisp has already been installed. Load
>> #P"C:/msys64/home/Admin/quicklisp/setup.lisp" instead.
>
> Error flushed.
>
> Bu the following error appeared that I don't know how to solve.
>
> > (load #P"C:/msys64/home/Admin/quicklisp/setup.lisp")
>
>
>> ;;; Loading "C:/msys64/home/Admin/quicklisp/setup.lisp"
>
> Debugger received error of type: SIMPLE-ERROR
>
> Could not load ASDF "3.0" or newer
>
> Error flushed.
>
>
> I tried loading the other ".fas" files in "/usr/local" such as "asdf.fas"
> but that did not help.
>
> I checked the *features* variable in both versions but they were the same.
>
> $ ./a.exe
>
> ...
>
> Condition of type: INTERACTIVE-INTERRUPT
>
> Console interrupt.
>
> Available restarts:
>
>
>> 1. (CONTINUE) CONTINUE
>
> ...
>
> > (print-list *features*)
>> (WALKER ECL-BYTECMP CDR-1 CDR-5 FORMATTER CDR-7 WSOCK ECL-WEAK-HASH
>> LITTLE-ENDIAN LONG-LONG UINT64-T UINT32-T UINT16-T COMPLEX-FLOAT LONG-FLOAT
>> UNICODE DFFI CLOS-STREAMS CMU-FORMAT WINDOWS WIN32 MINGW32 ECL-PDE DLOPEN
>> CLOS THREADS BOEHM-GC ANSI-CL COMMON-LISP IEEE-FLOATING-POINT
>> PACKAGE-LOCAL-NICKNAMES CDR-14 PREFIXED-API FFI I686 COMMON ECL)
>>
>
> $ /usr/local/ecl.exe
>> ...
>> > (print-list *features*)
>> (WALKER ECL-BYTECMP CDR-1 CDR-5 FORMATTER CDR-7 WSOCK ECL-WEAK-HASH
>> LITTLE-ENDIAN LONG-LONG UINT64-T UINT32-T UINT16-T COMPLEX-FLOAT
>> LONG-FLOAT UNICODE DFFI CLOS-STREAMS CMU-FORMAT WINDOWS WIN32 MINGW32
>> ECL-PDE DLOPEN CLOS THREADS BOEHM-GC ANSI-CL COMMON-LISP
>> IEEE-FLOATING-POINT PACKAGE-LOCAL-NICKNAMES CDR-14 PREFIXED-API FFI I686
>> COMMON ECL)
>>
>
> Best regards,
>
> Binh Nguyen
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20230323/8e761c3b/attachment-0001.html>


More information about the ecl-devel mailing list