How to create a new release for the GT Vm from a new release of the Pharo Vm

The instructions below are for creating a new release of the GT VM, after a new Pharo VM is released.

Relevant repositories:

Clone the GT and Pharo VMs

First we clone the GT VM and update the Pharo VM submodule.

git clone
cd gtoolkit-vm
git submodule update --init --recursive

Fetch branches

Next we get all the branches and tags from the Pharo VM into the fork.

cd pharo-vm
git remote add pharo
git fetch pharo

Create branch

We select here the tag that we want in the Pharo VM and create a new branch based on it

git checkout v10.0.9 
git switch -c ph10009.00

Merge changes

In the new branch we need to merge our custom changes from the previous stable branch (initially origin/ph10004, in this example origin/ph10008.00)

git merge origin/ph10008.00

Push changes in the Pharo VM fork

We first push our changes in the fork of the Pharo VVMm, including tags. This should be done in the pharo-vm directory.

git push --set-upstream origin ph10009.00
git push --tags

Commit&push gtoolkit-vm

This will update the pharo-vm submodule to the new branch. Should be done in the gtoolkit-vm directory

cd ..
git add pharo-vm
git commit -m "update Pharo VM module to xyz"
git push

Other scripts

Building a GT vm using gtoolkit-vm-builder

gtoolkit-vm-builder should be downloaded from gtoolkit-vm-builder

Without the --release option a debug vm is created.

./gtoolkit-vm-builder \
--release \
    --app-name 'GlamorousToolkit' \
    --identifier 'com.gtoolkit' \
    --author "feenk gmbh <>" \
    --libraries-versions libraries.version \
    --libraries boxer clipboard filewatcher gleam glutin pixels process skia winit test-library cairo crypto freetype git sdl2 ssl

Building a new image locally

Using all the default settings, we can do a local build:

./gt-installer --verbose local-build

This uses the installer to create a new image by using a local vm and a specific image

./gt-installer --verbose --app-cli-binary /Users/Documents/ local-build --image-url --loader cloner

This creates a release build using a custom vm and image, without opening the world

./gt-installer --verbose --app-cli-binary /Users/Documents/ release-build --image-url --no-gt-world

Running all examples as on the CI:

./gt-installer --verbose --workspace glamoroustoolkit test --disable-deprecation-rewrites --skip-packages Sparta-Cairo Sparta-Skia GToolkit-RemoteExamples-GemStone

Signing the VM locally on MacOS for development

When building VMs locally they need to be signed to work correctly. For development we can sign them locally using the ‘-’ signing identity. This is an ad-hoc identity that does not have to be checked with Apple.

codesign --force --deep --sign - pharo-vm/