[squeak-dev] squeak.sh appears unable to allow specifying a project/file

K K Subbu kksubbu.ml at gmail.com
Mon Jul 20 09:35:06 UTC 2020

On 20/07/20 1:00 am, Tim Johnson wrote:
> Hi Subbu & all,
> On Jul 18, 2020, at 4:32 AM, K K Subbu wrote:
>> On 18/07/20 4:39 pm, Robert Withers wrote:
>>>> This was patched recently. Does the version below solve your problem?
>>>> https://github.com/squeak-smalltalk/squeak-app/blob/squeak-trunk/templates/linux/squeak.sh 
>>> Would there be any chance of modifying the script to open a file chooser
>>> dialog so the user can select the image s/he wants to run? There is a
>>> squeak.sh out there somewhere that does this.
>> The script uses a file dialog only when required. It is skipped if an 
>> image file is specified in the command line or a single image is found 
>> in the shared/ directory or through SQUEAK_IMAGE env variable.

> Are you sure about the SQUEAK_IMAGE environment variable?  My experience 
> in the last ~6 months had been that squeak.sh actually interfered with 
> the VM's ability to read SQUEAK_IMAGE.

Nice catch! squeak-app is a GUI launcher while the squeak.sh in 
unix/config is meant for shell sessions. The GUI launcher picks its env 
variables from xsession rc files while the script squeak.sh picks them 
from shell rc files. Using SQUEAK_IMAGE in xsessions is very rare. It is 
more likely in shells.

> Let's differentiate the two squeak.sh files:
> (a) The squeak.sh which is produced as part of the opensmalltalk-vm 
> build process.  It begins life as  'platforms/unix/config/squeak.sh.in' 
> and/or 'platforms/unix/config/bin.squeak.sh.in' in the opensmalltalk-vm 
> repo.  Its stated purpose is to "Run the VM, setting SQUEAK_PLUGINS if 
> unset to the VM's containing directory if unset, and ensuring 
> LD_LIBRARY_PATH includes the VM's containing directory".
> (b) The squeak.sh which lives in the 'squeak-smalltalk/squeak-app' repo, 
> and which is significantly different.  Its stated purpose is "Script to 
> launch Squeak executable from a bundle".

The launcher script is just that - a launcher. It is meant to detect and 
use options specific to a Linux distro. The two launchers you list above 
are used in different contexts - xsession and bash.

> My suggestion would be:  if squeak.sh ("b") from the squeak-app repo 
> wants to honor the contents of the SQUEAK_IMAGE environment variable on 
> Unix, it should either:  (1) adapt ensure_image() to check whether 
> SQUEAK_IMAGE is set, and if it is, consider passing it along;  or (2) 
> not supply  "${IMAGE}"  to the VM if no image is found.

1) is an good suggestion. Please propose a patch to the repo or this 
list. 2) does not help in xsession. If an image file is not specified, 
it is better to use a file dialog to get one.

> Please ignore me or correct me if I'm totally off-base here.

I am glad you posted your observation. I too was confused about the 
multiple squeak.sh files. I really wish we could converge them into a 
single one, but the diversity in *ix deployments is too large to be 
captured in a single script.

Regards .. Subbu

More information about the Squeak-dev mailing list