[Pharo-project] Installer refactor
I spent most of the day yesterday refactoring Installer. I split it up into 14 classes, so now it should be a bit easier to understand. I'll fix badly categorized methods and add some comments. -- Matthew Fulmer -- http://mtfulmer.wordpress.com/
Excellent! I will look at that. I never thought there were 14 classes :) You added aslo a factory? so that Installer squeaksource still work I imagine? Stef On Oct 10, 2008, at 4:24 AM, Matthew Fulmer wrote:
I spent most of the day yesterday refactoring Installer. I split it up into 14 classes, so now it should be a bit easier to understand. I'll fix badly categorized methods and add some comments.
-- Matthew Fulmer -- http://mtfulmer.wordpress.com/
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Excellent!!! Alexandre On 10 Oct 2008, at 04:24, Matthew Fulmer wrote:
I spent most of the day yesterday refactoring Installer. I split it up into 14 classes, so now it should be a bit easier to understand. I'll fix badly categorized methods and add some comments.
-- Matthew Fulmer -- http://mtfulmer.wordpress.com/
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
On Fri, Oct 10, 2008 at 07:31:23AM +0200, St?phane Ducasse wrote:
Excellent! I will look at that. I never thought there were 14 classes :)
You added aslo a factory? so that Installer squeaksource still work I imagine?
But of course! it wouldn't be installer if the syntax changed. It still runs LPF fine, which is the main thing -- Matthew Fulmer -- http://mtfulmer.wordpress.com/
On Oct 10, 2008, at 10:27 AM, Matthew Fulmer wrote:
On Fri, Oct 10, 2008 at 07:31:23AM +0200, St?phane Ducasse wrote:
Excellent! I will look at that. I never thought there were 14 classes :)
You added aslo a factory? so that Installer squeaksource still work I imagine?
But of course! it wouldn't be installer if the syntax changed.
:) I will have to have a look at the code :) I plan to harvest some kernel extensions as soon as I have some time after the etoy cleanup. I would like to be able to get rid of PLF for loading MC1.6 or friend.
It still runs LPF fine, which is the main thing
-- Matthew Fulmer -- http://mtfulmer.wordpress.com/
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
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/
Thanks matthew for all the explanation. You know we are careful because all our infrastructure depends on MC. :) Now about the two steps process this is important to have it because it is important to be able in the future to have an image without MC. Or at least to keep that in mind. I will look at Kernel-Extensions and the fixes you mention. Could you add them in the bug tracking system? This way we increase the chance that we really check them. Stef
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/
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Matthew could you sign the license agreement (MIT) of pharo? Stef On Oct 10, 2008, at 6:04 PM, Matthew Fulmer wrote:
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/
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
participants (3)
-
Alexandre Bergel -
Matthew Fulmer -
Stéphane Ducasse