Implementation that makes use of "provides" is in verision of universes in http://www.squeaksource.com/Installer Also support for monticello configurations is included.
First, that's cool that you looked at the problem. Did you modify UGlobalInstaller, or did you make a replacement for it, or what?
Monticello already has a mechaism for mapping file extensions to reader classes. So I simply implemented the method below to use this mechanism. I also ensured that the mcm reader was compatiable with this invocation. The same scheme should also work for Installer.
In Monticello1.5 ;-) There is also a reader for files of extension '.mcs' , if you give a change-set the extension .mcs instead of .cs then Monticello will load it, rather than the standard .cs reader. This will be useful when monticello supports proper atomic loading. The rationale for the new extension is simply that if you switch to using monticell ot load .cs files then any non-basic cs files, with preambles etc dont work. Having .mcs explicitly defined avoids any confusion.
UIMonticello-installFileNamed: filename
| reader |
Smalltalk at: #MCReader ifPresent: [ :top |
reader := top readerClassForFileNamed: filename
]. reader ifNil: [ MczInstaller installFileNamed: filename ].
^ reader loadVersionFile: filename
Second, doesn't that mean the above version is incompatible with the standard universes toolkit? This means it is problematic to have that version, if it is, in the development universe. Packages in the same universe should work nicely with each other.
The latest Magma beta's are being distributed as a monticello configuration. Chris and I agreed that maintaining dependencies within basic monticello without MonticelloConfigurations was too much of a headache.
So if you want to load it with Universe then this little fix is needed to the Universes client.
I just put a couple of mods into a Universe in the Installer repo, in the hope that you might pick up on the desirable changes at some point.
best regards
Keith