El mié, 13-01-2010 a las 09:39 -0600, Chris Muller escribió:
Hi Miguel, thanks for doing this! I, unfortunately, have not had time to look into Metacello; does it *finally* (after all these years) now address the issues of package-dependencies? Great!
- The WriteBarrier depends on class ByteCodeGenerator that isn't
included in Pharo. It appears to be on NewCompiler. Should I add NewCompiler as a dependency for Magma, or is writebarrier useful without NewCompiler.
I believe WriteBarrier needs NewCompiler to generate the overriding methods. However, I wouldn't add it as a dependency because it is an optional feature that some folks may not wish to have. I'm not even sure that NewCompiler / WriteBarrier even work at all in Pharo, so I would not have it as a dependency.
Ok, by the moment I am leaving the dependency on NewCompiler out of the configuration. So Magma installs WriteBarrier without NewCompiler. Lets see if someone reports a bug with this. Anyway this is how the current .mcm works, only installs WriteBarrier but not NewCompiler.
And indeed, NewCompiler is currently being rewritten so it doesn't work nor in Squeak nor Pharo. When stable I'll revisit this issue.
- The Magma tester project depends on ProjectHistory that doesn't exist
anymore in Pharo. Maybe this should be a conditional in Magma or the test modified to not use this class, at least in Pharo.
This reference to ProjectHistory should be converted to a Symbol (e.g., (Smalltalk hasClassNamed: #ProjectHistory) ifTrue: [ (Smalltalk classNamed: #ProjectHistory) ... ].
Ok, should I make the change and send a patch to you or you're adding it to the Magma code?
- Ma Armored Code depends on OSProcess but the mcm doesn't includes it.
The dependency on OSProcess should be removed in a similar manner.
Yes this dependency is only for when the user install Magma Tester, not Magma Server or Magma Client.
Now, as I said, I am doing the Metacello configuration for loading Magma in Pharo (and maybe also in Squeak) and this will permit to load Tester, Server and Client, WITH ALL the dependencies needed. This means that when loading tester will load OSProcess and when loading WriteBarrier will load also NewCompiler.
I think the OSProcess for MagmaTester sounds pretty good; I just can't imagine testing without it.
Yes, this will be installed automatically when loading Magma Tester only.
I'm almost inclined, however, to want to even remove WriteBarrier from the standard installation, make it optional. The user can then load it separately, if they wish. In that case, NewCompiler a dependency of WriteBarrier, permitting a one-click install of the WriteBarrier option, sounds good. However, I do not have time to support the WriteBarrier package for Pharo.
Ok, I will try to add a ConfigurationOfWriteBarrier that takes care of its own dependencies. Meanwhile, I leave the WriteBarrier without NewCompiler in the Magma installation.
- Chris