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): ---------- 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