Hi, ECL community
I met some problems when compiling usocket on ECL 9.4.0, below is the error outputs:
============= ;;; gcc -g -O2 -fPIC -fno-common -D_THREAD_SAFE -Ddarwin -O "-I/ Users/binghe/include/" -w -c "/private/var/folders/3x/ 3xMxiHaQGSqRfjv9Z200B++++TI/-Tmp-/ECLINIThcmJG7.c" -o "/private/var/ folders/3x/3xMxiHaQGSqRfjv9Z200B++++TI/-Tmp-/ECLINIThcmJG7.o" ;;; Note: Invoking external command: Undefined symbols: "_cl_alloc_atomic", referenced from: _L2fdset_alloc in sbcl.o _L7get_host_name in sbcl.o ld: symbol(s) not found collect2: ld returned 1 exit status (SYSTEM "gcc -o "/Volumes/User/Lisp/usocket/trunk/backend/sbcl.fas" - L"/Users/binghe/lib/" "/private/var/folders/3x/3xMxiHaQGSqRfjv9Z200B ++++TI/-Tmp-/ECLINIThcmJG7.o" "/Volumes/User/Lisp/usocket/trunk/ backend/sbcl.o" -bundle -lecl -lpthread -lm ") returned non- zero value 1 ;;; gcc -o "/Volumes/User/Lisp/usocket/trunk/backend/sbcl.fas" -L"/ Users/binghe/lib/" "/private/var/folders/3x/3xMxiHaQGSqRfjv9Z200B+++ +TI/-Tmp-/ECLINIThcmJG7.o" "/Volumes/User/Lisp/usocket/trunk/backend/ sbcl.o" -bundle -lecl -lpthread -lm Broken at SI:BYTECODES.Available restarts: 1. (CONTINUE) Continues anyway. 2. (TRY-RECOMPILING) Try recompiling sbcl 3. (RETRY) Retry performing #<ASDF:COMPILE-OP NIL 29930936> on #<ASDF:CL-SOURCE-FILE "sbcl" "usocket" 29830384>. 4. (ACCEPT) Continue, treating #<ASDF:COMPILE-OP NIL 29930936> on #<ASDF:CL-SOURCE-FILE "sbcl" "usocket" 29830384> as having been successful. =============
I think following code in usocket break above build:
(defun fdset-alloc () (ffi:c-inline () () :pointer-void "cl_alloc_atomic(sizeof(fd_set))" :one-liner t))
It seems that the function "cl_alloc_atomic" doesn't exist anymore.
1. What should we (usocket) do instead in ECL 9.4.0? 2. Is there anyway to detect the exist of "cl_alloc_atomic" in any ECL versions? (ECL doesn't put any version information in CL *features*, and we (usocket) want to support more ECL versions as many as possible)
Regards,
Chun Tian (binghe)
On Sat, Apr 4, 2009 at 8:50 AM, Chun Tian (binghe) binghe.lisp@gmail.com wrote:
Hi, ECL community
I met some problems when compiling usocket on ECL 9.4.0, below is the error outputs:
This is a typo in usockets which I think I reported some time ago. The name of several functions is being changed to have prefix ecl_ (internal functions), cl_ (Common Lisp Standard) or si_ (internal lisp functions). In particular, cl_alloc_atomic is called (See ecl/src/h/external.h) extern ECL_API void *ecl_alloc_atomic(cl_index n);
Feel free to change the name of the function in your copy of usockets.
Juanjo
Hi, Juanjo
Thank you very much!
I'm on the latest usocket trunk, and it seems that both our trunk and 0.4.x branch haven't done this typo fix. I'll commit this change.
--binghe
On 2009-4-4, at 18:32, Juan Jose Garcia-Ripoll wrote:
On Sat, Apr 4, 2009 at 8:50 AM, Chun Tian (binghe) binghe.lisp@gmail.com wrote:
Hi, ECL community
I met some problems when compiling usocket on ECL 9.4.0, below is the error outputs:
This is a typo in usockets which I think I reported some time ago. The name of several functions is being changed to have prefix ecl_ (internal functions), cl_ (Common Lisp Standard) or si_ (internal lisp functions). In particular, cl_alloc_atomic is called (See ecl/src/h/external.h) extern ECL_API void *ecl_alloc_atomic(cl_index n);
Feel free to change the name of the function in your copy of usockets.
Juanjo
-- Instituto de Física Fundamental, CSIC c/ Serrano, 113b, Madrid 28009 (Spain) http://juanjose.garciaripoll.googlepages.com