On Fri, Oct 10, 2008 at 02:31:49PM +0200, St?phane Ducasse wrote:
I would like to be able to get rid of PLF for loading MC1.6 or friend.
There is a good reason that LPF exists. Monticello is by far the flakiest package to load with Monticello. Unless you are using an atomic loader, you are changing the code of Monticello while running Monticello, and it can and does fail in unpredictable ways. LPF uses a two-phase process, where Monticello is loaded _twice_, first from file-outs, then from .mcz's to make it work reliably. You can see the script responsible for this bit of hackery at: http://installer.pbwiki.org/LevelPlayingField-Monticello15 On top of that, Monticello, as of 3.9, depends on Traits, and so Monticello does not work correctly in images outside the 3.9 tree. So LPF, in order to load MC into anything other than 3.9 and above, has a backport package whereby enough of Traits and Pragma are stubbed out for Monticello to work in all other images. There are two backports, one for Croquet, and one for everything else: http://installer.pbwiki.org/LevelPlayingField-Croquet1:0beta http://installer.pbwiki.org/LevelPlayingField-Squeak3:8 Furthermore, LPF applies several bug fixes to things outside Monticello and PackageInfo to make it work more reliably. You can see which bugs are fixed by browsing the script: http://installer.pbwiki.org/LevelPlayingField If you look at that page, you can see that Monticello 1.5 is supported on 15 different versions of Squeak, which, I think, is quite a feat Once you have bootstrapped MC1.6, LPF becomes unnecessary, since you can now upgrade Monticello anytime, since the loader is atomic. MC1.5 has a non-atomic loader, so still requires LPF for reliable upgrades. so, once MC1.6 is in Pharo, you won't need LPF anymore. MC1.6 has made pretty good progress. It is very reliable, but I still haven't made it work with Traits. I use MC1.6 exclusively. MC1.6 is just MC1.5 with the non-atomic loader replaced with an atomic loader dependent on SystemEditor. The atomic loader is included with MC1.5, but is disabled. To load it, load SystemEditor, then enable the preference #useMonticelloAtomicLoader : http://installer.pbwiki.org/Monticello16-Beta Hopefully, that explains what LPF is all about. I realize you may not like the way it is implemented, as scripts on a wiki page. I'm working on that. I'm working on a build script that could build Monticello-1.5.x.sar that includes most everything in LPF, but with no dependency on Installer. In the meantime, here are the precise steps in order to load MC1.5 into Pharo, derived from LPF: Recommended fix: 1. Install the fix for bug 7131 Required fix: 1. Install the fix for bug 7205 To install or upgrade MC1.5: 1. Load the latest PackageInfo-Base using either a file-out, or using MczInstaller, but *NOT* using Monticello 2. Load the latest Monticello.impl using a file-out, or using MczInstaller, but *NOT* using Monticello 3. Load the latest PackageInfo-Base again, this time using Monticello 4. Load the latest Monticello.impl again, this time using Monticello After installing MC1.5 for the first time, clear all MC caches of MC 1.0 leftovers: (MCPackage named: 'Monticello') workingCopy unregister! (MCPackage named: 'PackageInfo') workingCopy unregister! MCMethodDefinition freeSomeSpace! MCFileBasedRepository freeSomeSpace! DataStream initialize! To switch from MC1.5 to MC1.6: 1. Install the latest SystemEditor 2. Enable the preference #useMonticelloAtomicLoader To upgrade MC1.6: 1. Install the latest SystemEditor 2. Install the latest PackageInfo-Base 3. Install the latest Monticello.impl -- Matthew Fulmer -- http://mtfulmer.wordpress.com/