[squeak-dev] Obsoletes...
Tobias Pape
Das.Linux at gmx.de
Mon Dec 30 21:43:52 UTC 2013
yeah, i ended up doing this...
--
Tobias Pape
sent from a mobile device
> Am 30.12.2013 um 20:23 schrieb karl ramberg <karlramberg at gmail.com>:
>
>
>
>
>> On Sun, Dec 29, 2013 at 5:28 PM, Tobias Pape <Das.Linux at gmx.de> wrote:
>> Hi
>>
>> [Below, a "fix" to remove those obsoletes…]
>>
>> On 29.12.2013, at 14:15, Frank Shearar <frank.shearar at gmail.com> wrote:
>>
>> > On 29 December 2013 12:12, Tobias Pape <Das.Linux at gmx.de> wrote:
>> >> Hi all,
>> >>
>> >> I just took the todays Trunk image (Squeak4.5-13148#712) (NameVersion-Update#CIJob)
>> >
>> > Ah, that's nice & specific! Thanks!
>> (I wrote this mail prior to the other and hoped the order
>> would stick)
>>
>> > (Nit: we might as well not bother
>> > with update numbers, because our versioning is broken (*). The
>> > SqueakTrunk builds' TrunkImage artifacts will have an "update number"
>> > hundreds lower than a "full fat" image.
>> >
>> > (*) It's broken because an update number doesn't map in any meaningful
>> > way to what's in the image. "Update number" just means "the sum of all
>> > MC numbers of all packages in the latest update map that this image
>> > currently contains." If your Collections package is one ahead of trunk
>> > (because you have a local hack) while your Kernel package is one
>> > behind, you have _the same update number_.
>>
>> Which is true.
>> However, for the typically downloaded half-fat TrunkImage from FTP or jenkins,
>> it is meaningful :)
>> I think it is comparable to the local revision number in hg: Not meaningful
>> around the globe but one can work with it in several scenarios.
>>
>>
>> >
>> >> and ran
>> >> SystemNavigation default obsoleteBehaviors
>> >> and got
>> >> {AnObsoleteBlueSmallLandColorTheme . AnObsoleteSmallLandColorTheme . AnObsoleteSmallLandColorTheme class . AnObsoleteBlueSmallLandColorTheme class . AnObsoleteToolBuilderTests class . AnObsoleteToolBuilderTests . AnObsoleteBindingTest class . AnObsoleteBindingTest}
>> >>
>> >> We should fix that.
>> >> It breaks at least
>> >> Smalltalk unloadReloadablePackages
>> >
>> > It also manifests as failing tests:
>> > * http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testNoObsoleteClasses/
>> > * http://build.squeak.org/job/SqueakTrunk/712/testReport/junit/Tests.Release/ReleaseTest/testUndeclared/
>>
>> Well..
>>
>> >
>> >> What is the best way?
>> >> A postscript in a System Package change?
>> >
>> > I've been hoping someone would tell me! But Chris told us that the
>> > SqueakTrunk base image's state is a little broken, and that he doesn't
>> > see these tests failing. That would be well worth verifying. If so,
>> > the solution is to hand-roll another base image for SqueakTrunk. I
>> > have a candidate image that I've not quite finished preparing.
>> >
>> > As an aside, I think the reason the SqueakTrunk base image broke, at
>> > least in part, was caused by Nicolas and I adding new _necessary_
>> > packages to trunk. For instance, when I factored out
>> > ToolBuilder-Tests, the base image was told not to update packages it
>> > didn't have, so as not to reload unloaded packages (ST80, Universes,
>> > ...)... but that also meant it didn't get UpdateStream and
>> > ToolBuilder-Tests.
>>
>>
>> Ok. Sounds reasonable.
>> Apart from that, I try to get the image in a state I can do
>> >> unloadReloadablePackages
>> [1]
>>
>> In that process I crashed the current cog vm several times[2]
>> as well as other vms with out-of-memory issues.
>> (You can try it:
>> SystemNavigation default obsoleteBehaviors chasePointers
>> )
>> Sadly,
>> SystemNavigation default obsoleteBehaviors explorePointers
>> yields no meaningful output :(
>>
> 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:
>
> SystemNavigation default obsoleteBehaviors first explorePointers
>
> Cheers,
> Karl
>>
>> Ok. Different approach. The color theme stuff.
>> By clicking around I found, ColorTheme's CurrentTheme held unto
>> AnObsoleteBlueSmallLandColorTheme. Hence:
>>
>> SystemNavigation default obsoleteBehaviors size. "8"
>> ColorTheme current: nil.
>> ColorTheme current.
>> Behavior flushObsoleteSubclasses.
>> Smalltalk garbageCollect; garbageCollect.
>> SystemNavigation default obsoleteBehaviors size. " 4"
>>
>> So, 4 less, but the Menus look different now.
>>
>> Here, my approach on finding the remaining culprits.
>> [| haystack |
>> "my pointer finder"
>> haystack := [:needle | SystemNavigation default allObjectsSelect: [:obj | obj pointsTo: needle]].
>>
>> "First, onto the binding test."
>> (haystack value: SystemNavigation default obsoleteBehaviors last " AnObsoleteBindingTest"
>> ) in: [:stuff |
>> "only 2nd and 3d seem interesting"
>> (((stuff first: 3) last: 2) collect: [:needle2 | haystack value: needle2]) in: [:stuff2 |
>> "first of 1st is interesting"
>> (haystack value: stuff2 first first) in: [:stuff3 |
>> "first is interesting"
>> (haystack value: stuff3 first) "there's an export..." in: [:stuff4 |
>> (haystack value: stuff4 first)
>> "Smalltalk Enviornment, ie Environment default !!"
>> ]]]].
>>
>> "Ok, see if the culprit is there"
>> [ |assocs |
>> assocs := (Environment default exports instVarNamed: 'namespace') associationsSelect: [:assoc |
>> assoc value isBehavior
>> ifTrue: [assoc value isObsolete]
>> ifFalse: [false]]. "an IdentityDictionary(#BindingTest->AnObsoleteBindingTest )"
>>
>> assocs do: [:a | Environment default exports forgetName: a key]
>> ] value.
>>
>> Behavior flushObsoleteSubclasses.
>> Smalltalk garbageCollect; garbageCollect.
>> SystemNavigation default obsoleteBehaviors size. " 2"
>>
>> "Ok, 2 to go"
>> "Onto the toolbuildertest"
>> (haystack value: SystemNavigation default obsoleteBehaviors first "AnObsoleteToolBuilderTests")
>> in: [:stuff5 |
>> stuff5 second " SUnitToolBuilderTests class" in: [:suspicious |
>> suspicious superclass " AnObsoleteToolBuilderTests class"
>> "Gotcha!"] ].
>> "I don't know... redo?"
>>
>> "Redo.. we add artificial instvar here to assure new class."
>> ToolBuilderTests subclass: #SUnitToolBuilderTests
>> instanceVariableNames: 'foo'
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'SUnitGUI-ToolBuilder'.
>> ToolBuilderTests subclass: #SUnitToolBuilderTests
>> instanceVariableNames: ''
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'SUnitGUI-ToolBuilder'.
>>
>> Behavior flushObsoleteSubclasses.
>> Smalltalk garbageCollect; garbageCollect.
>> SystemNavigation default obsoleteBehaviors size. " 0"
>> Yay!
>>
>> I attached a better Script to handle this and on the way created the
>> name uncle class :P
>>
>> Shall I make a System revision with post script?
>>
>> Best
>> -Tobias
>>
>>
>>
>> [1] Nit: unloadAllKnownPackages is gone forever, right?
>> [2] See vm-dev
>>
>>
>>
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131230/970258d1/attachment.htm
More information about the Squeak-dev
mailing list
|