Differences Between ECL Executable and Embedded ECL

Binh Nguyen nguyen1024 at gmail.com
Fri Mar 24 14:36:13 UTC 2023


I've been working with MinGW for quite some time and I've sensed the
unholiness as well.

Thank you for showing me how to ship specific modules with ECL!

Best regards,

Binh Nguyen


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

> It seems that for mingw we do some unholy mashup between posix and window
> -specific options, that is we do a flat structure instead of a tree
> (/usr/loca/bin etc). In that case you are expected to ship all your modules
> in the same directory as the application (quite like with dll files when
> they are shipped with a program).
>
> Regarding shipping particular modules with ECL
> ./configure --with-asdf=builtin --with-tcp-sockets=builtin
> should do the trick.
>
> 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 Thursday, March 23rd, 2023 at 12:11 PM, Binh Nguyen <
> nguyen1024 at gmail.com> wrote:
>
> 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/20230325/cfb5446b/attachment-0001.html>


More information about the ecl-devel mailing list