Hi, for my work I normally port packages that target Pharo to GNU Smalltalk. We have fixed some bugs in the gst-convert utility, we have built some knowledge on common rules but porting and merging is a manual task right now.
Now Monticello(?) has gained support to use GIT as a target for the package. While it is great the downside is that each class is a directory and each selector is a file. An example of such a package is here[1]. I wonder how we can make the best use of it? There are several things I would like to discuss that result in tools and the documentation of best practises for porting. Today: Initial: * Download the latest package from squeaksource/smalltalkhub by hand. * Create a new git repository... * Copy the .mcz:snapshot/sources.st to sources.pharo * Use gst-convert to convert the code to GST (always forgetting that gst2 is smaller than in gst in version, I should add a gst3 alias) * Create a package.xml and run gst-package --test.package * Fix parse issues, fix the STInST parser.. * Fix the .st by hand or use gst-convert with more rules. Update: * Take all or just the last version... * Convert again.. look at it with.. not much 'incremental' work. Issues with it: * Done by hand.. * Having to remember/find the rewrite rules all the time * Incremental updates are difficult Goal: * I would like to have an automatic process. Most packages should be portable with not much work, we should have tools that also ease the upgrading. This would mean to have a 'PharoExtensions' package and this should come with conversion rules. How to move forward? * Implement/Port Metacello.. and build diffs by hand and then use the fileout? * Help building small scripts. Checking in sources.st in a Pharo branch and creating tags.. and then merging/copying this into a GST branch? Write scripts that 'sort' code to make diffs as small as possible? * Or start using git as in monticello/metacello here? Then we would just modify the code in the single files, create some new packages? We could build a special package.xml that knows how to collect the files from such a package directory. The biggest concern is that I would not like creating a new selector by creating a new file by hand? So maybe we can have scripts that assemble and split the code? ideas? comments? volunteers? holger [1] https://github.com/dalehenrich/topez _______________________________________________ help-smalltalk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-smalltalk
