[Vm-dev] FFI for Squeak 3.8 Open Cobalt

Gary Dunn osp at aloha.com
Thu Nov 12 03:24:05 UTC 2009


(mutoh is the Squeak port maintainer. Please reply directly to me as the
vm-dev list requires subscription.)

I am trying to get Open Cobalt running on FreeBSD 7.1, Gnome 2.24. I
installed Squeak 3.9 from ports and have a 3.10 image running fine.

Open Cobalt is configured for Linux. The image is based on Squeak 3.8.
To get it to run at all I had to modify the startup script, basically to
use my squeak instead of the one that comes with the Linux version:

=-=-=-=-=

#!/bin/sh
IMAGE="cobalt.image"
DIR=`dirname $0`
EXE="$DIR/bin/i686-pc-linux-gnu"

# use command line arguments if present; else use default image
if [ $1 ]; then
    ARGS="$*"
else
    ARGS="$DIR/$IMAGE"
fi

# make source link if necessary
if [ ! -r $DIR/CroquetV1.sources ] ; then
        ln -s $DIR/bin/CroquetV1.sources $DIR/CroquetV1.sources
fi

# make libGL.so link if necessary
if [ ! -f /usr/lib/libGL.so -a -f /usr/lib/libGL.so.1 ] ; then
        if [ ! -f  "$EXE/libGL.so" ] ; then
                echo Creating libGL.so symlink in $EXE
                ln -sf /usr/lib/libGL.so.1 "$EXE/libGL.so"
        fi
fi

# Slight modification to cobalt.sh - line 26:
# make libopenal.so link if necessary - OpenAL is a good thing
if [ ! -f "$EXE/libopenal.so" -a -f /usr/lib/libopenal.so.1 ] ; then
    echo Creating libopenal.so symlink in $EXE
    ln -s /usr/lib/libopenal.so.1 "$EXE/libopenal.so"
elif [ ! -f "$EXE/libopenal.so" -a -f /usr/lib/libopenal.so.0 ] ; then
    echo Creating libopenal.so symlink in $EXE
    ln -s /usr/lib/libopenal.so.0 "$EXE/libopenal.so"
fi

#exec "$EXE/squeak" -plugins "$EXE" \  <--- my changes  --gd
#        -vm-display-X11 -swapbtn \
#        $ARGS
exec squeak -plugins "$EXE" $ARGS

=-=-=-=-=

This will run the FreeBSD version of squeak, the vm that comes with the
3.9 port:

$ squeak -version
3.9-7 #1 Thu Apr  9 01:24:21 HST 2009 cc
Squeak3.9alpha of 4 July 2005 [latest update: #7021]
FreeBSD slate01 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 14:37:25
UTC 2009     root at logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
i386
default plugin location: /usr/local/share/squeak/3.9-7/*.so

As cobalt loads I get this on the error output:

$ ./cobalt.sh
ioLoadModule(./bin/i686-pc-linux-gnu/SqueakFFIPrims):
  Shared object "libc.so.6" not found, required by "SqueakFFIPrims"
/usr/local/bin/firefox
/usr/local/bin/gnome-open
$

When I drag the cobalt ball I get:

setsockopt: No buffer space available
setsockopt: No buffer space available
fcntl: Device not configured

Here squeak hangs and must be killed (kill -9)

If I do not drag the ball I can work in the cobalt window, same as
squeak. I tried loading the FFI package but only 3.9 and 3.10 are
available, and will not load. FFI will load in my 3.10 image, but that
won't help me.

Is there a FreeBSD library I need to substitute for libc.so.6? I have
one at /usr/compat/linux/lib/libc.so.6 but I am not trying to run cobalt
in Linux mode.

Any thoughts?
-- 
Gary Dunn, Honolulu
osp at aloha.com
http://openslate.net/
http://e9erust.blogspot.com/
Sent from Slate001



More information about the Vm-dev mailing list