[Vm-dev] How to build a standard Unix interpreter VM on Linux
using a Squeak trunk image
casey.obrien.r at gmail.com
Sat Nov 19 21:01:55 UTC 2011
This is great!
I had a thought: There's probably a subset of this information which applies to all platforms.
It'd be awfully cool, and I think quite fitting, to have that information in the help system.
What do folks think about that?
On Nov 19, 2011, at 9:28 AM, "David T. Lewis" <lewis at mail.msen.com> wrote:
> 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.
> Now add some external plugins by dragging the following entries to the
> "External plugins" panel:
> 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 18.104.22.168-0.7-desktop #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:
More information about the Vm-dev