After filing in the patch Dan just posted on squeak-dev, I ran:
etoysRemovals _ Smalltalk reportClassAndMethodRemovalsFor: ((PackageInfo named: 'EToys') classes collect: [:each | each name]).
...
Hi, Cees -
Thanks for actually taking the trouble to try this out!
Just to complete the archaeological dig, check out SystemDictionary>>computeImageSegmentation ;-). It's out of date, but it shows how you can do a lot of different packaging experiments at once to save time.
While I haven't tried it, I think Daniel's Mudpie may help with determining effective root sets, after which my "differencing" scheme is pretty effective, as you discovered.
- Dan
Dan Ingalls wrote:
While I haven't tried it, I think Daniel's Mudpie may help with determining effective root sets, after which my "differencing" scheme is pretty effective, as you discovered.
Sorry I didn't reply earlier.
If you want to get *possible* root sets, load MudPie and then do: mma _ MultiModuleAnalyzer onCategoriesWithPrefix: ''. "initialize for analysis of all categories" mma packageGraph unreachedNodes
This gives you (after maybe a minute, probably less) all the individual categories whose classes are referenced by no other categories, therefore they are possible roots.
However, it is probably better to see all "bunches" of categories that don't have incoming references, though they have internal references. The following does that:
pdag _ GraphAnalyzer new convertToDAGOfStrongComponents: mma packageGraph. pdag unreachedNodes
This list contains lists of categories, such that each list can be used as a root for Dan's algorithm (assuming no impedance mismatch between him and me).
Two caveats: 1. This will include all the code that's already well-untangled, so either list would require filtering. 2. Of course these bunches are not maximal, that's what Dan's code does. In fact, in a way they are minimal, but that's a different story.
Daniel
Dan Ingalls wrote:
After filing in the patch Dan just posted on squeak-dev, I ran:
etoysRemovals _ Smalltalk reportClassAndMethodRemovalsFor: ((PackageInfo named: 'EToys') classes collect: [:each | each name]).
...
Hi, Cees -
Thanks for actually taking the trouble to try this out!
Just to complete the archaeological dig, check out SystemDictionary>>computeImageSegmentation ;-). It's out of date, but it shows how you can do a lot of different packaging experiments at once to save time.
While I haven't tried it, I think Daniel's Mudpie may help with determining effective root sets, after which my "differencing" scheme is pretty effective, as you discovered.
- Dan
packages@lists.squeakfoundation.org