Future of managing sourcecode in GST

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Future of managing sourcecode in GST

Holger Freyther
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
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk