[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