[cells-gtk-devel] "First steps" how to compile problem - fixed

Peter Hildebrandt peter.hildebrandt at gmail.com
Sat Feb 2 12:23:17 UTC 2008



Bob Willan wrote:
> Peter and Friedrich,
> 
> Thanks to both of you for your help.  It was the older version of SBCL 
> that was the problem.  I've got a working demo now, too cool.

Glad to hear it worked for you now.  I added a paragraph to the guide 
about installing a recent sbcl.

> Peter, you might mention on your Getting Started page that (require :asdf) 
> might be needed before anything else.  The Debian pkg was setup so I 
> didn't need to do that, but the sbcl 1.0.12 compiled tar I downloaded 
> did - I received a "Don't know how to REQUIRE CELLS." error without it 
> when I typed (require 'cells).  I suppose maybe I should add that to a 
> sbclrc initialization file so its always there?

Yep, exactly.  Thanks for pointing that out.  I added to the guide how 
to include (require 'asdf) (require 'asdf-install) in your .sbclrc.

I also created a section warning potential users that it might be 
difficult ;-)

> Maybe I'll think about moving up to Debian Unstable (except the kernel, 
> because my VMWare Workstation won't work correctly with the latest 
> kernels - my only commercial license and its the only software I have 
> problems with that I can't get around or fix!)

A great testimony to open source :)  Maybe you should check out qemu. 
It is a little harder to set up than VMWare, but does a pretty good job 
these days.  Rumour has it you can even run OSX 10.5 Tiger in there.

Cheers,
Peter

