Empty categories

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Empty categories

Torsten Bergmann
In Boolean there is now an empty category "*eToys-*morphic".
Either it could be removed - or a failure while packaging
(dont know how Monticello behaves with two *).

Any comments?

Shouldnt we run a script on trunk to remove empty
categories to clean up a little bit?

Thx
T.

--
NEU: Mit GMX DSL über 1000,- ¿ sparen!
http://portal.gmx.net/de/go/dsl02

Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Andreas.Raab
Torsten Bergmann wrote:
> In Boolean there is now an empty category "*eToys-*morphic".
> Either it could be removed - or a failure while packaging
> (dont know how Monticello behaves with two *).
>
> Any comments?
>
> Shouldnt we run a script on trunk to remove empty
> categories to clean up a little bit?

Absolutely. Does anyone know where all of these empty *Etoys and
*MorphicExtras categories come from?

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Edgar J. De Cleene
In reply to this post by Torsten Bergmann



On 2/9/10 11:58 AM, "Torsten Bergmann" <[hidden email]> wrote:

> Shouldnt we run a script on trunk to remove empty
> categories to clean up a little bit?

Trying to see if the cleanup I have was in Squeak3.11-8931-alpha.image
originate the attached walkback

The error was with the .cs via drag and drop and selecting code browser
Using message names tool I see no cleanup in image, so I copy paste here.
Come from original code of Ramon Leon and IMHO should be used before any
image go to ftp

!SmalltalkImage methodsFor: 'image cleanup' stamp: 'edc 12/13/2009 08:34'!
cleanup
    "SmalltalkImage current cleanup"
    | tasks |
    Transcript open.
    tasks := OrderedCollection new
                add: [Smalltalk removeEmptyMessageCategories];
               
                add: [Workspace
                        allSubInstancesDo: [:each | each setBindings:
Dictionary new]];
               
                add: [Undeclared removeUnreferencedKeys];
               
                add: [Categorizer sortAllCategories];
               
                add: [Symbol compactSymbolTable];
               
                add: [#(#TheWorldMenu #FileServices #AppRegistry
#Preferences #FileList )
                        do: [:cl | (Smalltalk at: cl) removeObsolete]];
               
                add: [Flaps freshFlapsStart];
               
                add: [MCFileBasedRepository flushAllCaches];
               
                add: [HandMorph releaseCachedState; initForEvents.
                    self fixObsoleteReferences];
               
                add: [Smalltalk forgetDoIts.
                    DataStream initialize.
                    Behavior flushObsoleteSubclasses.
                    "The pointer to currentMethod is not realy needed
                    (anybody care to fix this) and often holds on to
                    obsolete bindings"
                    MethodChangeRecord
                        allInstancesDo: [:each | each noteNewMethod: nil].
                    Smalltalk garbageCollectMost];
                 yourself.
    Utilities
        informUserDuring: [:bar | tasks
                do: [:block |
                    bar value: block printString.
                    [block value]
                        on: Error
                        do: [:error | Transcript show: error;
                                 cr]]].
    SystemNavigation default obsoleteClasses isEmpty
        ifTrue: [SmalltalkImage current saveSession]
        ifFalse: [SystemNavigation default obsoleteClasses
                do: [:each |
                    self halt.
                    [PointerFinder on: each]
                        on: Error
                        do: [:error | Transcript show: error;
                                 cr]]]! !

Edgar




