Hi Ian,

On Mon, Aug 31, 2009 at 2:08 AM, Ian Piumarta <piumarta@speakeasy.net> wrote:

Unix VM hackers,

I've published a preview of the 3.11.3 Unix VM for the amusement of alpha testers everywhere.  Lots of things are bound to be broken and/or forgotten and/or incomplete and/or begging for improvement.  I'm not quite finished tweaking but comments and suggestions are definitely welcome at this stage!

Does the build still create symbolic links, i.e. 
    plugins -> lib/squeak/3.9-7/
    squeak -> bin/squeak
    bin/squeak -> ../lib/squeak/3.9-7/squeak

If so, can I suggest trying to do without these?  The rationale is svn on Windows, which is horribly broken by symbolic links.

At Qwaq we build Linux, Mac OS X and Win32 VMs that live in a single svn tree for the release VMs (the "binary" tree).  Because of the symbolic links in the unix build we have to keep the Unix vm in a gzipped tar file to avoid including symbolic links in a check-out of the build tree on Win32.  That means that checking whether a component such as an external plugin is up-to-date involves unpacking the tar, and doing a diff -r, which is tedious.

Maybe the creation of these symbolic links could be deferred until "make install" time so that doing a simple "make" produces somethign Win32 can live with.

cheers
Eliot


Grab sources from the trunk of Subversion, or look in

 http://squeakvm.org/unix/alpha

for archives of sources and binaries for i386 (Linux, NetBSD, FreeBSD and Solaris) and powerpc (Darwin).  (Files ending in '.sh' are self-extracting archives; run as shell script and follow instructions.)

The noticeable changes since 3.10 are:

0. Plugins have been regenerated from latest releases

At least for those on squeaksource.  Any hiding in more obscure places might still be stale.

1. New build process based on CMake

See README in the source archive or platforms/unix/README.CMake in the repository.

Woo hoo!

 
2. Different plugin and FFI library search strategy

The default plugin directory is now the VM binary directory.  This is correct for installed VMs where the binary lives alongside the plugins in /usr/.../lib/squeak/version/squeakvm.  A launcher script installed as /usr/.../bin/squeak figures out where the VM is (either installed or running from a build directory) and adds a -plugins option appropriately.  The script also does the pulse audio OSS kludge if necessary.  (Another script, squeak.sh, is intended to launch Squeak from a menu.  It's begging for improvement.)

SQUEAK_PLUGINS (or the argument to -plugins) can be set to a colon-separated list of places to look for plugins.  (Dave can debug one plugin at a time using 'squeakvm -plugins bld/%n:/usr/lib/squeak/<version>'.)

Libraries are searched only by whatever mechanisms dlopen() uses.  Applications that used to rely on the VM searching every nook and cranny for FFI callouts may have to set LD_LIBRARY_PATH, or whatever local equivalent is provided, to ensure their external functions' libraries are found.

3. New numbering scheme

The VM is now numbered X.Y.Z-R where X.Y.Z are the version of VMMaker used to generate the Interpreter and plugins, and R is the Subversion repository revision of the Unix support code.  (The archives are named X.Y.Z.R, just because rpmbuild is grumpy otherwise.)

Cheers,
Ian