[squeak-dev] Release candidate Squeak4.4-12320 ready

Bert Freudenberg bert at freudenbergs.de
Fri Dec 21 14:23:47 UTC 2012


On 2012-12-21, at 10:35, Frank Shearar <frank.shearar at gmail.com> wrote:

> On 20 December 2012 20:03, Colin Putney <colin at wiresong.com> wrote:
>> 
>> 
>> 
>> On Thu, Dec 20, 2012 at 6:05 AM, Frank Shearar <frank.shearar at gmail.com>
>> wrote:
>>> 
>>> * http://ftp.squeak.org/4.4/Squeak4.4-12320.tgz
>>> * http://ftp.squeak.org/4.4/Squeak4.4-12320.zip
>>> 
>>> This should fix the MC failing tests.

Minor point, but: IMHO there is no reason to waste disk space using two archive formats. The zip one is enough. 

Another point: The window opens at 560 at 286 so its bottom-right corner is at 1360 at 886 which might by off of some screens. I'd position it further up to the left, maybe at ((1024 at 768) - (800 at 600)) / 2 ==> 112 at 84

>> This doesn't solve the dirty package problem though
>> (http://lists.squeakfoundation.org/pipermail/squeak-dev/2012-December/167052.html).
>> 
>> I ran the following doIt in the above image:
>> 
>> 
>> | trunk dirty |
>> trunk := MCRepositoryGroup default repositories detect:
>> [:ea | ea description = 'http://source.squeak.org/trunk'].
>> 
>> dirty := Dictionary new.
>> MCWorkingCopy allManagers collect:
>> [:ea || changes |
>> changes := ea changesRelativeToRepository: trunk.
>> changes isEmpty ifFalse:
>> [dirty at: ea put: changes]].
>> ^ dirty
>> 
>> It takes a while, but it gives the following list of dirty packages:
>> 
>> Collections
>> FlexibleVocabularies
>> Graphics
>> Multilingual
>> SMLoader
>> ToolBuilder-Kernel
>> 
>> Some of these are harmless, but we shouldn't ship the image without fixing
>> at least Collections and ToolBuilder-Kernel.
> 
> I can confirm your list. How do we clean these though? For instance,
> if I manually remove our old friend WeakRegistry class >>
> #migrateOldRegistries I can't save my change because MC rightly thinks
> there's no difference between my (new, modified) code and trunk?
> 
> Is it completely crazy to - in this case at least - just remove the
> method in a do-it and then make sure the package isn't dirty by
> verifying with trunk?
> 
> WeakRegistry removeSelector: #migrateOldRegistries.
> "Some as yet undecided way of forcing a dirty/clean check"
> 
> frank


It's crazy, and there's a better way: just force-load the packages:

| trunk |
trunk := MCRepositoryGroup default repositories detect:
	[:repo | repo description = 'http://source.squeak.org/trunk'].
MCWorkingCopy allManagers
	do: [:wc |
		wc ancestors size = 1 ifFalse: [self error: 'Package must have single parent: ', wc packageName].
		wc modified: true. "make sure actual diff is performed"
		[(trunk versionWithInfo: wc ancestors first) load] on: Warning do: [:w | w resume]]
	displayingProgress: 'Cleaning packages'.

Since the updater loads the latest packages anyways, this could be merged into that step. I guess just disabling the #upgradeIsMerge preference before updating might be enough (although we would have to remove the line in updateFromRepositories: which enables it). But make sure to re-enable it afterwards: if it was unset in a user's image, she would lose her changes when updating.

In any case it needs to be verified by something similar to what Colin provided above, like:

| trunk |
trunk := MCRepositoryGroup default repositories detect:
	[:repo | repo description = 'http://source.squeak.org/trunk'].
dirty := Dictionary new.
MCWorkingCopy allManagers
	do: [:wc | | diff |
		diff := wc changesRelativeToRepository: trunk.
		wc modified: diff isEmpty not.
		wc modified ifTrue: 
			[dirty at: wc put: diff]]
	displayingProgress: 'Verifying packages'.
dirty ifNotEmpty: [self error: 'Dirty packages: ', dirty keys].

I just did both of these in the latest 4.4, the first did clean all packages, but the second still found a problem in Graphics (which I just committed a fix for). So really both should be part of release builder.

- Bert -




More information about the Squeak-dev mailing list