> Thanks, again,
>   Bob
> 
> ===================================
> On Friday 01 February 2008, Peter Hildebrandt wrote:
>> Hi Bob,
>>
>> Bob Willan wrote:
>>> I've been thinking about getting into Lisp and Cells for a while, and 
> your 
>>> how-to prompted me to give it a try now.  Not to mention all the work 
>>> you've been doing, making cells-gtk look like more of a going concern 
>>> now.  Thanks for that.
>> Thanks for the positive feed back.  Though I see that I might have 
>> opened a can of worms here ;)
>>
>>> I followed all your instructions, and when I had a compile problem, I 
>>> removed everything, downloaded again/updated from cvs, and tried again 
>>> from scratch, with the same results.  I'm new at lisp and must say the 
>>> compile errors and debugger aren't exactly intuitive to me, though I'd 
>>> guess it involves the cffi function call :(
>> Ok, I since you included all the relevant logs, I will try to shed some 
>> light on it.
>>
>>> My compile stops in tree-view.lisp, as the lines below show.  I am 
> using 
>>> straight Debian Etch (32bit 2.6.18-5-k7 kernel), gcc that came with it 
>>> v4.1.2 20061115 (prerelease)(Debian 4.1.1-21), SBCL 0.9.16, cffi 
> 0.9.2, 
>>> and the cells/cells-gtk from cvs using the commands on your site.
>> As Friedrich pointed out, try using a newer sbcl.  You can download 
>> binary realeases at sbcl.org.  I have not tested anything with a pre 
>> 1.0.x version of SBCL.
>>
>>> ;; I've listed my links (without the permissions/owner/etc to better
>>> ;; read the lines, but permissions were wide open)
>>>
>>> bob at work1:~/.sbcl/site$ ls -la
>>> total 20
>>> drwxr-xr-x 5 bob bob 4096 2008-01-30 09:32 .
>>> drwxr-xr-x 4 bob bob 4096 2008-01-28 23:53 ..
>>> drwxr-xr-x 6 bob bob 4096 2008-01-30 23:07 cells
>>> drwxr-xr-x 8 bob bob 4096 2008-01-30 23:07 cells-gtk
>>> drwxr-xr-x 8 bob bob 4096 2008-01-30 09:33 cffi_0.9.2
>> ok, that looks nice and clean.
>>
>>> bob at work1:~/.sbcl/site$ ls -la ../systems/
>>> total 8
>>>  cells.asd            -> ../site/cells/cells.asd
>>>  cells-gtk.asd        -> ../site/cells-gtk/cells-gtk/cells-gtk.asd
>>>  cffi.asd             -> ../site/cffi_0.9.2/cffi.asd
>>>  cffi-uffi-compat.asd -> ../site/cffi_0.9.2/cffi-uffi-compat.asd
>>>  gtk-ffi.asd          -> ../site/cells-gtk/gtk-ffi/gtk-ffi.asd
>>>  ph-maths.asd         -> ../site/cells-gtk/ph-maths/ph-maths.asd
>>>  pod-utils.asd        -> ../site/cells-gtk/pod-utils/pod-utils.asd
>>>  
> test-gtk.asd         -> ../site/cells-gtk/cells-gtk/test-gtk/test-gtk.asd
>>>  utils-kt.asd         -> ../site/cells/utils-kt/utils-kt.asd
>> That's perfect, too.  BTW, without the correct permissions, you could 
>> not have gotten that far.  See below.
>>
>>
>> ;;----------------------------------------------------------------------------
>>> ;; I wasn't sure if these warnings when compiling gtk-ffi are
>>> ;; okay/expected or not?
>>>
>>> bob at work1:~/.sbcl/site/cells-gtk/gtk-ffi$ make
>>> gcc -fPIC -c gtk-adds.c `pkg-config --cflags --libs gtk+-2.0`
>>> gtk-adds.c: In function 'gtk_adds_color_new':
>>> gtk-adds.c:77: warning: incompatible implicit declaration of built-in 
>>> function 'malloc'
>>> gcc: -lgtk-x11-2.0: linker input file unused because linking not done
>>> gcc: -lgdk-x11-2.0: linker input file unused because linking not done
>>> gcc: -latk-1.0: linker input file unused because linking not done
>>> gcc: -lgdk_pixbuf-2.0: linker input file unused because linking not 
> done
>>> gcc: -lm: linker input file unused because linking not done
>>> gcc: -lpangocairo-1.0: linker input file unused because linking not 
> done
>>> gcc: -lfontconfig: linker input file unused because linking not done
>>> gcc: -lXext: linker input file unused because linking not done
>>> gcc: -lXrender: linker input file unused because linking not done
>>> gcc: -lXinerama: linker input file unused because linking not done
>>> gcc: -lXi: linker input file unused because linking not done
>>> gcc: -lXrandr: linker input file unused because linking not done
>>> gcc: -lXcursor: linker input file unused because linking not done
>>> gcc: -lXfixes: linker input file unused because linking not done
>>> gcc: -lpango-1.0: linker input file unused because linking not done
>>> gcc: -lcairo: linker input file unused because linking not done
>>> gcc: -lX11: linker input file unused because linking not done
>>> gcc: -lgobject-2.0: linker input file unused because linking not done
>>> gcc: -lgmodule-2.0: linker input file unused because linking not done
>>> gcc: -ldl: linker input file unused because linking not done
>>> gcc: -lglib-2.0: linker input file unused because linking not done
>>> gcc -shared -o libcellsgtk.so gtk-adds.o `pkg-config --cflags --libs 
>>> gtk+-2.0`
>> Yep, perfectly fine.  Same thing for me.
>>
>>> ;;----------------------------------------------------
>>> ;; Compile log starting at tree-view.lisp
>> ... which means you have successfully compiled cells, cffi, and gtk-ffi 
>> (which are the major systems r3equired by the actual cells-gtk system). 
>>   So the issue should be pretty local to that file.
>>
>> If you check cells-gtk/cells-gtk.asd you will notice that tree-view is 
>> one of the last files mentioned, so the major part of cells-gtk got 
>> compiled, too.
>>
>>> ; compiling 
> file "/home/bob/.sbcl/site/cells-gtk/cells-gtk/tree-view.lisp" 
>>> (written 27 JAN 2008 03:01:05 PM):
>>> ; compiling (IN-PACKAGE :CGTK)
>>> ; compiling (DEF-OBJECT LIST-STORE ...)
>>> ; compiling (DEF-OBJECT TREE-STORE ...)
>>> ; compiling (DEFUN FAIL ...)
>>> ; compiling (DEF-WIDGET TREE-VIEW ...)
>>> ; compiling (DEF-CLEAN-UP (SELF TREE-VIEW) ...)
>>> ; compiling (DEF-C-OUTPUT TREE-MODEL ...)
>>> ; compiling (DEF-C-OUTPUT EXPAND-ALL ...)
>>> ; compiling (CFFI:DEFCALLBACK TREE-VIEW-ITEMS-SELECTOR ...)
>>> ; compiling (DEFMETHOD GET-SELECTION ...)
>>> ; compiling (DEF-C-OUTPUT SELECTION-MODE ...)
>>> ; compiling (CFFI:DEFCALLBACK TREE-VIEW-SELECT-HANDLER ...)
>>> ; compiling (DEF-C-OUTPUT ON-SELECT ...)
>>> ; compiling (DEFMODEL LISTBOX ...)
>>> ; compiling (DEFMETHOD ITEMS ...)
>>> ; compiling (DEFMETHOD (SETF ITEMS) ...)
>>> ; compiling (DEFUN MK-LISTBOX ...)
>>> ; compiling (DEF-C-OUTPUT SELECT-IF ...)
>>> ; compiling (DEF-C-OUTPUT ROOTS ...)
>>> ; compiling (DEFMODEL TREEBOX ...)
>>> ; compiling (DEFUN MK-TREEBOX ...)
>>> ; compiling (DEF-C-OUTPUT SELECT-IF ...)
>>> ; compiling (DEF-C-OUTPUT ROOTS ...)
>>> ; compiling (DEFUN GTK-TREE-STORE-SET-KIDS ...)
>>> ; compiling (CFFI:DEFCALLBACK TREE-VIEW-RENDER-CELL-CALLBACK ...)
>>> ; compiling (DEFUN ITEM-FROM-PATH ...)
>>> ; compiling (DECLAIM (OPTIMIZE #))
>>> ; compiling (DEFUN GTK-TREE-VIEW-RENDER-CELL ...)
>>> ; compiling (DEFSTRUCT RENDERER ...)
>>> ; compiling (LET (#) ...)
>> Ok, if you wish to look into this in more detail, open tree-view.lisp 
>> and scroll to line 302.  The offending instruction is:
>>
>>
>> (let ((renderers (make-hash-table)))
>>    (defun register-renderer-data (renderer data)
>>      (setf (gethash (cffi-sys:pointer-address renderer) renderers) 
> data))
>>    (defun recover-renderer-data (renderer)
>>      (gethash (cffi-sys:pointer-address renderer) renderers)))
>>
>> Nothing spectacular here.  The pointer-address function can't be too 
>> complex.
>>
>>> debugger invoked on a TYPE-ERROR in thread #<THREAD "initial thread" 
>>> {A7BD4C1}>:
>>>   The value NIL is not of type SB-C::PHYSENV.
>> The error is in a SB-xxx package.  THat is often a sign that there is 
>> nothing wrong with your code, but the problem is at a deeper level. 
>> Common solutions are (as Friedrich already pointed out):
>>
>> . update SBCL to something more current.  If in doubt, remove the debian 
>> package first to make sure the current sbcl is called
>>
>> . remove stale fasl files.  These are something like C's object files: 
>> compiled code used instead of the source file.  Just do rm *.fasl 
>> **/*.fasl to remove all compiled files in the current directory and all 
>> subdirs.  Then restart sbcl.  Everything will be compiled freshly from 
>> scratch
>>
>> . you have some leftovers in your current working image.  Restart sbcl 
>> to start clean
>>
>>> 1: (SB-C::LET-CONVERT
>> It works on the let with some internal function
>>
>> ...
>>
>>> 10: (SB-C::COMPILE-TOPLEVEL
>>>      (#<SB-C::CLAMBDA
>>>         :%SOURCE-NAME SB-C::.ANONYMOUS.
>>>         :%DEBUG-NAME (SB-C::TOP-LEVEL-FORM
>>>                       (LET #
>>>                         #
>>>                         #))
>>>         :KIND :TOPLEVEL
>>>         :TYPE #<SB-KERNEL:BUILT-IN-CLASSOID FUNCTION (read-only)>
>>>         :WHERE-FROM :DEFINED
>>>         :VARS NIL {B6E2001}>)
>>>      NIL)
>> This is the part where the compiler (SBcl-Compiler) compiles the let 
> form.
>> So in other words, the SBCL compiler chokes at this rather simple let 
>> clause.  And you say this error persists, even if you recompile 
>> everything from scratch.
>>
>> Therefore my guess really is that the problem is with SBCL.  Try the 
>> newest SBCL.  If the problem persists, we should try to isolate it and 
>> post on the SBCL list.
>>
>> Peter
>>
>>
> 
> 



More information about the cells-gtk-devel mailing list