[squeak-dev] Too many update configs in trunk?

Levente Uzonyi leves at elte.hu
Thu Jun 9 22:18:26 UTC 2011


On Thu, 9 Jun 2011, Bert Freudenberg wrote:

> Hi folks,
>
> I just tried to update an older trunk image to the current one. It took ages.
>
> I have the impression that people are committing way more update configs than necessary. These are not cheap, but they force an incremental update process. Instead of just loading the latest version, they force me to load many many intermediate versions. I cannot imagine it is necessary to have so many. We are close to 200 now.

The intermediate versions for some packages have to be loaded otherwise 
your image may break.

>
> Normally we only need a new config map when the load order of packages needs to change. But I see many configs where the order does not change at all. Attached below.
>
> Sometimes it might be necessary to force a specific version to be loaded before a subsequent version. But is that really necessary that often?

In most cases it's necessary. Before update-ul.16x.mcm I didn't rely on 
the package order inside mcms, so some mcms could have been avoided, but I 
guess their number is less than 10.

>
> If it is indeed necessary, then we need to figure out a way to only force-loading a specific package, not all packages. That would speed up the updates quite a bit.

If we can mark the packages which require a specific version to be loaded, 
then we'll have the faster update process.
One possible way is to only include those packages in the mcms which 
require a specific version. At the end of the update process update to the 
latest version all in-image packages which are also present in the 
repository. But changing the update process by the update process is a 
PITA as Chris found it out recently.


Levente

<rant>
Try updating a Pharo image and you'll see how snappy our update process 
is.
</rant>

>
>
> - Bert -
>
>
> ----
> update-ul.118.mcm
> ----
> update-ul.119.mcm
> ----
> update-nice.120.mcm
> ----
> update-nice.121.mcm
> ----
> update-ul.122.mcm
> ----
> update-ul.123.mcm
> ----
> update-ul.124.mcm
> ----
> update-nice.125.mcm
> ----
> update-nice.126.mcm
> ----
> update-nice.127.mcm
> ----
> update-ar.128.mcm
> + Monticello
> Compiler
> EToys
> Exceptions
> Files
> FlexibleVocabularies
> Graphics
> GraphicsTests
> Installer-Core
> Kernel
> KernelTests
> MonticelloConfigurations
> - Monticello
> ----
> update-ar.129.mcm
> ----
> update-ar.130.mcm
> ----
> update-nice.131.mcm
> ----
> update-nice.132.mcm
> ----
> update-ul.133.mcm
> ----
> update-laza.134.mcm
> ----
> update-nice.135.mcm
> ----
> update-nice.136.mcm
> ----
> update-ul.137.mcm
> ----
> update-ul.138.mcm
> + Kernel
> Compiler
> EToys
> Exceptions
> Files
> FlexibleVocabularies
> Graphics
> GraphicsTests
> Installer-Core
> - Kernel
> ----
> update-ar.139.mcm
> + System
> Morphic
> Multilingual
> MorphicExtras
> MorphicTests
> MultilingualTests
> Nebraska
> Network
> NetworkTests
> PackageInfo-Base
> PreferenceBrowser
> Protocols
> SMBase
> SMLoader
> ST80
> SUnit
> SUnitGUI
> ScriptLoader
> Services-Base
> Sound
> - System
> ----
> update-nice.140.mcm
> ----
> update-ul.141.mcm
> ----
> update-ul.142.mcm
> ----
> update-nice.143.mcm
> ----
> update-ul.144.mcm
> ----
> update-ar.145.mcm
> ----
> update-ul.146.mcm
> ----
> update-bf.147.mcm
> + HelpSystem-Core
> + HelpSystem-Tests
> + Help-Squeak-Project
> ----
> update-ul.148.mcm
> ----
> update-ar.149.mcm
> ----
> update-nice.150.mcm
> ----
> update-ar.151.mcm
> + Network
> Collections
> CollectionsTests
> Compression
> Monticello
> Kernel
> Compiler
> EToys
> Exceptions
> Files
> FlexibleVocabularies
> Graphics
> GraphicsTests
> Installer-Core
> KernelTests
> MonticelloConfigurations
> System
> Morphic
> Multilingual
> MorphicExtras
> MorphicTests
> MultilingualTests
> Nebraska
> - Network
> ----
> update-ar.152.mcm
> + Compression
> Collections
> CollectionsTests
> - Compression
> ----
> update-ul.153.mcm
> ----
> update-ul.154.mcm
> ----
> update-ul.155.mcm
> ----
> update-ul.156.mcm
> ----
> update-ul.157.mcm
> ----
> update-ul.158.mcm
> ----
> update-ul.159.mcm
> ----
> update-ul.160.mcm
> ----
> update-ul.161.mcm
> ----
> update-ul.162.mcm
> ----
> update-ul.163.mcm
> ----
> update-dtl.164.mcm
> + Help-Squeak-TerseGuide
> ----
> update-ul.165.mcm
> ----
> update-ul.166.mcm
> ----
> update-ul.167.mcm
> ----
> update-ul.168.mcm
> ----
> update-nice.169.mcm
> ----
> update-dtl.170.mcm
> + SystemReporter
> ----
> update-ul.171.mcm
> ----
> update-ul.172.mcm
> ----
> update-ul.173.mcm
> ----
> update-ul.174.mcm
> ----
> update-ul.175.mcm
> ----
> update-dtl.176.mcm
> ----
> update-ul.177.mcm
> + BalloonTests
> ----
> update-ul.178.mcm
> ----
> update-cmm.179.mcm
> + TrunkScript
> ----
> update-cmm.180.mcm
> - TrunkScript
> ----
> update-ul.182.mcm
> ----
> update-cmm.183.mcm
> ----
> update-nice.184.mcm
> ----
> update-ul.185.mcm
> ----
> update-ul.186.mcm
> ----
> update-ul.187.mcm
> ----
> update-kb.188.mcm
> ----
> update-nice.189.mcm
> ----
> update-ul.190.mcm
> ----
> update-ul.191.mcm
>
>
> repo := MCRepositoryGroup default repositories detect: [:r | r description = 'http://source.squeak.org/trunk'].
> updates := repo allFileNames select: [ :f | (f beginsWith: 'update-') and: [f endsWith: '.mcm'] ].
> updates := updates asSortedCollection: [ :a :b | (a allButLast: 4) numericSuffix < (b allButLast: 4) numericSuffix].
> Transcript clear.
> updates do: [ :update |
> 	Transcript show: '----'; cr; show: update; cr.
> 	config := repo versionNamed: update.
> 	pkgs := String streamContents: [:s | config dependencies do: [:dep | s nextPutAll: dep package name; cr] ].
> 	prev ifNotNil: [
> 		context := nil.
> 		(TextDiffBuilder from: prev to: pkgs)
> 			patchSequenceDoIfMatch: [ :string | context ifNotNil: [context := context, string ] ]
> 			ifInsert: [ :string | context ifNotNil: [Transcript show: context]. Transcript show: '+ ', string. context := '']
> 			ifRemove: [ :string | context ifNotNil: [Transcript show: context]. Transcript show: '- ', string. context := ''].
> 		].
> 	prev := pkgs].
>
>
>
>



More information about the Squeak-dev mailing list