hpi-swa/smalltalkCI

GToolkit - Add as Platform

seandenigris opened this issue · 9 comments

GToolkit has emerged as a distribution in its own right. It would be great to add it as a platform, like we have for Moose. NB unlike Moose, it has its own VM (based on Pharo's). cc @girba

If we can find someone who is willing to contribute and maintain it, I'm happy to provide help and merge PRs for GToolkit support.

Great. Hopefully I will be able to have a look soon...

I may give this a try. Any docs on adding a platform? Or pointers on where to dig into the code?

There are no docs because platforms can be quite different. Since GToolkit has its roots in Pharo, maybe it can simply be added to the Pharo infra (similar to Moose). Here's what needed to be done to support Pharo 10: c06e6c5. Hope this helps!

GT has its own CI and fileserver, so I think it's best if we can use that. The main difference to Pharo seems to be that there is no "image-only" (doesn't seem to exist) and "vm-only" (seemingly out-of-date) option, but only a zip with both image and VM included. This zip seems to have a Pharo-style get script. Would that be easily pluggable into SmalltalkCI?

Where is the interface that the glue scripts must match up to? I see run_script(), load_project(), test_project(), and run_build() at the end of both the Pharo and Squeak scripts. I assume those should be implemented. Is that right? Any others?

cc/ @girba

Would that be easily pluggable into SmalltalkCI?

You can redefine the behavior for GT in here:

smalltalkCI/pharo/run.sh

Lines 366 to 389 in 9e3cda8

################################################################################
# Main entry point for Pharo builds.
################################################################################
run_build() {
if ! image_is_user_provided; then
case "${config_smalltalk}" in
Pharo*)
pharo::prepare_image "${config_smalltalk}"
;;
Moose*)
pharo::prepare_moose_image "${config_smalltalk}"
;;
esac
fi
if ! vm_is_user_provided; then
pharo::prepare_vm "${config_smalltalk}"
fi
if ston_includes_loading; then
pharo::load_project
check_and_consume_build_status_file
fi
pharo::test_project
}

So instead of downloading image and vm separately, you could just download the bundle using the get script.

I don't think you need to redefine pharo::load_project() or pharo::test_project().

GT… seems to have a Pharo-style get script.

@girba, the above link now returns a 404. Is there still such a mechanism?

This is ready for feedback and quite possibly ready to merge. I can't start the CI because I'm not part of the repo. I accepted the invitation but it had already expired. Can someone re-send?

This is ready for feedback and quite possibly ready to merge. I can't start the CI because I'm not part of the repo. I accepted the invitation but it had already expired. Can someone re-send?

I think you can enable GitHub Actions in your fork from the repository settings as a temporary solution.