[squeak-dev] Re: [Vm-dev] How to build a standard Unix interpreter VM on Linux using a Squeak trunk image

Markus Lampert markuslampert at yahoo.com
Mon Nov 21 06:25:30 UTC 2011

Hi David,

thanks for the tutorial, love it!

One question though, when it comes to generating the sources I run into several warnings:
CrLfFileStream class>>new has been deprecated. This class is now obsolete, use MultiByteFileStream instead.

Is this expected?


> From: David T. Lewis <lewis at mail.msen.com>
>To: vm-beginners at lists.squeakfoundation.org; squeak-dev at lists.squeakfoundation.org; vm-dev at lists.squeakfoundation.org 
>Sent: Saturday, November 19, 2011 9:28:13 AM
>Subject: [Vm-dev] How to build a standard Unix interpreter VM on Linux using a Squeak trunk image
>This is a topic that deserves an occasional update, so here is an updated
>step-by-step recipe for building with Squeak on Linux.
>These instructions are saved on the swiki at <http://wiki.squeak.org/squeak/6177>
>Start with a fresh image such as http://ftp.squeak.org/4.3alpha/Squeak4.3gamma-11793.zip
>(any recent Squeak image will do).
>Open a new Morphic project in which to work, and enter the project.
>Open a new workspace for taking notes as you work, and a transcript to display
>any transcript output that might appear.
>Open a Monticello browser.
>In the Monticello browser, add a new repository (+Repository button).
>Select "HTTP" repository type, and edit the repository information as follows:
>    location: 'http://www.squeaksource.com/VMMaker'
>    user: ''
>    password: ''
>Open the new repository (select the new entry and click the Open button to get
>a new repository browser).
>In the repository browser, select category "update" from the list in the left
>panel, and select the top entry in the right panel (update-dtl.9.mcm as of
>this writing).
>Click the "Load" button to load VMMaker. This will load VMMaker and various
>related packages and plugins. This will load a base version of these packages
>(but you do not yet have the latest updates, see the next step below). You
>can see a version identification for your VMMaker package by evaluating
>"VMMaker versionString" in your workspace:
>  VMMaker versionString ==> '4.7.9'
>In the workspace, evaluate the expression "VMMaker updateFromServer". This
>will update VMMaker and the other packages to the most up to date versions.
>During the merge process,  a merge browser will open with a label such as
>"Merging FFI-Pools-eem.3". Highlight the entries and click "Keep", then
>click the "Merge" button to accept the merge and proceed (this merge conflict
>will not effect your VM, so it is safe to ignore it and proceed).
>When the update process is complete, you will have the latest VMMaker version:
>  VMMaker versionString ==> '4.7.14'
>Save your image. Your image is now prepared for VM code generation, so the
>next steps will be to load the platform source code that is required for
>code generation and VM building.
>In a Linux terminal window (outside of Squeak), change your directory to
>your working Squeak directory (the same directory that you are using to run
>your image.
>lewis at linux-jh8m:~> cd squeak/Squeak4.3
>lewis at linux-jh8m:~/squeak/Squeak4.3>
>Check out an up to date copy of the platforms source code. You will need to
>have Subversion installed on your Linux system:
>lewis at linux-jh8m:~/squeak/Squeak4.3> svn co http://squeakvm.org/svn/squeak/trunk
>  <lots of messages snipped>
>Checked out revision 2515.
>lewis at linux-jh8m:~/squeak/Squeak4.3> svn co http://squeakvm.org/svn/squeak/trunk
>This will place all of the platform sources in a subdirectory called
>trunk/platforms. It is easier for VMMaker to find this directory if the
>platforms directory is in directly in your Squeak directory, so use a symbolic
>link to make it so:
>lewis at linux-jh8m:~/squeak/Squeak4.3> ln -s trunk/platforms platforms
>The platforms sources are now ready for use, so return to your Squeak
>image to generate your VM source code.
>Open a VMMaker tool withy world menu -> open... -> VMMaker
>Click the Help button and have a quick look at the help information. You
>can come back to it later to read in more detail.
>A list of available plugins appears in the left panel ("Plugins not built").
>You can drag entiries from this panel into the "Internal Plugins" panel or
>the "External Plugins" panel, or you can right click on the panel and use the
>menu to copy all plugins from one panel to another (plugins that cannot be
>built on your platform will remain in the "Plugins not built" panel).
>We are building our first VM, so we will select just a few important plugins
>to build and omit many others for now. After you are confident that you can
>build a VM, you can add other plugins and any operating system libraries that
>may be needed to support them. You can also use a VMMaker configuration file
>to load a saved configuration, but for now we will do the work by hand to
>show how it is done.
>Use the mouse to drag and drop the following plugin entries from the
>"Plugins not built" panel to the "Internal plugins" panel.
>  BalloonEnginePlugin
>  BitBltSimulation
>  DeflatePlugin
>  FilePlugin
>  LargeIntegersPlugin
>  LocalePlugin
>  SecurityPlugin
>  SocketPlugin
>Now add some external plugins by dragging the following entries to the
>"External plugins" panel:
>  UUIDPlugin
>  UnixAioPlugin
>  UnixOSProcessPlugin
>  XDisplayControlPlugin
>Click the "Clean out" button to make sure the output directory is empty.
>This is not really necessary now, but it is good practice, and you will
>want to do it any time you want to guarantee that you are generating a
>complete fresh copy of the VM sources.
>In the "Generate:" panel, click the "Entire" button. This will generate
>all of the VM and plugin source code. In other words, it will translate
>the Smalltalk classes in your image into C code, and store the resulting
>source code in the "src" directory in your Squeak directory. This generated
>source, in combination with the platforms source code that you downloaded
>from the Subversion repository, is the complete source code for your new
>Squeak VM. 
>Now go back to your Linux terminal window to compile and install the VM.
>You will need to have the CMake package installed on your Linux system,
>so make sure this is done before proceeding.
>You should now have all necessary sources in the "platforms" and "src"
>directories in your Squeak working directory:
>lewis at linux-jh8m:~/squeak/Squeak4.3> ls -ltd platforms src
>drwxr-xr-x 4 lewis users 4096 2011-11-19 10:10 src
>lrwxrwxrwx 1 lewis users   15 2011-11-19 09:39 platforms -> trunk/platforms
>Create a "build" directory for building the VM, and change into that
>lewis at linux-jh8m:~/squeak/Squeak4.3> mkdir build
>lewis at linux-jh8m:~/squeak/Squeak4.3> cd build
>lewis at linux-jh8m:~/squeak/Squeak4.3/build>
>We will first run a configuration procedure that uses CMake to configure
>the sources for your system. You will find documention for this in
>platforms/unix/CMake.txt. The script that runs this procedure has introductory
>help, so read this first:
>lewis at linux-jh8m:~/squeak/Squeak4.3/build> ../platforms/unix/cmake/configure --help
>Now, from your empty build directory, run the actual configuration process.
>The parameters specify the location of the generated sources, and also specify
>that GL libaries should be avoided (they are not needed for this simple build,
>and might cause problems if you do not have the necessary libraries in place).
>If you are using a 64-bit operating system, this configuration will build a
>64-bit VM (see the configuration help above if you want to specify CFLAGS to
>build a 32-bit VM, which you may later want to do if you are building some of
>the plugins that work in 32-bit mode).
>lewis at linux-jh8m:~/squeak/Squeak4.3/build> ../platforms/unix/cmake/configure --src=../src --without-gl
>When the configuration is complete, use make to build the VM:
>lewis at linux-jh8m:~/squeak/Squeak4.3/build> make
>If you have any errors or problems with the build, you may need to do
>some troubleshooting. In most cases the problem will relate to missing
>development software that you will need to install on your Linux system.
>When the build is complete, your new VM is read to be installed.
>lewis at linux-jh8m:~/squeak/Squeak4.3/build> make install
>Depending on the security settings of your system, you may need to log
>in as root (or use sudo) to perform this last step (but never use root
>access for any of the other build steps described above).
>Your new Squeak VM is now built and installed, ready to be run as
>/usr/local/bin/squeak. You can verify the version of the VM you are
>running as follows:
>lewis at linux-jh8m:~/squeak/Squeak4.3/build> squeak -version
>4.7.14-2515 #1 XShm Sat Nov 19 10:27:11 EST 2011 gcc 4.5.0
>Linux linux-jh8m #1 SMP PREEMPT 2010-12-13 11:13:53 +0100 x86_64 x86_64 x86_64 GNU/Linux
>plugin path: /usr/local/lib/squeak/4.7.14-2515 [default: /usr/local/lib/squeak/4.7.14-2515/]
>Congratulations, you are now a VM builder. You will probably want to add
>some more plugins, and you can save and load your VMMaker configurations
>for various combinations of plugins with the "Load" and "Save" buttons on
>your VMMaker window. For reference, here is a configuration file that
>matches the configuration of recent official Unix Squeak VMs on
>www.squeakvm.org (note that you will need to locate and install KedamaPlugin
>and GStreamer plugin to build a VM that fully matches the standard Unix VM).
>Contents of standard-vmmaker-unix.config file:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20111120/df8f7844/attachment.htm

More information about the Squeak-dev mailing list