Flat Earth Catalogue


Installing Factor
In Ubuntu Trusty Tahr, these are the machinations whereby I got the Factor X11 listener (better known as a REPL) running:

Download, gunzip, and untar the binary package. tar -x by itself apparently just sits around, you have to tell it tar -xf because telling it that you want to extract files does not carry the implication that you want to extract them from somewhere.

At this point ./factor chokes to death:

./factor: error while loading shared libraries: libgtkglext-x11-1.9.so.0: cannot open shared opject file: No such file or directory

To fix that, [if you have not updated your apt-get databases in a while, start with sudo apt-get update, and then] sudo apt-get install libgtkglext1

Now you can have a different problem. Now the error is

Cannot resolve C library function
Library: DLL" /usr/lib/libgtk-x11-2.0.so.0"
Symbol: gtk_init
DlError: none
See http://concatenative.org/wiki/view/Factor/Requirements
(U) Quotation: [ c-to-factor -> ]
    Word: c-to-factor
(U) Quotation: [ [ catchstack* push ] dip call -> catchstack* pop* ]
(O) Word: command-line-startup
(O) Method: M\ gtk-ui-backend (with-ui)
(U) Quotation: [
       OBJ-CURRENT-THREAD special-object error-thread set-global
       current-continuation -> error-continuation set-global
       [original-error set-global ] [ rethrow ] bi

As you can see from the stack trace, we're now failing during the execution of actual Factor code. Exciting!

The Internet suggests that this might be fixed by installing gtkglext-devel (a package which turns out not to exist).

The Internet then suggests that it can be fixed from the command-line listener. Here IN: scratchpad represents the listener's prompt.

./factor -run=listener
IN: scratchpad "gtk.ffi" reload
IN: scratchpad save

Now, by the way, you will probably want to exit the listener, which is done by executing the command

IN: scratchpad return

Now your attempts to run ./factor will barf out a different error, in that the symbol that cannot be resolved is gtk_gl_init instead of gtk_init. Everything else is the same.

At this point I thought it a good idea to try and visit the Requirements page that was mentioned earlier. Cleverly, the main Factor website and the "Getting started" page do not see fit to link it. But now the secret is out. The requirements page lists a whole bunch of prerequisites:

sudo apt-get --yes install libc6-dev libpango1.0-dev libx11-dev xorg-dev libgtk2.0-dev gtk2-engines-pixbuf libgtkglext1-dev wget git git-doc rlwrap gcc g++ make

Also a helpful "Note that if you are using a proprietary OpenGL driver, you should probably leave out the libgl1-mesa-dev package in the list." A moment's rereading will reveal that there is no libgl1-mesa-dev package in said list. You should probably also leave out the all-the-other-packages-real-or-imaginary-that-are-not-in-the-list package in the list.
At any rate, once I'd installed those, or at any rate the ones that I don't already have, calling factor without an argument finally did bring up the X11 listener. 
For my next adventure, I'll find out whether that listener genuinely works, or if it's just good enough to load. But for today I've converted a reasonable amount of enthusiasm for Factor into an unreasonable amount of eye-rolling, so I'll knock off here.


Powered by Blogger


(K) 2002-present. All rights reversed, except as noted.

Hard-won technical knowledge, old rants, and broken links from 10 years ago. I should not have to explain this in the 21st century, but no, I do not actually believe the world is flat.