<div dir="ltr">Hi Bernhard,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Aug 5, 2014 at 10:26 AM, Bernhard Pieber <span dir="ltr">&lt;<a href="mailto:bernhard@pieber.com" target="_blank">bernhard@pieber.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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.<br>

<br>
So far I did not succeed. :-(<br>
<br>
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.<br>

<br>
What seems to happen is the following:<br>
1. Some code is loaded which breaks mcz file writing.<br>
2. That code is used to copy package versions from trunk to the package-cache.<br>
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&#39;t find EOCD position&quot;<br>
<br>
I used the following code to find the corrupt files:<br>
MCCacheRepository default allFileNames select: [:each |<br>
        [MCCacheRepository default versionInfoFromFileNamed: each.<br>
        false] on: Error do: [  true]].<br>
<br>
What if I preload the package-cache with the correct version of all corrupt files from trunk before I attempt to update?<br></blockquote><div><br></div><div>What OS are you running on? </div><div><br></div><div>I don&#39;t know if this helps, but, at least on Mac OS X, my image build script from Cog works to the extent that only Environments and Monticello are marked dirty.  Note that Monticello is not actually dirty, and Environments is dirty because it has two ancestors, nice.47 &amp; cmm.51 (as you report below).  You can find the script here:</div>
<div><br></div><div>        <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/image/">http://www.squeakvm.org/svn/squeak/branches/Cog/image/</a></div><div>                BuildSqueakTrunkImage.st    - the update script<br>
</div><div>                buildspurtrunkimage.sh          - the script that downloads Squeak-4.5-All-in-One, updates it to trunk, builds a VMMaker image, and uses that to convert the trunk image to Spur</div><div> </div>
<div><div>&quot;Change the update stream to trunk and update&quot;</div><div>[MCMcmUpdater</div><div>        defaultUpdateURL: &#39;<a href="http://source.squeak.org/trunk">http://source.squeak.org/trunk</a>&#39;;</div><div>
        updateFromServer] valueSupplyingAnswer: true.</div><div><br></div><div>Smalltalk snapshot: true andQuit: true</div></div><div><br></div><div>The script has been tested on Mac and Linux.  The update process starts with an empty package cache.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I identified all corrupt versions, cleared the package-cache and preloaded it with the following code:<br>

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

        do: [:each | MCRepository trunk versionNamed: each].<br>
<br>
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.<br>
<br>
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.<br>
<br>
In the clean trunk image which I managed to create yesterday the package Environments (nice.47, cmm.51) is not dirty.<br>
<br>
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?<br>
<br>
Cheers,<br>
Bernhard<br>
<br>
Am 05.08.2014 um 11:32 schrieb Bernhard Pieber &lt;<a href="mailto:bernhard@pieber.com">bernhard@pieber.com</a>&gt;:<br>
&gt; Thanks for the update, Chris!<br>
&gt;<br>
&gt; 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.)<br>
&gt;<br>
&gt; That&#39;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 &quot;Bits size mismatch&quot; error in ZipWriteStream for the package version Morphic-cmm.730.<br>

&gt;<br>
&gt; Go figure! ;-(<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Bernhard<br>
&gt;<br>
&gt; Am 04.08.2014 um 20:40 schrieb Chris Muller &lt;<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>&gt;:<br>
&gt;&gt; On Mon, Aug 4, 2014 at 10:09 AM, Bernhard Pieber &lt;<a href="mailto:bernhard@pieber.com">bernhard@pieber.com</a>&gt; wrote:<br>
&gt;&gt; Thanks for the quick responses! I am getting closer, thanks to Chris&#39; suggestion.<br>
&gt;&gt;<br>
&gt;&gt; I took Squeak4.5-13680.zip from <a href="ftp://ftp.squeak.org/4.5/" target="_blank">ftp://ftp.squeak.org/4.5/</a> with all updates from squeak4.5 applied. That is update 13687.<br>
&gt;&gt;<br>
&gt;&gt; Then I emptied the package-cache, changed the update URL to trunk and did &quot;Update Squeak&quot;.<br>
&gt;&gt;<br>
&gt;&gt; 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&#39;t trunk packages always have exactly one version name?<br>
&gt;&gt;<br>
&gt;&gt; Yes, they should.  Nicolas branched nice.47 off of ul.46 to fix the update stream.  Someone should probably resave Environments again, Nicolas?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; However, package Morphic is now dirty. Its version name is (kfr.733, cmm.738). The patch browser shows only two changes.<br>
&gt;&gt;<br>
&gt;&gt; Strange -- I could&#39;ve sworn I merged Nicolas&#39; changes.  I saved it again, this one should be cleared up.<br>
&gt;<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>