[Ecls-list] simple starts for newbies...

Teunis Peters teunis at wintersgift.com
Wed Aug 27 21:30:57 UTC 2008


Juan Jose Garcia-Ripoll wrote:
> Hi Teunis,
>
> let me answer some of your questions and correct some problems
>
>   
>> starting with alexandria, I build like so:  (no outside requirements,
>> http://common-lisp.net/project/alexandria/ )
>>     
>
> There are in total four packages you need: alexandria,
> trivial-features, babel, cffi. Download them and place them each one
> in its own directory. I assume you did so.
>
>   
>> echo "(require 'asdf) (asdf:make-build :alexandria :type :fasl
>> :monolithic nil)" | ecl
>> result:
>>  > Cannot find the external symbol MAKE-BUILD in #<"ASDF" package>.
>> Broken at EVAL.No restarts available.
>>     
>
> I am pretty sure that the previous line did not cause that error. You
> probably did the following
> echo "(progn (require 'asdf) (asdf:make-build :alexandria :type :fasl
> :monolithic nil))" | ecl
> Since the package ASDF is not loaded, then ASDF package is not to be found.
>
>   
progn is implied at the "root" level, usually.   Making the "progn" 
explicit still results in the same error.
ecl
 > (require 'asdf)
NIL
 > (asdf:make-build :alexandria :type :fasl :monolithic nil)
Cannot find the external symbol MAKE-BUILD in #<"ASDF" package>.
Broken at EVAL.No restarts available.
Broken at EVAL.

after some further exploration, it would seem that there's a component 
called 'common-lisp-controller' that installs itself and changes a bunch 
of paths - unfortunately not entirely properly.   (require 'asdf) is not 
actually finding the /usr/lib/ecl/asdf.fas properly.
I'm not actually sure how to debug this properly....

the 'alexandria' component ended up compiled to:
/var/cache/common-lisp-controller/..current UID.../ecl/local/..home 
directory and location.../alexandria/alexandria.fas

(from past experience with annoying security issues with public lists, 
my UID and home directory and layout have been edited out)
(this is still before trying your fixes)
>> try:
>> echo "(asdf:make-build :alexandria :type :fasl :monolithic nil)" | ecl \
>>    -load /usr/lib/ecl/asdf.fas
>> I then try something like:
>>  > (require 'alexandria)
>> Module error: Don't know how to REQUIRE ALEXANDRIA.
>> Broken at EVAL.No restarts available.
>> Broken at EVAL.
>>     
>
> This is becaus ASDF does not know where to find the required module. I
> know this sounds stupid, but since the current directory is not listed
> in the list  asdf::*central-registry*, then REQUIRE does not know
> where to find the module.
>
> A much simpler way is as follows. First copy the attached file and
> store it in your home directory, with the name ~/.ecl Then, initialize
> the list of ASDF system files by calling (update-asdf-systems),
> finally, require whatever packages you need
>
> What this file does is to store links to all the system files in a
> single, hidden directory, and tells ASDF where this directory is. From
> then on, when you REQUIRE a package, ASDF will find it and build the
> missing fasl files. Since we use ASDF:LOAD-FASL-OP instead of LOAD-OP,
> the binary files will be monolithic and take less space / memory.
>   
ok it -looks- like it should work well.    (I've changed it to match my 
paths of course).
however it looks like this exposes whatever the problem on my system is:

;;; Loading #P"/usr/lib/ecl/cmp.fas"
;;; Loading #P"/usr/lib/ecl/sysfun.lsp"
An error occurred during initialization:
Cannot find the external symbol LOAD-FASL-OP in #<"ASDF" package>..


now I'm going to try with the current git pool rather than the ubuntu 
standard and see if that fixes anything.
my configuration:
./configure     --host=i486-linux-gnu --build=i486-linux-gnu 
--target=i486-linux-gnu \
        --prefix=/usr --mandir=\${prefix}/share/man \
        --infodir=\${prefix}/share/info \
        --with-system-gmp=yes \
        --with-tcp \
        --with-clx  \
        --enable-threads=auto \
        --enable-boehm=system \
        --with-x \
        -- enable-unicode \
        --enable-longdouble \
        --enable-c99complex

note: it's the same as the ubuntu install, but with '--enable-longdouble 
--enable-c99complex' as I use those in my code.  I'm also very much 
missing long-long and may look into that soon, if I can figure out how.
(long-long is kind of needed for 64 bit file offsets amongst other 
things - when interacting with system)


that worked.   Good to know.   (alexandria, babel and trivial-features 
all worked fine)

well - except cffi.   Ubuntu's (20080217) and the current (0.10.1) - 
both fail with:
;;;   (NOTICE-FOREIGN-TYPE 'ULLONG (MAKE-INSTANCE 'FOREIGN-TYPEDEF NAME 
...))
;;; Too many arguments for generic function MAKE-INSTANCE
;;; :LONG-LONG is not a valid CFFI type
;;; Warning: COMPILE-FILE warned while performing #<ASDF:COMPILE-OP NIL 
139371264> on
#<ASDF:CL-SOURCE-FILE "types" "cffi" 139358928>.
;;; Warning: COMPILE-FILE failed while performing #<ASDF:COMPILE-OP NIL 
139371264> on
#<ASDF:CL-SOURCE-FILE "types" "cffi" 139358928>.
erred while invoking #<ASDF:COMPILE-OP NIL 139371264> on 
#<ASDF:CL-SOURCE-FILE "types" "cffi" 139358928>
;;; The variable C::C is unbound.Broken at SI:BYTECODES.Available restarts:
1. (TRY-RECOMPILING) Try recompiling types
2. (RETRY) Retry performing #<ASDF:COMPILE-OP NIL 139371264> on 
#<ASDF:CL-SOURCE-FILE "types" "cffi" 139358928>.
3. (ACCEPT) Continue, treating #<ASDF:COMPILE-OP NIL 139371264> on 
#<ASDF:CL-SOURCE-FILE "types" "cffi" 139358928> as having been successful.
Broken at SI:BYTECODES.

(installing asdf-install worked fine.   (asdf-install:install 'cffi) 
core dumped.
from gdb ecl:
L6return_output_from_program (V1=0x9f256f0, V2=0x9dd2f09) at
(my home)/.asdf-binaries/ecl/asdf-install-0.6.10/port.c:95
95    (my home)/.asdf-binaries/ecl/asdf-install-0.6.10/port.c: No such 
file or directory.
    in (my home)/.asdf-binaries/ecl/asdf-install-0.6.10/port.c





More information about the ecl-devel mailing list