SqueakDebug.log (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Andreas.Raab
Thanks, Edgar! That's a really useful script.

Cheers,
   - Andreas

Edgar J. De Cleene wrote:

>
>
> On 2/9/10 11:58 AM, "Torsten Bergmann" <[hidden email]> wrote:
>
>> Shouldnt we run a script on trunk to remove empty
>> categories to clean up a little bit?
>
> Trying to see if the cleanup I have was in Squeak3.11-8931-alpha.image
> originate the attached walkback
>
> The error was with the .cs via drag and drop and selecting code browser
> Using message names tool I see no cleanup in image, so I copy paste here.
> Come from original code of Ramon Leon and IMHO should be used before any
> image go to ftp
>
> !SmalltalkImage methodsFor: 'image cleanup' stamp: 'edc 12/13/2009 08:34'!
> cleanup
>     "SmalltalkImage current cleanup"
>     | tasks |
>     Transcript open.
>     tasks := OrderedCollection new
>                 add: [Smalltalk removeEmptyMessageCategories];
>                
>                 add: [Workspace
>                         allSubInstancesDo: [:each | each setBindings:
> Dictionary new]];
>                
>                 add: [Undeclared removeUnreferencedKeys];
>                
>                 add: [Categorizer sortAllCategories];
>                
>                 add: [Symbol compactSymbolTable];
>                
>                 add: [#(#TheWorldMenu #FileServices #AppRegistry
> #Preferences #FileList )
>                         do: [:cl | (Smalltalk at: cl) removeObsolete]];
>                
>                 add: [Flaps freshFlapsStart];
>                
>                 add: [MCFileBasedRepository flushAllCaches];
>                
>                 add: [HandMorph releaseCachedState; initForEvents.
>                     self fixObsoleteReferences];
>                
>                 add: [Smalltalk forgetDoIts.
>                     DataStream initialize.
>                     Behavior flushObsoleteSubclasses.
>                     "The pointer to currentMethod is not realy needed
>                     (anybody care to fix this) and often holds on to
>                     obsolete bindings"
>                     MethodChangeRecord
>                         allInstancesDo: [:each | each noteNewMethod: nil].
>                     Smalltalk garbageCollectMost];
>                  yourself.
>     Utilities
>         informUserDuring: [:bar | tasks
>                 do: [:block |
>                     bar value: block printString.
>                     [block value]
>                         on: Error
>                         do: [:error | Transcript show: error;
>                                  cr]]].
>     SystemNavigation default obsoleteClasses isEmpty
>         ifTrue: [SmalltalkImage current saveSession]
>         ifFalse: [SystemNavigation default obsoleteClasses
>                 do: [:each |
>                     self halt.
>                     [PointerFinder on: each]
>                         on: Error
>                         do: [:error | Transcript show: error;
>                                  cr]]]! !
>
> Edgar
>
>
>
> ------------------------------------------------------------------------
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Edgar J. De Cleene



On 2/9/10 6:30 PM, "Andreas Raab" <[hidden email]> wrote:

> Thanks, Edgar! That's a really useful script.
>
> Cheers,
>    - Andreas

I think I send before, but maybe not...
Any idea why drag and drop a .cs into the image raise the error?

Edgar




Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Eliot Miranda-2
In reply to this post by Edgar J. De Cleene


On Tue, Feb 9, 2010 at 11:20 AM, Edgar J. De Cleene <[hidden email]> wrote:



On 2/9/10 11:58 AM, "Torsten Bergmann" <[hidden email]> wrote:

> Shouldnt we run a script on trunk to remove empty
> categories to clean up a little bit?

Trying to see if the cleanup I have was in Squeak3.11-8931-alpha.image
originate the attached walkback

The error was with the .cs via drag and drop and selecting code browser
Using message names tool I see no cleanup in image, so I copy paste here.
Come from original code of Ramon Leon and IMHO should be used before any
image go to ftp

!SmalltalkImage methodsFor: 'image cleanup' stamp: 'edc 12/13/2009 08:34'!
cleanup
   "SmalltalkImage current cleanup"
   | tasks |
   Transcript open.
   tasks := OrderedCollection new
               add: [Smalltalk removeEmptyMessageCategories];

               add: [Workspace
                       allSubInstancesDo: [:each | each setBindings:
Dictionary new]];

               add: [Undeclared removeUnreferencedKeys];

               add: [Categorizer sortAllCategories];

               add: [Symbol compactSymbolTable];

               add: [#(#TheWorldMenu #FileServices #AppRegistry
#Preferences #FileList )
                       do: [:cl | (Smalltalk at: cl) removeObsolete]];

               add: [Flaps freshFlapsStart];

               add: [MCFileBasedRepository flushAllCaches];

               add: [HandMorph releaseCachedState; initForEvents.
                   self fixObsoleteReferences];

               add: [Smalltalk forgetDoIts.
                   DataStream initialize.
                   Behavior flushObsoleteSubclasses.
                   "The pointer to currentMethod is not realy needed
                   (anybody care to fix this) and often holds on to
                   obsolete bindings"
                   MethodChangeRecord
                       allInstancesDo: [:each | each noteNewMethod: nil].
                   Smalltalk garbageCollectMost];
                yourself.
   Utilities
       informUserDuring: [:bar | tasks
               do: [:block |
                   bar value: block printString.
                   [block value]
                       on: Error
                       do: [:error | Transcript show: error;
                                cr]]].
   SystemNavigation default obsoleteClasses isEmpty
       ifTrue: [SmalltalkImage current saveSession]
       ifFalse: [SystemNavigation default obsoleteClasses
               do: [:each |
                   self halt.
                   [PointerFinder on: each]
                       on: Error
                       do: [:error | Transcript show: error;
                                cr]]]! !

Edgar

Pedantry:
                   [block value]
                       on: Error
                       do: [:error | Transcript show: error;
                                cr]]].

is equivalent to

                   block
                       on: Error
                       do: [:error | Transcript show: error;
                                cr]]].
 
 



Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

keith1y
In reply to this post by Andreas.Raab

> Thanks, Edgar! That's a really useful script.
>
> Cheers,
>  - Andreas


This might help http://bugs.squeak.org/view.php?id=7244

Keith

Reply | Threaded
Open this post in threaded view
|

Re: Empty categories

Andreas.Raab
In reply to this post by Eliot Miranda-2
Eliot Miranda wrote:

> Pedantry:
>                    [block value]
>                        on: Error
>                        do: [:error | Transcript show: error;
>                                 cr]]].
>
> is equivalent to
>
>                    block
>                        on: Error
>                        do: [:error | Transcript show: error;
>                                 cr]]].

Since we're being pedantic, we should also make the point that the above
is only equivalent if the "block" argument truly is an instance of
BlockClosure. If you have reason to expect that it might be useful to
support something else (MessageSend etc) then it's not equivalent at
all. If in doubt, use the first form.

Cheers,
   - Andreas