The Cloudfork project is available for the three larger Smalltalk implementations: Squeak/Pharo, VA Smalltalk and VisualWorks. For maintaining the ports based on the Squeak implementation, we use the Package-Exporters package.
For porting to VA Smalltalk, we are using the VAPackageExporter as explained by Adriaan van Os. One important feature is the ability to maintain the port based on the changes to a project rather than repeating the all-in-one export.
For maintaining the VisualWorks port of Cloudfork, I extended the Package-Exporters project with a VWPatchExporter that can be used to export changes in the VisualWorks XML format. Having this feature, I can write the following expression to export only the additions/removals and changes to our project:
[sourcecode language=“ruby”] VWPatchsetExporter fileOutPackageNamed: ‘Cloudfork-AWS’ relativeTo: ‘Cloudfork-AWS-emm.76’ withNamespace: ‘Cloudfork’
There is still one issue related to namespaces. Because Squeak does not have namespaces support (yet?), extensions to classes that are not part of the project may be exported using the wrong namespace. Therefore, I always load the export first as a Change list to review the extensions and fix the namespaces by hand.
A possible solution to overcome this is to provide the VWPatchsetExporter with a mapping of qualified class names. Implementing the visualworksName as suggested by Package-Exporters, is not what I prefer.comments powered by Disqus