[squeak-dev] How to build squeak VM on amd64?

Matej Kosik kosik at fiit.stuba.sk
Mon Apr 28 08:06:13 UTC 2008


Friends,

I maintain these Debian repositories:
http://wiki.squeak.org/squeak/3616

There are binary packages for i386 which work fine.

I am trying to build similar binary packages for amd64 architecture. This is motivated by recent
"Squeak Debian Amd64 package" threat on this list.
I am having troubles to understand how to do that (I am getting old and stupid, I guess) and seeking
some help.

First, I need the source. It is available:
  http://www.squeakvm.org/index.html
    http://www.squeakvm.org/squeak64/
      http://squeakvm.org/squeak64/dist3/
        http://squeakvm.org/squeak64/dist3/Squeak-3.8a-2.src.tar.gz

The mentioned Squeak VM version seemed to be slightly older than than latest one visible here:

  http://www.squeakvm.org/unix/
  http://www.squeakvm.org/unix/release/Squeak-3.10-1.src.tar.gz

I presume that newer is better. So I am trying Squeak-3.10-1.src.tar.gz

   wget http://www.squeakvm.org/unix/release/Squeak-3.10-1.src.tar.gz
   tar xvzf Squeak-3.10-1.src.tar.gz

The top-level README tells how to install Squeak if I have a root account but *I do not have root
acount*. So I must try something different. Here:

  http://www.squeakvm.org/squeak64/

are described other procedures that can be modified to install squeak to my home dir.

  mkdir bld
  cd bld
  ../platforms/unix/config/configure --with-src=src32 --prefix=/home/kosik

(Is it expected to work?)

Directories ~/bin and ~/lib exist, so the above command should have sense. Here is its output

  http://altair.sk/uploads/tmp/1.txt

There is one warning:

  config.status: WARNING:  ../platforms/unix/config/make.cfg.in seems to ignore the --datarootdir
setting

What does it mean?

If I try to go on, I get this error

  http://altair.sk/uploads/tmp/2.txt

/bin/sh /home/kosik/work/debian/etch/squeak/Squeak-3.10-1/bld/libtool --mode=link gcc -g -O2
-DLSB_FIRST=1    -export-dynamic -R/home/kosik/lib -o squeak vm/vm.a B2DPlugin/B2DPlugin.a
BitBltPlugin/BitBltPlugin.a FilePlugin/FilePlugin.a SocketPlugin/SocketPlugin.a disabledPlugins.o
version.o -lutil -ldl -lm -lnsl   vm/vm.a
gcc -g -O2 -DLSB_FIRST=1 -o squeak disabledPlugins.o version.o -Wl,--export-dynamic  vm/vm.a
B2DPlugin/B2DPlugin.a BitBltPlugin/BitBltPlugin.a FilePlugin/FilePlugin.a
SocketPlugin/SocketPlugin.a -lutil -ldl -lm -lnsl vm/vm.a -Wl,--rpath -Wl,/home/kosik/lib
vm/vm.a(sqVirtualMachine.o): In function `sqGetInterpreterProxy':
/home/kosik/work/debian/etch/squeak/Squeak-3.10-1/platforms/Cross/vm/sqVirtualMachine.c:202:
undefined reference to `obsoleteDontUseThisFetchWordofObject'
/home/kosik/work/debian/etch/squeak/Squeak-3.10-1/platforms/Cross/vm/sqVirtualMachine.c:333:
undefined reference to `fetchLong32ofObject'
/home/kosik/work/debian/etch/squeak/Squeak-3.10-1/platforms/Cross/vm/sqVirtualMachine.c:334:
undefined reference to `getThisSessionID'
/home/kosik/work/debian/etch/squeak/Squeak-3.10-1/platforms/Cross/vm/sqVirtualMachine.c:335:
undefined reference to `ioFilenamefromStringofLengthresolveAliases'
/home/kosik/work/debian/etch/squeak/Squeak-3.10-1/platforms/Cross/vm/sqVirtualMachine.c:336:
undefined reference to `vmEndianness'
collect2: ld returned 1 exit status
make: *** [squeak] Error 1

So, I did not succeeded here.

For curiousity, I have tried to look at the 64-bit version images. So I have tried to build VM as
follows:

  ../platforms/unix/config/configure --with-src=src64 --prefix=/home/kosik

The configuration yields the same warning and building ends with the same error. So I am trying also
the old way (plus the --prefix, no --with-src)

  ../platforms/unix/config/configure --prefix=/home/kosik
  make
  make install

I do not notice any failure this far. Squeak binary is installed in my ~/bin directory.
There is /home/kosik/lib/squeak/ directory with the following contents

  /home/kosik/lib/squeak/
  /home/kosik/lib/squeak/3.10-1
  /home/kosik/lib/squeak/3.10-1/B3DAcceleratorPlugin
  /home/kosik/lib/squeak/3.10-1/XDisplayControlPlugin
  /home/kosik/lib/squeak/3.10-1/vm-sound-null
  /home/kosik/lib/squeak/3.10-1/squeak
  /home/kosik/lib/squeak/3.10-1/vm-display-null
  /home/kosik/lib/squeak/3.10-1/PseudoTTYPlugin
  /home/kosik/lib/squeak/3.10-1/npsqueak.so
  /home/kosik/lib/squeak/3.10-1/VideoForLinuxPlugin
  /home/kosik/lib/squeak/3.10-1/Squeak3D
  /home/kosik/lib/squeak/3.10-1/vm-display-fbdev
  /home/kosik/lib/squeak/3.10-1/vm-display-X11
  /home/kosik/lib/squeak/3.10-1/UnixOSProcessPlugin
  /home/kosik/lib/squeak/npsqueakregister
  /home/kosik/lib/squeak/npsqueakrun

I am slightly puzzled what kind of image (32-bit or 64-bit) I need since I did not specified it
--with-src. What is the default?

If I try 64-bit image downloaded from here:

http://squeakvm.org/squeak64/dist3/Squeak64-3.8g-6548.image.tar.gz

   squeak  Squeak64-3.8g-6548.image

I get this message:

  could not find display driver vm-display-X11; either:
    - check that /home/kosik/lib/squeak/3.10-1/vm-display-X11.so exists, or
    - use the '-plugins <path>' option to tell me where it is, or
    - remove DISPLAY from your environment.
  Aborted

One puzzling thing is that `make install' generated

  /home/kosik/lib/squeak/3.10-1/vm-display-X11

but the binary requires

  /home/kosik/lib/squeak/3.10-1/vm-display-X11.so

This is slightly confusing. This

   squeak -plugins /home/kosik/lib/squeak/3.10-1 Squeak64-3.8g-6548.image

does not help either. I am logged in remotely, but I can start normal X applications (such as
xclock) so this should not be the problem.

However has experience with this and can help, I would be grateful.

Thanks in advance.



More information about the Squeak-dev mailing list