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 git@github.com:feenkcom/gtoolkit-vm.git
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@github.com:pharo-project/pharo-vm.git
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 <contact@feenk.com>" \
--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/GlamorousToolkit.app/Contents/MacOS/GlamorousToolkit-cli local-build --image-url https://files.pharo.org/image/110/Pharo11-SNAPSHOT.build.713.sha.05938f2.arch.64bit.zip --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/GlamorousToolkit.app/Contents/MacOS/GlamorousToolkit-cli release-build --image-url https://files.pharo.org/image/110/Pharo11-SNAPSHOT.build.713.sha.05938f2.arch.64bit.zip --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/Pharo.app