[squeak-dev] How to get a current clean 4.6 trunk image?

Bernhard Pieber bernhard at pieber.com
Tue Aug 5 17:26:45 UTC 2014

I spent quite some time today to figure out how I managed to create my up-to-date and clean trunk image from the 4.5 release image yesterday.

So far I did not succeed. :-(

What I found out, though, is that the result of loading updates depends on the content of the package-cache. If it is empty it results in the „Error: Bits size mismatch“. If I close the debugger and load updates again I can update until the end. However, the package Environments (nice.46, cmm.51) is dirty. The result looks quite like the Jenkins TrunkImage.

What seems to happen is the following:
1. Some code is loaded which breaks mcz file writing.
2. That code is used to copy package versions from trunk to the package-cache.
3. Those mcz and mcd files seem to be corrupt. When you look at the version in a version inspector you get the infamous „Error: can't find EOCD position"

I used the following code to find the corrupt files:
MCCacheRepository default allFileNames select: [:each |
	[MCCacheRepository default versionInfoFromFileNamed: each.
	false] on: Error do: [	true]].

What if I preload the package-cache with the correct version of all corrupt files from trunk before I attempt to update?

I identified all corrupt versions, cleared the package-cache and preloaded it with the following code:

 #('Tools-eem.525.mcz' 'ShoutCore-ul.42.mcz' 'Tests-fbs.301.mcz' 'SUnit-fbs.100.mcz' 'KernelTests-eem.275.mcz' 'Monticello-eem.594.mcz' 'Collections-nice.574.mcz' 'System-eem.676.mcz' 'MorphicExtras-kfr.150.mcz' 'Tools-eem.524.mcz' 'Kernel-eem.859.mcz' 'CollectionsTests-eem.219.mcz' 'Multilingual-ul.199.mcz' 'Graphics-nice.295.mcz' 'Compression-nice.45.mcz' 'SystemReporter-dtl.23.mcz' 'Help-Squeak-Project-dtl.20.mcz' 'HelpSystem-Core-kfr.62.mcz' 'Tests-fbs.300.mcz' 'Monticello-eem.593.mcz' 'Collections-nice.572.mcz' 'MorphicExtras-kfr.149.mcz' 'Tools-eem.523.mcz' 'MonticelloConfigurations-eem.127.mcz' 'Kernel-eem.857.mcz' 'Compiler-eem.284.mcz' 'Multilingual-nice.198.mcz' 'Tests-nice.299.mcz' 'TraitsTests-nice.14.mcz' 'KernelTests-nice.271.mcz' 'Files-eem.136.mcz' 'Collections-eem.571.mcz' 'Tools-eem.522.mcz' 'Kernel-eem.854.mcz' 'Compiler-eem.283.mcz' 'CollectionsTests-nice.218.mcz' 'Multilingual-nice.196.mcz' 'Compression-nice.42.mcz' 'Kernel-eem.852.mcz' 'CommandLine-fbs.3.mcz' 'Kernel-eem.851.mcz' 'Morphic-cmm.730.mcz' 'Morphic-kfr.733.mcz' 'Morphic-kfr.729.mcz')
	do: [:each | MCRepository trunk versionNamed: each].

After this I can update the 4.5 release image to the last trunk update without a debugger and without creating any more corrupt Monticello files.

However, the package Environments (cmm.51, nice.47) is still dirty, i.e. when I select it, the trunk repository and click the Changes button it turns up a patch browser.

In the clean trunk image which I managed to create yesterday the package Environments (nice.47, cmm.51) is not dirty.

Note the different order of the same ancestors (cmm.51, nice.47) versus (nice.47, cmm.51). Does anyone have an idea, how that difference might have occurred?


Am 05.08.2014 um 11:32 schrieb Bernhard Pieber <bernhard at pieber.com>:
> Thanks for the update, Chris!
> I updated my 13899 image from yesterday and now have a fully up-to-date trunk image where none of the packages is marked as modified. Yay! (The Environments package has two ancestors, though.)
> That's the good news. The bad news is that I cannot reproduce the process how I arrived there anymore. Although I try hard to do exactly the same as yesterday, I always run into the "Bits size mismatch" error in ZipWriteStream for the package version Morphic-cmm.730.
> Go figure! ;-(
> Cheers,
> Bernhard
> Am 04.08.2014 um 20:40 schrieb Chris Muller <asqueaker at gmail.com>:
>> On Mon, Aug 4, 2014 at 10:09 AM, Bernhard Pieber <bernhard at pieber.com> wrote:
>> Thanks for the quick responses! I am getting closer, thanks to Chris' suggestion.
>> I took Squeak4.5-13680.zip from ftp://ftp.squeak.org/4.5/ with all updates from squeak4.5 applied. That is update 13687.
>> Then I emptied the package-cache, changed the update URL to trunk and did "Update Squeak".
>> It updates to 13889. Package Environments is not dirty anymore. Its version number is (cmm.51, nice.47). Is that a problem or not? Shouldn't trunk packages always have exactly one version name?
>> Yes, they should.  Nicolas branched nice.47 off of ul.46 to fix the update stream.  Someone should probably resave Environments again, Nicolas?
>> However, package Morphic is now dirty. Its version name is (kfr.733, cmm.738). The patch browser shows only two changes.
>> Strange -- I could've sworn I merged Nicolas' changes.  I saved it again, this one should be cleared up.

More information about the Squeak-dev mailing list