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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Matej Kosik-2
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.

Reply | Threaded
Open this post in threaded view
|

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

José Luis Redrejo
The squeak-vm in the official Debian repository (http://packages.debian.org/lenny/squeak-vm )  is compiled as a 64 bits app in amd64. I had to apply some patches that you can see in the debianized sources (directory debian/patches). Those patches fix some of the bugs in 64 bits, but not they all. The vm is usable (I'm working everyday in amd64) and works almost well, except for 64 bits bugs with the SoundPlugin .

Regards.
José L.



2008/4/28 Matej Kosik <[hidden email]>:
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.




Reply | Threaded
Open this post in threaded view
|

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

David T. Lewis
In reply to this post by Matej Kosik-2
On Mon, Apr 28, 2008 at 10:06:13AM +0200, Matej Kosik wrote:

> 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.

There is some general background information in a FAQ here:
  http://www.squeakvm.org/squeak64/faq.html

A list of the VM and plugin patches that I apply when building a 64 bit vm is here:
  http://lists.squeakfoundation.org/pipermail/vm-dev/2007-December/001703.html

> 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?
>

Don't worry about 64 bit images, that is a different issue entirely (see the FAQ
for explanation).

> If I try 64-bit image downloaded from here:
>
> http://squeakvm.org/squeak64/dist3/Squeak64-3.8g-6548.image.tar.gz
>
This image unfortunately will not work with current VMs without some extra
hacking, but don't worry about it because what you want is a 64 bit VM that
runs 32 bit images.

Dave
 

Reply | Threaded
Open this post in threaded view
|

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

Bert Freudenberg
On 28.04.2008, at 12:14, David T. Lewis wrote:

> On Mon, Apr 28, 2008 at 10:06:13AM +0200, Matej Kosik wrote:
>> 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.
>
> There is some general background information in a FAQ here:
>  http://www.squeakvm.org/squeak64/faq.html
>
> A list of the VM and plugin patches that I apply when building a 64  
> bit vm is here:
>  http://lists.squeakfoundation.org/pipermail/vm-dev/2007-December/001703.html
>
>> 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?
>>
>
> Don't worry about 64 bit images, that is a different issue entirely  
> (see the FAQ
> for explanation).
>
>> If I try 64-bit image downloaded from here:
>>
>> http://squeakvm.org/squeak64/dist3/Squeak64-3.8g-6548.image.tar.gz
>>
> This image unfortunately will not work with current VMs without some  
> extra
> hacking, but don't worry about it because what you want is a 64 bit  
> VM that
> runs 32 bit images.


IMHO the hint on top of

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

is far too subtle. It needs to be made very clear that people who just  
want a 64 bit Squeak VM for their 64 bit system need to compile the  
*regular* Squeak VM sources. In contrast, the "squeak64" page is for  
people who want to experiment with "64 bit images" which are  
*incompatible* with all the other Squeak images currently in use.

How about this:

"NOTE: 64-bit support has been integrated into the regular Squeak VM  
sources. To compile a VM for your 64 bit machine, go to <...>. This  
page is about experimental support of 64 bit images. Please refer to  
the <FAQ> to find out about 64-bit images."

- Bert -



Reply | Threaded
Open this post in threaded view
|

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

Matej Kosik-2
In reply to this post by José Luis Redrejo
Hi,

José Luis Redrejo napísal:
> The squeak-vm in the official Debian repository
> (http://packages.debian.org/lenny/squeak-vm )  is compiled as a 64 bits
> app in amd64. I had to apply some patches that you can see in the
> debianized sources (directory debian/patches). Those patches fix some of
> the bugs in 64 bits, but not they all. The vm is usable (I'm working
> everyday in amd64) and works almost well, except for 64 bits bugs with
> the SoundPlugin .

Is there some concrete plan when these patches will be merged into mainstream version so that anyone
having amd64 will be able to build usable VM without additional patches? Does it make sense to wait
for that to happen?

(I would like to keep the number of additional patches I must maintain and re-merge to the standard
source-code tree to minimum. I am not really Squeak VM hacker and I do not want to apply something
blindly if I do not understand what it is and whether it is a correct thing.)
--
Matej Kosik (http://altair.sk)

Reply | Threaded
Open this post in threaded view
|

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

José Luis Redrejo


2008/4/28 Matej Kosik <[hidden email]>:
Hi,

José Luis Redrejo napísal:
> The squeak-vm in the official Debian repository
> (http://packages.debian.org/lenny/squeak-vm )  is compiled as a 64 bits
> app in amd64. I had to apply some patches that you can see in the
> debianized sources (directory debian/patches). Those patches fix some of
> the bugs in 64 bits, but not they all. The vm is usable (I'm working
> everyday in amd64) and works almost well, except for 64 bits bugs with
> the SoundPlugin .

Is there some concrete plan when these patches will be merged into mainstream version so that anyone
having amd64 will be able to build usable VM without additional patches? Does it make sense to wait
for that to happen?


No idea
 

(I would like to keep the number of additional patches I must maintain and re-merge to the standard
source-code tree to minimum. I am not really Squeak VM hacker and I do not want to apply something
blindly if I do not understand what it is and whether it is a correct thing.)

All the patches I apply to the package are documented. Also, they all are separated files from the source, and are applied using dpatch, so you can pick up and use only those that you like. Most of them are fixes from bugs.squeak.org, and the bug number is documented in the patch.

For the rest, they are trivial patches (as adding the icon for the window manager, a patch created by somebody called Matej Kosik ;-), so I guess you don't need to apply them blindly.

Anyway, you're right: at least for the bug fixes, the patches should be approved and applied upstream. But, take into account that most of them are related to the plugins, not to the vm core itself, and as they are fixed in bugs.squeak.org, and then applied to the latest squeak images, using vmmaker you should be able to regenerate the right sources without using any patch (theorically).

I do know that Ian Piumarta does not use to read this mailing list due to his lack of time, so I'm cc'ing him to assure he's aware of this thread.

Regards.
José L.



Reply | Threaded
Open this post in threaded view
|

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

David T. Lewis
In reply to this post by Bert Freudenberg
On Mon, Apr 28, 2008 at 01:27:12PM +0200, Bert Freudenberg wrote:

>
> IMHO the hint on top of
>
> http://www.squeakvm.org/squeak64/
>
> is far too subtle. It needs to be made very clear that people who just  
> want a 64 bit Squeak VM for their 64 bit system need to compile the  
> *regular* Squeak VM sources. In contrast, the "squeak64" page is for  
> people who want to experiment with "64 bit images" which are  
> *incompatible* with all the other Squeak images currently in use.
>
> How about this:
>
> "NOTE: 64-bit support has been integrated into the regular Squeak VM  
> sources. To compile a VM for your 64 bit machine, go to <...>. This  
> page is about experimental support of 64 bit images. Please refer to  
> the <FAQ> to find out about 64-bit images."

Well, kinda. The 64-bit support is not 100% integrated into the VM,
and there is no "<...>" page (other than Mantis). Also, anybody who
wants to work with 64-bit images should use exactly the same VM sources
as the rest of us. The only actual difference is one line in a header
file, which is set by clicking on the "64 bit VM?" checkbox on the
VMMakerTool.

The initial 64-bit development was done by Dan and Ian back in 2004,
and was generously handed over to the community at that time. Expectations
should be adjusted accordingly.

I certainly do agree with your point, this is all very confusing to a
VM builder who might prefer to just type "./configure; make"
and be done with it.

Dave