2014-05-25 0:11 GMT+02:00 Eliot Miranda <eliot.miranda@gmail.com>:
And by coincidence...


On Sat, May 24, 2014 at 3:05 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:



On Fri, May 23, 2014 at 11:12 PM, stepharo <stepharo@free.fr> wrote:

By all means use the change list for crash recovery, or even change sets. ��But unlike change sets, Monticello's updates provide support for any number of steps. ��Typically with a change set you have to manually reorder things.

Yes


��I've used change sets a lot in the past to pull off a number of "adventurous" system changes. ��But now I'm familiar with Monticello it feels like its by far the best way.
Yes but it depends which changes he is doing. Imagine a change that break MC.

If it is possible to make the change in the image it is possible to make it in MC. ��One can always order the changes into a set of package versions that can be loaded, even if each package modifies only one method. ��One has the post-load script as a place to change things after snapshot manipulation, etc. ��I don't believe that MC can't operate on itself. ��We do this constantly in Squeak trunk. ��We have yet to break MC such that it can't be updated.
��
Here is a case where MC has been broken (but please read down to the end):



Yep, I completely agree with what Eliot and David said.
I value the update-stream very much, and I think it's a mistake to abandon such a golden feature.
An image is not just made of code...

Even in case we just use it for coding, some code is too experimental to be shared, too tiny to be published (it means maintaining many feature branches) but too valuable to throw away.
For me, the best place for those is experiments is in image:
- Because I have the right tools to list/find/browse those experiments, I don't want to store them in a file somewhere then forget about them.
- Because I have the right tools to maintain those experiments up to date with trunk, I don't want them to rot somewhere on a hard disk.
- Because I don't need to deal with load order again and again (I'm often messing with Kernel things), the discipline for building a reloadable configuration for a bunch of small things is not sustainable and has no value as long as it's just for myself.

But as we can see, the update stream is not working magically.
One has to put his hands in those configurations from time to time.
Pharo is using a descendant of Squeak3.9 process rather than mcm, but the problem is more or less the same.
It takes time to do it right...
And I suspect that the official procedure aimed at making the process repeatable is bypassed sometimes.

Because Pharo users value the "throw and rebuild your image" paradigm, the upgrade just has to succeed once, and it does not really matters if the team cheated, as long as they deliver fast.
When the image will be truly rebuilt from scratch, this will be even less of a problem anyway.

I've been upset (and frustrated) many times when wanting to use Pharo update stream, but now I take it as it is, I can perfectly understand that it's not a priority.
My Pharo images are throwaway. Anyway, I experiment in Squeak.
��

---------- Forwarded message ----------
From:��Nicolas Cellier��<nicolas.cellier.aka.nice@gmail.com>
Date: Sat, May 24, 2014 at 3:06 PM
Subject: [squeak-dev] Re: What's up on build.squeak.org
To: The general-purpose Squeak developers list <squeak-dev@lists.squeakfoundation.org>


Ah, no, the build is still failing!
Since��http://build.squeak.org/job/SqueakTrunk/834/��it's another problem with:
MCClassDefinition>>createClass
I encountered this one while updating some of my old trunk images.
The definition changed in Monticello-cwp.589:
+ �� �� �� �� �� �� �� �� �� �� �� inEnvironment: (CurrentEnvironment signal ifNil: [superClass environment])
- �� �� �� �� �� �� �� �� �� �� �� inEnvironment: (EnvironmentRequest signal ifNil: [superClass environment])

But there is no EnvironmentRequest anymore when loading this definition, so we signal nil, and the load fails.
We would have expected this, it's just be renamed in:

Environments-cwp.47
Time: 22 March 2014, 7:53:17.666 pm
Rename��EnvironmentRequest��to CurrentEnvironment and use it to implement��Environment��class>>current.

To be safe, the rename should have been performed in two stages:
1) create the new class and migrate customers from the old to the new one.
2) remove the old one
It would thus have required two updates.mcm and not a single one
(MC lacks a semantic #rename: so it does not work like in-image-tools)
Unfortunately, update-cwp.48 did perform the two operations at once...

Curiously, if I take an artefact from build server and update, the upgrade is then processing fine... Don't ask why.
Since no one complained, I told to myself that it was me not following the standard process, I patched my images manually and restarted the upgrade.
But I now see that it's not just me, there is a CI machine too using Squeak trunk (anyone else???)

I have to cheat again with mcm surgery:
- publish an Environments-nice.47 that adds the CurrentEnvironment, but not removes EnvironmentRequest
- patch update-cwp.48 to point to Environments-nice.47 rather than Environments-cwp.47
That'll be in a few minutes...
----------End Forwarded message ----------

so the fix is.... package versions and updates. ��Yet another thing one can do is edit updates after the fact. ��Very powerful. ��So here is a case where a broken MC update is fixed after the fact. ��(and thank you Nicolas!)


2014-05-24 22:58 GMT+02:00 Nicolas Cellier��<nicolas.cellier.aka.nice@gmail.com>:


2014-05-24 22:36 GMT+02:00 Nicolas Cellier��<nicolas.cellier.aka.nice@gmail.com>:

Hi,
it seems that most of the builds are red for 2 months.
I checked the last artefact for squeak trunk:
http://build.squeak.org/job/SqueakTrunk/853/

It's still blocked with the [Warning signal: 'About to��serialize��an empty package.']
With this warning, a test never time out (I don't know why exactly, but it seems that theProcess monitored by the timeout watchdog is already suspended by the Warning)
As a result, the tests do never complete and are aborted after 20 minutes...

Chris has fixed the problem since, but it seems that the CI does not upload latest trunk.
Why?
It seems to be the same problem as the TestRunner: updating triggers the same [Warning signal: 'About to��serialize��an empty package.']
Ah Chris, it's irony that it's you who precisely keep on fighting modal UI ;)

Now the question: how do we escape from this situation?
Shall I cheat and modify the update that is blocking?


So I decided to cheat:
I brought update-eem.279 to the surgery block and reverted CommandLine-fbs.3 -> CommandLine-fbs.2
CommandLine-fbs.3 tried to be smart and workaround the Warning problem, but before it had a chance to load, it precisely triggered this Warning!!!
Since this update is also bringing Chris fix, let's defer CommandLine-fbs.3 to next update (eem-280) and cross fingers...



--
best,
Eliot