<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>yeah, i ended up doing this...<br><br>--&nbsp;<div>Tobias Pape</div><div>sent from a mobile device</div></div><div><br>Am 30.12.2013 um 20:23 schrieb karl ramberg &lt;<a href="mailto:karlramberg@gmail.com">karlramberg@gmail.com</a>&gt;:<br><br></div><blockquote type="cite"><div><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Dec 29, 2013 at 5:28 PM, Tobias Pape <span dir="ltr">&lt;<a href="mailto:Das.Linux@gmx.de" target="_blank">Das.Linux@gmx.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi<br>
<br>
[Below, a "fix" to remove those obsoletes…]<br>
<div class="im"><br>
On 29.12.2013, at 14:15, Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt; wrote:<br>
<br>
&gt; On 29 December 2013 12:12, Tobias Pape &lt;<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>&gt; wrote:<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; I just took the todays Trunk image (Squeak4.5-13148#712) (NameVersion-Update#CIJob)<br>
&gt;<br>
&gt; Ah, that's nice &amp; specific! Thanks!<br>
</div>(I wrote this mail prior to the other and hoped the order<br>
would stick)<br>
<div class="im"><br>
&gt; (Nit: we might as well not bother<br>
&gt; with update numbers, because our versioning is broken (*). The<br>
&gt; SqueakTrunk builds' TrunkImage artifacts will have an "update number"<br>
&gt; hundreds lower than a "full fat" image.<br>
&gt;<br>
&gt; (*) It's broken because an update number doesn't map in any meaningful<br>
&gt; way to what's in the image. "Update number" just means "the sum of all<br>
&gt; MC numbers of all packages in the latest update map that this image<br>
&gt; currently contains." If your Collections package is one ahead of trunk<br>
&gt; (because you have a local hack) while your Kernel package is one<br>
&gt; behind, you have _the same update number_.<br>
<br>
</div>Which is true.<br>
However, for the typically downloaded half-fat TrunkImage from FTP or jenkins,<br>
it is meaningful :)<br>
I think it is comparable to the local revision number in hg: Not meaningful<br>
around the globe but one can work with it in several scenarios.<br>
<div class="im"><br>
<br>
&gt;<br>
&gt;&gt; and ran<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;SystemNavigation default obsoleteBehaviors<br>
&gt;&gt; and got<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;{AnObsoleteBlueSmallLandColorTheme . AnObsoleteSmallLandColorTheme . AnObsoleteSmallLandColorTheme class . AnObsoleteBlueSmallLandColorTheme class . AnObsoleteToolBuilderTests class . AnObsoleteToolBuilderTests . AnObsoleteBindingTest class . AnObsoleteBindingTest}<br>

&gt;&gt;<br>
&gt;&gt; We should fix that.<br>
&gt;&gt; It breaks at least<br>
&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp;Smalltalk unloadReloadablePackages<br>
&gt;<br>
&gt; It also manifests as failing tests:<br>
&gt; * <a href="http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testNoObsoleteClasses/" target="_blank">http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testNoObsoleteClasses/</a><br>

&gt; * <a href="http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testUndeclared/" target="_blank">http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testUndeclared/</a><br>

<br>
</div>Well..<br>
<div class="im"><br>
&gt;<br>
&gt;&gt; What is the best way?<br>
&gt;&gt; A postscript in a System Package change?<br>
&gt;<br>
&gt; I've been hoping someone would tell me! But Chris told us that the<br>
&gt; SqueakTrunk base image's state is a little broken, and that he doesn't<br>
&gt; see these tests failing. That would be well worth verifying. If so,<br>
&gt; the solution is to hand-roll another base image for SqueakTrunk. I<br>
&gt; have a candidate image that I've not quite finished preparing.<br>
&gt;<br>
&gt; As an aside, I think the reason the SqueakTrunk base image broke, at<br>
&gt; least in part, was caused by Nicolas and I adding new _necessary_<br>
&gt; packages to trunk. For instance, when I factored out<br>
&gt; ToolBuilder-Tests, the base image was told not to update packages it<br>
&gt; didn't have, so as not to reload unloaded packages (ST80, Universes,<br>
&gt; ...)... but that also meant it didn't get UpdateStream and<br>
&gt; ToolBuilder-Tests.<br>
<br>
<br>
</div>Ok. Sounds reasonable.<br>
Apart from that, I try to get the image in a state I can do<br>
&gt;&gt; unloadReloadablePackages<br>
[1]<br>
<br>
In that process I crashed the current cog vm several times[2]<br>
as well as other vms with out-of-memory issues.<br>
(You can try it:<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors chasePointers<br>
)<br>
Sadly,<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors explorePointers<br>
yields no meaningful output :(<br>
<br></blockquote><div>It seems PointersExplorer works on single objects, not a array of objects. So if you look at each item in the list of obsoletes you get valid results:</div><div><br></div><div>SystemNavigation default obsoleteBehaviors first explorePointers</div>
<div><br></div><div>Cheers,</div><div>Karl</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Ok. Different approach. The color theme stuff.<br>
By clicking around I found, ColorTheme's CurrentTheme held unto<br>
AnObsoleteBlueSmallLandColorTheme. Hence:<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors size. "8"<br>
&nbsp; &nbsp; &nbsp; &nbsp; ColorTheme current: nil.<br>
&nbsp; &nbsp; &nbsp; &nbsp; ColorTheme current.<br>
&nbsp; &nbsp; &nbsp; &nbsp; Behavior flushObsoleteSubclasses.<br>
&nbsp; &nbsp; &nbsp; &nbsp; Smalltalk garbageCollect; garbageCollect.<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors size. " 4"<br>
<br>
So, 4 less, but the Menus look different now.<br>
<br>
Here, my approach on finding the remaining culprits.<br>
&nbsp; &nbsp; &nbsp; &nbsp; [| haystack |<br>
&nbsp; &nbsp; &nbsp; &nbsp; "my pointer finder"<br>
&nbsp; &nbsp; &nbsp; &nbsp; haystack := &nbsp;[:needle | SystemNavigation default allObjectsSelect: [:obj | obj pointsTo: needle]].<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; "First, onto the binding test."<br>
&nbsp; &nbsp; &nbsp; &nbsp; (haystack value: SystemNavigation default obsoleteBehaviors last " AnObsoleteBindingTest"<br>
&nbsp; &nbsp; &nbsp; &nbsp; ) in: [:stuff |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "only 2nd and 3d seem interesting"<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (((stuff first: 3) last: 2) collect: [:needle2 | haystack value: needle2]) in: [:stuff2 |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "first of 1st is interesting"<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (haystack value: stuff2 first first) in: [:stuff3 |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "first is interesting"<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (haystack value: stuff3 first) "there's an export..." in: [:stuff4 |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (haystack value: stuff4 first)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Smalltalk Enviornment, ie Environment default !!"<br>
&nbsp; &nbsp; &nbsp; &nbsp; ]]]].<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Ok, see if the culprit is there"<br>
&nbsp; &nbsp; &nbsp; &nbsp; [ |assocs |<br>
&nbsp; &nbsp; &nbsp; &nbsp; assocs := (Environment default exports instVarNamed: 'namespace') associationsSelect: [:assoc |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; assoc value isBehavior<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifTrue: [assoc value isObsolete]<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifFalse: [false]]. "an IdentityDictionary(#BindingTest-&gt;AnObsoleteBindingTest )"<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; assocs do: [:a | Environment default exports forgetName: a key]<br>
&nbsp; &nbsp; &nbsp; &nbsp; ] value.<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; Behavior flushObsoleteSubclasses.<br>
&nbsp; &nbsp; &nbsp; &nbsp; Smalltalk garbageCollect; garbageCollect.<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors size. " 2"<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Ok, 2 to go"<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Onto the toolbuildertest"<br>
&nbsp; &nbsp; &nbsp; &nbsp; (haystack value: SystemNavigation default obsoleteBehaviors first "AnObsoleteToolBuilderTests")<br>
&nbsp; &nbsp; &nbsp; &nbsp; in: [:stuff5 |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stuff5 second " SUnitToolBuilderTests class" in: [:suspicious |<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; suspicious superclass " AnObsoleteToolBuilderTests class"<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Gotcha!"] ].<br>
&nbsp; &nbsp; &nbsp; &nbsp; "I don't know... redo?"<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; "Redo.. we add artificial instvar here to assure new class."<br>
&nbsp; &nbsp; &nbsp; &nbsp; ToolBuilderTests subclass: #SUnitToolBuilderTests<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; instanceVariableNames: 'foo'<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classVariableNames: ''<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; poolDictionaries: ''<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; category: 'SUnitGUI-ToolBuilder'.<br>
&nbsp; &nbsp; &nbsp; &nbsp; ToolBuilderTests subclass: #SUnitToolBuilderTests<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; instanceVariableNames: ''<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; classVariableNames: ''<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; poolDictionaries: ''<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; category: 'SUnitGUI-ToolBuilder'.<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; Behavior flushObsoleteSubclasses.<br>
&nbsp; &nbsp; &nbsp; &nbsp; Smalltalk garbageCollect; garbageCollect.<br>
&nbsp; &nbsp; &nbsp; &nbsp; SystemNavigation default obsoleteBehaviors size. " 0"<br>
Yay!<br>
<br>
I attached a better Script to handle this and on the way created the<br>
name uncle class :P<br>
<br>
Shall I make a System revision with post script?<br>
<br>
Best<br>
&nbsp; &nbsp; &nbsp; &nbsp; -Tobias<br>
<br>
<br>
<br>
[1] Nit: unloadAllKnownPackages is gone forever, right?<br>
[2] See vm-dev<br>
<br>
<br><br>
<br><br>
<br></blockquote></div><br></div></div>
</div></blockquote><blockquote type="cite"><div><span></span><br></div></blockquote></body></html>