[squeak-dev] [ANN] DoItFirst command line goodie on SqueakSource
K K Subbu
kksubbu.ml at gmail.com
Mon Dec 7 08:13:12 UTC 2020
On 07/12/20 1:40 am, David T. Lewis wrote:
> Tim's script starts with:
>
> #!/usr/bin/squeak /home/pi/Squeak/TPR-Squeak5.3-18560.image
>
> On my computer, the executable script for running Squeak VMs is
> called /usr/local/bin/run rather than /usr/bin/squeak, and the
> particular image that I am running at the moment is called squeak.12.image,
> so I edited the line in my script file to look like this:
>
> #!/usr/local/bin/spur64 squeak.12.image
>
> So now the FibonacciTestScript.st file is a Unix executable shell
> script, and I can run it like this:
>
> $ ./FibonacciTestScript.st
On Linux, one can use the binfmt_misc (see update-binfmts(8)) to shorten
launch times for interpreters like squeak. This kernel module can match
command files with their interpreter based on extension or embedded code
patterns. Python and Java already use this feature. update-binfmts can
install, display, find, disable, enable or remove interpreters and their
scripts/images based on file extensions or embedded magic codes.
Executing .st scripts will require two registrations. One to match .st
to its image and a second one to match the image to its vm.
1. To match .st to image, register a magic pattern with the binfmt_misc
feature along with the specific image to be launched:
$ sudo update-binfmts --install squeak5-64
/var/squeak/squeak5-3-64bit.image --magic '"#spur64"' --offset 0
This will execute all .st files beginning with "spur64" with the given
image.
$ chmod +x ./foo-bar.st /var/squeak/squeak5.3-64bit.image
$ head -1 ./foo-bar.st
"#spur64"
Now the command
$ ./foo-bar.st arg1 arg2
will be equivalent to:
$ /var/squeak/squeak5.3-64bit.image ./foo-bar.st arg1 arg2
2. Register another pattern to match .image to spur64 interpreter. Then
the line is equivalent to:
$ /usr/local/bin/spur64 /var/squeak/squeak5.3-64bit.image ./foo-bar.st
arg1 arg2
Registration is a one-time effort. Because the matching and loading is
done in a kernel module, the startup time is reduced. This trick can be
useful on platforms like RPi.
HTH .. Subbu
More information about the Squeak-dev
mailing list
|