[squeak-dev] vmrun script
David T. Lewis
lewis at mail.msen.com
Fri Jun 5 01:37:07 UTC 2015
I am in the habit of installing several VMs on my Linux computer, and
running images of various vintages and image formats. Here is the script
that I use to run an appropriate VM for any given image.
I install the script as /usr/local/bin//vmrun and use it like this:
$ vmrun whatever.image &
Dave
-------------- next part --------------
#!/bin/sh
# dtl Wed May 20 19:49:25 EDT 2015
#
# vmrun utility script
#
# Select a VM and run an image based on the image format number
#
# Assume that /usr/local/bin/squeak runs the traditional VM for 32-bit
# and 64-bit images in the traditional image formats. Assume that
# /usr/local/bin/cog runs Cog, /usr/local/bin/spur runs the VM for 32-bit
# Spur images, and /usr/local/bin/spur64 runs the VM for 64-bit Spur
# images.
#
# Use ckformat to determine image requirements. See package ImageFormat
# in the SqueakSource VMMaker repository. The executable is distributed
# with the standard interpreter VM. To generate C source for the ckformat
# utility, evaluate:
# "ImageFormat createCkStatusProgram"
#
# VMs look for this default name if an image has not been
# specified. Use the same default for this script.
DEFAULT_IMAGENAME="squeak.image"
# Scripts for running various interpreters
INTERP_SCRIPT="squeak" # Context VM for 32 and 64 bit images
COG_SCRIPT="cog" # Cog VM
SPUR_SCRIPT="spur" # Spur VM for 32-bit Spur image
SPUR64_SCRIPT="spur64" # Spur VM for 64-bit Spur image
# Assume scripts are in the same directory, e.g. /usr/local/bin
BIN=`dirname "$0"`
# The ckformat utility is distributed with interpreter VM builds.
# Find it in the lib directory for the interpreter VM.
CKFORMAT=`squeak -version | grep 'plugin path' | sed 's/^.*default: //' | sed 's/]$//'`ckformat
# Paths to the run scripts
INTERP="$BIN/$INTERP_SCRIPT" # Context interpreter VM
COG="$BIN/$COG_SCRIPT" # Cog VM for 32-bit images with closure support
SPUR="$BIN/$SPUR_SCRIPT" # Spur VM for Spur 32-bit image format 6521
SPUR64="$BIN/$SPUR64_SCRIPT" # Spur VM for Spur 64-bit image format 68109
for arg in $*
do
case ${arg} in
-*) #ignore
;;
*) # either and option argument or the image name
if test -f ${arg}
then
NUM=`${CKFORMAT} ${arg} 2>/dev/null`
if test $? -eq 0
then
IMAGENAME=${arg}
break
fi
else
if test -f ${arg}.image
then
NUM=`${CKFORMAT} ${arg}.image 2>/dev/null`
if test $? -eq 0
then
IMAGENAME=${arg}.image
break
fi
fi
fi
;;
esac
done
# if no image name specified on command line, try the default
if test ! ${IMAGENAME}
then
if test -f ${DEFAULT_IMAGENAME}
then
IMAGENAME=${DEFAULT_IMAGENAME}
NUM=`${CKFORMAT} ${IMAGENAME} 2>/dev/null`
if test $? -ne 0
then
echo image format ${NUM} not recognized for ${IMAGENAME}
exit 1
fi
else
echo `basename $0` $@: image file not found
exit 1
fi
fi
case $NUM in
6502)
VM=$INTERP
;;
6504 | 6505)
VM=$COG
;;
6521)
VM=$SPUR
;;
68000 | 68002 | 68003)
VM=$INTERP
;;
68019)
VM=$SPUR64
;;
*) echo image format ${NUM} not recognized for ${IMAGENAME}
exit -1;;
esac
# Use standard VM as default if preferred VM not present
if test ! -x ${VM}
then
echo ${VM} not found, using ${INTERP}
VM="${INTERP}"
fi
### echo running ${IMAGENAME} with image format $NUM using $VM
exec ${VM} $@
More information about the Squeak-dev
mailing list
|